Created by: Delster Miguel Tanedo 5min read
Dec 5, 2022
A lot of this happened between 2013 and today which container adoption rose dramatically. We will discuss some of the drivers that helped pushed container and container orchestration software to companies. Some of these are the following:
- Developer and Operations team deployment friction
- Rise of Microservice Architecture over Monolithic
- DevOps Culture
It is a tale as old as time which developers & operations team are having a hard time shipping application that works properly in any environment.
Developer team argue that their code is working properly in their development environment or machine. Operations team gets the artifacts from the development environment and surprise surprise, it is not working anymore.
Virtualization technologies were created to reduce friction, but the battle continues to rage on.
Before microservice architecture was popular, monolithic architecture is the go-to architecture pre-2013. A lot of people may have nostalgia of the LAMP stack (Linux, Apache, MySQL, PHP/Perl/Python) which is one of the quickest way to deploy applications in that era.
Monolithic applications reside in single codebase and is designed to be self-contained. Multiple components are combined into a large application. They should not be confused with the “monorepo” where you develop multiple projects in the same repository.
|Simple to develop over microservice architecture||It can grow over time; making it harder to maintain.|
|Easier to deploy since only one artifact is used||Needs to redeploy the whole application instead of a module.|
|Network latency problems are minimal in comparison to microservice||Horizontal scaling in monolithic applications is inefficient.|
Microservice architecture is the style that breaks down an application into a collection of services with the following characteristics:
- Highly maintainable and testable
- Loosely coupled
- Independently deployable
- Built around business capabilities
Big bang releases (monoliths) are rarer because business today stress the importance of their product’s time to market and avoids the usual problems of a large release: slow, high degree of complexity and difficult to reproduce.
|Relatively smaller footprint versus monolithic architecture||Much more complex that monolithic architecture.|
|Services are independent of each other making scaling much easier||Network latency and issues are much more prevalent.|
|Different technologies can be used for each service||Debugging is distributed across multiple services.|
DevOps is the desired fusion of Development (“Dev”) and Operations (”Ops”) into one single entity. They are no longer “siloed” and helped bridge the communication gap between the two entities. It is a culture that makes an organization deliver applications and services at a high velocity.
Microservice architecture break down services into smaller, more digestible parts which in turn can be divided to multiple groups. Development teams can tackle these services as separate entities; streamlining development, testing and deployment.
Container technology complements the DevOps way and microservice architecture by packaging each service as an image which further reduces the complexity of deployment.