Application Development with Microservices in the DevOps Age
Does anyone even remember when companies developed an entire product, tested it, fixed it, and then shipped it? The entire process would take months, even years, before a functioning product made it to the customer. Before the product hit the market, neither did the potential customers know what it held for them and neither did the product owners know if it would hit or miss the mark.
Today, product users expect to be a part of the development process. They want to contribute their insights to develop a product that matches their ongoing needs. The need is for continuous innovation and improvements. The need is for DevOps!
DevOps combines technology and cultural philosophies to deliver products and services quickly. It is a continuous process of developing, testing, deploying, failing, and fixing applications to achieve market-fit. Jez Humble, one of the leading voices of DevOps sums it up “DevOps is not a goal, but a never-ending process of continual improvement.”
Today, DevOps is not just for a handful of large enterprises. According to Statista, the number of companies adopting DevOps went up by 17% in 2018.
A quick look at what has made DevOps popular?
Apart from the continuous innovations and improvements, DevOps also helps in:
- Improving customer satisfaction: With a DevOps mindset, companies use advanced methods to identify issues and fix them real-time before the customer is impacted. There is also scope to improve the product on-the-go driven by frequent suggestions and feedback from customers. Continuous improvement in quality leads to customer delight. Take Rabobank of Netherlands, for example. This large financial institution has over 60,000 employees and hundreds of customer-facing applications. As the deployments were manual, the failure rate was over 20%, and they received many complaints about delays. When they moved to DevOps, they were able to deploy applications 30x more frequently with a lead time that was 8,000 times faster than their peers.
- Change in organizational culture: DevOps has played a significant role in breaking silos and boosting the collaborative culture in companies. In an agile environment, working in silos can slow down the process of developing, testing, and releasing the product. A DevOps team will be able to collaborate better and ramp up the process of developing, testing, and troubleshooting the product.
- A decrease in failure rates: According to the State of DevOps report, high-performing DevOps organizations have seen a reduction of failure rates of 3x, thanks to their ability to find and fix errors early in the cycle.
- Higher productivity: DevOps organizations can deploy products 200x more frequently than a non-DevOps organization, leading to happier and highly motivated teams. Take Microsoft’s Bing, for example. It has moved developers to a DevOps environment with the idea of continuous delivery and innovation deeply ingrained within their processes. The result? Bing deploys thousands of services 20 times a week and pushes out 4000 individual changes every week. The continuous effort by the team to deliver has made Bing the second largest search engine in the world.
While adopting a DevOps culture is essential for a company to thrive, it is also crucial that they have the right architecture and systems in place to complement their principle of continuous delivery and innovation. That’s where microservices is now playing a massive role.
Micro-services and Their Role in DevOps Organization:
For a long time, companies relied on a monolithic architecture to build their application. As monolithic applications are built as a single unit, even a small change in a single element made it necessary to build a completely new version of the application.
With more and more companies moving towards DevOps, such a monolithic architecture makes it difficult to implement changes rapidly. The need for greater agility gave rise to a new type of architecture -enter microservices.
With Microservices, an application is built on small, independent components that are independently deployable. Although independent, these components communicate with each other via RESTful APIs. So, even if a single piece of code has to be changed in a single element, the developer does not have to build a new version of the whole product. They can simply make the changes to the individual components without affecting the entire application, making the deployment efficient and faster.
For companies that have adopted the DevOps culture, developing applications with microservices has several benefits that include:
- Easy rectification of errors: When a component fails the test or requires changes, it is easy to isolate and fix. This makes it easier for companies to fix errors quickly without affecting the users of other services.
- Better collaboration: Unlike a monolithic architecture where the different teams focus only on specific functions such as UX, UI, server, etc, a microservices architecture encourages a cross-functional way of working.
- Decentralized governance: Monolithic architecture uses a centralized database, while microservices use a decentralized method of governance, wherein each service manages its database. This makes it easier for developers to produce tools that also can be used by others to solve specific issues.
A key trend accelerating the adoption of Microservices in such scenarios is Containerization. Containerization allows code for specific elements to be carved out, packaged with all the relevant dependencies, and then run on any infrastructure. These applications can be deployed faster and can be made secure. The applications are extremely portable and adaptable to run on different environments.
Companies like Amazon and Netflix have shifted to microservices to scale their business and improve customer satisfaction.
Product companies aiming to become customer-centric and delight with continuous improvement in the product may find it essential to adopt a DevOps mindset married to a transition to the microservices architecture.
Of course, it will take some time to transition product development. Teething problems are bound to arise, including duplication of efforts due to the distributed deployment system. However, given the larger picture and the potential benefits, it’s a wise move for product companies to make.