Speaker: Michael Koster
DevOps: delivering value to customers. Challenges are barriers between stakeholders and the flow of value should be as smooth as possible.
- Developers- building software.
- IT Ops – delivering software.
- Business – reaping the benefits.
If an application goes down in production, fixing problems takes an average of 200 minutes. 3/4 of teams have adopted agile, mostly in development space and not in IT space. Agility doesn’t apply only to developers, everyone who is involved needs to be as agile. The general mindset is you never change a running system. Developer’s mindset is they want to evolve and innovate faster and faster. How do we bring these two world together? This is what DevOps all about.
DevOps in the early stages and many understand it differently. It’s Development and Operations collaborations. Faster and smaller releases. There are a lot of tools but those won’t fix all the issues.
The DevOps conversation is about people, process and tools that fit with your people and process. Focus on eliminating waste throughout the delivery. Do not start with tools. Tools with not magically fix everything.
The DevOps movement now is the Agile movement from 10 years ago. It’s cool and it’s talked about but nobody really knows what it is. How do you approach in implementing your own journey to DevOps? Microsoft started this journey 5 years ago by build the cloud services. In the cloud you have to be quick and agile and fix issues with little human interaction. Microsoft could not work with a traditional way by building an application in releasing in 3 years. Microsoft had to shift from this waterfall to more DevOps approach and Microsoft learned a lot and experienced a lot of failures. Through this journey Microsoft came up with these 7 habits:
- Flow of customer value
- Team autonomy and enterprise alignment
- Backlog refined with learning
- Evidence gathered in production
- Managed technical debt
- Production first mindset
- Infrastructure is a flexible resource
For these habits, DevOps practices have been developed hat are applied daily. Learn what’s happening in production and put it in backlog for the next iteration.
The Microsoft definition of DevOps is a converged lifecycle that includes development and operations. End to end process of planning, building and deploying an application.
This lifecycle has these 4 phases: plan, develop and test, release, monitor and learn.
It starts with an idea, create a plan how to turn this idea into reality. Strong agile planning tools for both development and operations.
An agile team needs to have a groomed backlog, a backlog that changes based on the priorities. The problem with agile has been scalability, in enterprise project multiple teams have to work together for a bigger project. Scaled agile framework tries to answer that, backlog items of individual teams but it can be rolled up into features and it can be monitored what the teams are doing in a feature. Everything is grouped into epics which have features which usually takes 6-12 months to develop.
Every agile tool has to give a scrum board. You don’t want to restrict how a team works, teams have to self organize. You must have a definition of done, it is individual on a team basis. The team has to express how they work on the toolset level.
A swimlane allows you to group your work anyway you want. Expedited swimlane needs to be attended to very urgently. Or you can have an ops swimlane for operations. How you organize your work affect the outcome of your project but you should stay flexible.
It would be great if the project tracking would be fully automated. Customers have asked for a solid reporting service for Team Services. Microsoft added a lightweight reporting solution with dashboards. Every team can have their own dashboard, configuring and customizing is easy. You can have as many dashboards as you want.
Customers have asked for extensibility and Microsoft built this into Team Services and Team Foundation Server. Many extensions in the Azure marketplace that can be installed in the Team project and every can use this extension. You can also build your own extensions.
Takeaway: Planning work requires agile tools for both development and operations.
Develop + Test
Next phase is when developers turn great ideas into features by writing code, creating unit tests, using version control, triggering a build, doing some build testing, deploying the build for manual testing. Microsoft provides a lot of tools for developers for these purposes.
When you want to get to a DevOps mindset, you have to make a lot of hard decisions. Microsoft redefined the role of a developer (they have to write tests) and that of a tester (they become developers) in the teams.
The developers’ pain of having to write tests turned into a tool. Developers created IntelliTest, automated engine that goes through your code and creates the unit tests for you. No tool is perfect but IntelliTest might help.
You can write code using Visual Studio or directly in the website. It is important that everything also works in the browser. If you want to have a cross-platform environment, it needs to be accessible on all platforms. Website integrated with Eclipse too. Apple doesn’t allow it for XCode.
After each checkin, a build has to be triggered and it must be assured that there are no errors. Continuous integration is the nirvana of DevOps and agility.
A new build system Build vNext is available. There are iOS, Android and web build definitions. It’s cross-platform. Customize your build workflow based on what you need. Build steps can be organized however you want and you can add new build steps from a gallery. You can integrate many tools seamlessly into the pipeline. Microsoft accepts that not everything that Microsoft offers might be suitable for you. The build steps are JSON files and you can build your own too. You can also use GitHub, SubVersion. Microsoft will not add SourceSafe.
One of the DevOps practices is continuous integration, build triggered with every checkin and test if build is successful. It will make your life more easier and your organization more agile.
Usually you don’t just push it to production. Nothing beats manual testing. You typically have a dedicated pre-production environment. Do meaningful load testing which is much easier now and it gives you insight into how many users your application can handle. Cloud load testing is a great example because you can scale up and down. You can then go ahead and fire up your application to your staging environment.
There is a release management solution in VSTS. Different release pipelines for different applications with release tasks and environments with different pre-production environment where you want to deploy and test. You can define who has to look at it before it can be pushed to production in the Approvals section.
You can have deployment tasks in your build tasks, if you don’t want to do release tasks. You can add load tests and configure it to be executed in the pipeline. All these tasks allow you whatever mechanism you want to do for your project.
This is called Continuous Delivery, a DevOps practice.
Amazon, Ebay,… do this multiple times a day, they just push a button and this all automated.
How to handle Dev/Test environment? Having physical test boxes is not the recommended way anymore. How can the cloud infrastructure help you? You can just add a task that spins up the VM in the cloud, you do the testing and you destroy it in the end.
Dev/Test Lab, a new Azure service to put restriction is place so each developer can spin up X VMs, between the given hours, can use only this set of VMs.
Monitor + Learn
Learn and understand how users use your app, how it reacts and quickly fix issues and bugs. Microsoft provides possibilities for both cloud and on-premises.
All the tools are cross-platforms. All the tools can be easily plugged in.