The introduction of the Toyota Production System (TPS) triggered a revolution with an impact well beyond the automobile industry. Today, these principles are popular under the term lean manufacturing and led to agile software development.
The common goals of these philosophies are increasing the efficiency, the quality, and the reduction of time to market with clear advantages: Businesses can concentrate more of their resources to core business processes, they are able to develop better products and increase customer satisfaction. Leading tech companies like Amazon, Netflix, and Uber already recognize and exploit this potential.
Microservices
Microservices are a fundamental technological concept that has become increasingly popular over the last two years. It is an architectural pattern in which applications are composed of small, independent services that communicate with each other. Compared to monolithic applications they have significant advantages:
Development can be split up into smaller teams that work on individual services independently. This reduces management overhead and shortens release cycles. Due to less complex components programmer productivity is increased also.
Services communicate via standardized interfaces and protocols. Teams are therefore independent and only need to synchronize when changes in components’ interfaces are needed.
Another benefit of independent services is that each component can be implemented with an appropriate technology stack. CPU intensive services could be written in fast, compiled languages while dynamic scripting languages are the default choice for administrative tasks.
Scalability of microservice architectures is better in comparison to monolithic applications - they can easily be adapted to the prevailing system load. This also enables high-availability setups by running multiple instances of critical services.
Technical Aspects
To leverage the benefits of microservices and an agile approach in your organization, you need to meet some organizational and technical requirements. One very important technical aspect is a high degree of automation around the development and operation of an application. This includes infrastructure as code, standardized development and testing environments with continuous integration and continuous delivery. To coordinate the microservices that make up an application, you need to employ service discovery and orchestration technologies.
A high degree of automation eliminates time consuming and error prone manual processes. The freed up resources can be put to work directly in the value chain.