DevOps as Microservices Readiness
Are you ready for moving Microservices? A lot of our customers want to move Microservices. Before moving Microservices, you need to check if you are ready for Microservices. When I talk, hack with my customers. I feel a lot of teams are not ready for Microservices, yet.
Don't worry about that. I'll explain how to get readiness for Microservices.
On this article, I'd like to clarify the readiness of Microservices. Especially DevOps element. How to prepare for it.
I hope you enjoy this article.
1. Why is Microservices Readiness important?
If you dive into the Microservices world, you need to handle an ecosystem of small services rather than single.
Unless you don't have enough automation and development culture, you will be overwhelmed by a lot of manual process and procedure.
Architecture decision is about a trade-off. How can you manage a lot of small services without these?
In short, he said Microservice Prerequisite is Rapid provisioning, which is automation for server provisioning. Basic monitoring, unless this, it is tough to detect live site issue among a bunch of microservices.
Rapid application deployment is automation for deployment.
DevOps culture supports it includes organization transformation. These prerequisites are all related DevOps practices.
2. How to make sure if you are ready for Microservices?
On the article, Martin said, "a DeploymentPipeline that can execute in no more than a couple of hours." This is a good KPI for Microservices readiness. If you want to acheve deploy in a couple of hours, you also need an organization transformation. Lead time is a good KPI for DevOps as the first step.
See The Three Ways: The Principles Underpinning DevOps .
3. DevOps as Microservices Readiness
You can cover the Microservices Prerequisite to learn DevOps. Let's start with DevOps definition.Unfortunately, DevOps doesn't have the official definition. Microsoft uses Donovan Brown's one.
DevOps has three elements. People, which means mindset and organization change, Process, which means agile process, and product, which means technologies. I recommend you to learn some of DevOps practices. You don't need to cover very DevOps practices for Microservices. I show you the mandatory practices for Microservices. If you have done these practices, you will get "a couple of hours" deployment lead time technically.
I add a link to the Microservice Prerequisite on the DevOps practices. You don't need to implement every practices for Microservices Readiness. You just implement some practices which are required by the prerequisite. We call these practices as DevOps Fundamentals. Once you implement the fundamentals, your team can achieve "deploy in a couple of hours" lead time. a.k.a. 10-deploys-per-day.
You can see the video about the fundamentals of DevOps.
Introduction to DevOps - DevOps Fundamentals
4. How to be ready for Microservices
I share with you about several steps for getting ready for Microservices.
4.1. Value Stream Mapping
If your lead time for deployment is longer than 2 hours, I recommend having a Value Stream Mapping session.
Value Stream Mapping is a lean-management method for analyzing the current state and designing a future state for series of event that are needed to deliver a product or service. It helps to identify the problems in the process and reduce the lead time.
Fig1. Value Stream Mapping
Using Value Stream Mapping, you can find the obstacle of the lead time. You can easily identify the problem of your process of software development. You can set the goal of improvement using this method.
One customer shortens the lead time from 13 days to 2 days in a couple of months. Another customer from 8.5 months to 2 or 3 times per a week. I recommend as the start of DevOps as Readiness for Microservices.
In some countries, their culture might prevent to move Agile / DevOps. Then you can refer this article.
How to Successfully Install Agile/DevOps in Asia
4.2. Agile Development with TDD/BDD
I have a lot of customers who want to move on Microservices. However, some of them are still in Waterfall. Let's move on Agile if you want to shorten the lead time. Some of them have already adopted agile development. However, a lot of company don't have enough automated unit testing.
Automated unit testing is critical for iterative development. Unless it, how you can adopt change without fear?
Which means you need to do manual regression testing for every interaction.
Also, if you don't have enough unit testing, a lot of DevOps practices means nothing. For example,
The prerequisite of Continuous Integration, Continuous Deployment, and Release Management is Automated unit testing.
The easiest way to get enough unit testing is to learn Test Driven Development(TDD) or Behavior Driven Development.
This is the survey of VersionOne 10th Annual State of Agile Report.
It says only 63% project using Unit testing and just 33% for Test-Driven development. In my experience, a lot of companies still struggling to write unit testing. I recommend starting with this if your team can't do it. One your team have this habit; it makes your team easy to implement DevOps practices.
Also, you can learn more about Automated Testing in Channel 9 videos.
Automated Testing - DevOps Fundamentals
4.3. Enabling mandatory DevOps practices for Microservices readiness
Now you are ready for implementing DevOps practices. According to the Value Stream Mapping result,
Let's understand and implement DevOps practices using your favorite technologies. Microsoft has nice videos to learn DevOps fundamental practices. You can learn the DevOps practices by watching the video, and
also you can see the actual implementation of DevOps practices.
4.3.1. Infrastructure as Code / Configuration Management
Infrastructure as Code - DevOps Fundamentals
Configration Management - DevOps Fundamentals
4.3.2. Continuous Integration
Continuous Integration - DevOps Fundamentals
4.3.3. Continuous Deployment / Release Management
Continuous Deployment and Release Management - DevOps Fundamentals
4.3.5. Application Performance Monitoring and Availability Monitoring
Application Performance Monitoring and Availability Monitoring - DevOps Fundamentals
When you understand the problems of your development process and DevOps practices, let's implement it. Book five days for your team's hackfest. Hackfest is some kind of hackathon which attacks actual production problem. Focus on implementing these DevOps practices in your environment. I always help my customer having hackfest. It causes big progress every time!
You can find a lot of VSM and hackfest case studies on this site. It is fun and valuable! Let's hack it and enjoy!
4.5. Feature team
Not only the DevOps practices, but I also recommend transforming into Feature team. Feature team increase productivity, enable us to attach complex problem, and bring the team fun! The self-organizing team who collaborate toward the same outcome is vital for DevOps culture. Let's try this.
In the past, we had three distinct roles on what we call “feature teams”: program managers, developers, and testers. We wanted to reduce delays in handoffs between developers and testers and focus on quality for all software created, so we combined the traditional developer and tester roles into one discipline: software engineers. Software engineers are now responsible for every aspect of making their features come to life and performing well in production.
[video width="1280" height="720" mp4="https://msdnshared.blob.core.windows.net/media/2017/01/ORG_CHART_Web.mp4"][/video]
Fig3. Feature Team
You can refer this site.
If you already implement these practices, you can move on Microservices. If not, don't worry, just learn about DevOps and implement DevOps fundamental practices!
If you want to have hands on experience, Microsoft has several beautiful DevOps HoL.
For OSS (non-Microsoft technologies)
Also, you can find a lot of HoLs on GitHub Repo.
For Microsoft technologies
Also, you can find a lot of HoLs on GitHub Repo as well.
I hope you enjoy the transformation toward Microservices!