Once during an Amazon offsite, managers had resounding suggestions that all employees should be increasing communication with each other. To their surprise, Jeff Bezos stood up and announced, “No, communication is terrible!” Known as Bezos’ Two Pizza rule, his stance explains that teams shouldn’t be larger than what two pizzas can feed. Well, Microservices work pretty much the same way. It’s interesting to compare patterns between human’s predictable ‘wisdom’ and software’s ‘inanimate’ intelligence. Similar to humans, software Monoliths also work efficiently when split into smaller and simple components.
Microservices and Containers – Digital Explosion or just a Bubble Burst?
Martin Fowler said the now famous “You Must Be This Tall To Use Microservices”. He says that since Microservices needs application modernization, it calls for high Cloud Computing capabilities and a collaborative DevOps culture, something which not every organization can possess. Today, the Google App Engine provides efficient and affordable Cloud Solutions for Microservices.
Wix breaks the Microservice Jinx
Wix supported a million sites in 2008 with terabytes of data processing needs, starting out with a single-monolith approach. High data volume meant they couldn’t tolerate the downtime caused by poor code quality and by the interdependencies inside the monolith. So they adopted a Microservices approach. They followed a simple rule with huge success – Each Microservice’s responsibility should be expressible in just one clear sentence. This way, one team could manage several Microservices in the Architecture.
Today they have grown to be 200 Microservices strong, supporting 70 million sites and processing 2 petabytes of data every month. They run on various cloud services like AWS, Docker and Kubernetes. Be it cloud computing, collaborative DevOps culture, or Continuous Delivery, they have seen it all. This success story of just a 400 people strong, decade old startup shows that you needn’t be so tall, but just strong enough to share a Microservice Success Story.
Other popular Microservice adoptions include Amazon and WalMart which break the critical bubble created by Microservice Evangelists. Well, the bubble did form – it formed a huge monolithic bubble which (eventually has to) burst, but only to burst into smaller microservice bubbles.
Microservices’ role in Digital Transformation
Single Responsibility Principle – Decentralized Governance
Unix said, “Make each program do one thing well”. While Monolithic Software is One Big Program with many responsibilities, Microservices contain small single function modules within well-defined containers and interfaces. This is a simple, yet powerful process, allowing smaller teams to work on their own granular services. Since it is deployed independently, it avoids a conflict between the work of other developers and between User Experiences. The business is empowered with decentralized governance as it allows smaller teams to build and innovate.
Cloud Native Journey
- Each microservice, unlike monoliths, is an independent and autonomous process with no dependency on the underlying infrastructure. This drives businesses to embark on their cloud native journey.
- Microservices are not only equipped to handle a high server bandwidth, but also to handle sudden bursts of bandwidth requests. The services demanded can also be deployed in multiple servers, thus enhancing performance.
Loosely Coupled, yet Tight and Secure
- Loose coupling is basically minimizing the dependencies between two or more applications by making them independent. Unlike Monoliths, when the applications are loosely coupled, failure of one component does not affect the others, making it less prone to bugs.
- Security issues can be easily identified to the one application causing it, without needing to abort the other applications. Since these are standalone applications, they won’t be affected by the attack. Microservices are also simple single function programs, so the patch is effortless.
- Since Microservices are independent services, it leads to Rapid Release Cycles. It is easier to code, test, change code, release versions and deploy.
- System overloads, which can be the outcome of a part of the system being staggered, makes the whole application slow or unresponsive. When the software is broken down as independent applications, the unresponsive module can be worked upon and also be deployed in a dedicated server, which leads to faster processing times.
- Microservices are versatile enough to choose the language best suited for the functionality
- Microservices provides a seamless choice of programming language, framework and technology stack than a conventional monolith. So, Technology migration can be achieved in an incremental manner.
Containerization and Self Sustenance
- Containers are essentially lightweight virtual machines that completely isolates each module. When each application is containerized, It is self-sustained and hence is a big hit with companies. a Data-Dog report suggests that the average company quintuples its use of containers within the first nine months.
- It has everything needed to run like run time environment, system tools, libraries, code and settings. This means any team(s) can work on any Microservice(s) at any given time, simultaneously.
- But wait, this is just a start. It has more firepower like versatility, quick deployment, consistency and environment independency, and much more.
Containers Role in Digital Transformation
- Containers Speed applications to the market with its quicker release cycles through automation, which also lead to lesser resource allocation. The modernized application is already tested and is programmed to restart when a failure is detected. This is lesser testing and troubleshooting worries for the developers.
- Since the testing, configuration and troubleshooting is automated, resources can be focused towards DevOps and building application modernization.
Multiple Cloud Platforms
- Developers mostly use containers for cloud development and hence a versatile one will run with open APIs on all most cloud platforms like Docker, Microsoft Azure, AWS or Kubernetes and even in the company’s own cloud. So when an organization is looking for multiple cloud providers to expand bandwidth, containers is a way for its future.
- Legacy Modernization can give organizations the brand edge by providing increased efficiency, decreased complexity with lesser budgets. This is effortlessly implemented with Microservices and Containers.
- Microservices possesses a variety of features like flexibility, scalability and phased implementation, hence making it a popular approach for modernization.
- Containers provides solution equation of seamless running of software during environment migrations. They also empower software to leverage automation which enables better-distributed computing capabilities, remove dependencies, hence maximizing profits.
- Having said the above, it is important to understand that it’s your business context which will determine if Microservices is a good fit or not.
Computing history is marked by a set of seismic shifts and application modernization is a paradigm shift from the ‘Stumble Block’ Monoliths. While Microservices has earmarked an era in this history, Containers has been its hallmark, hence driving affable server management solutions. Together, they have made quicker, scalable, cross functional and independent software architectures. Containers and Microservices are an imperative CIOs and CTOs cannot do without, to scale the last mile of their Digital Transformation agendas. With evolved strategic priorities around Containers and Microservices, IT organizations can take their customers to unseen levels of growth and engagement.
Latest posts by Adithya Soundararajan (see all)
- Wishing A Merry Pre-Holiday Audit For Your eCommerce Platform - December 13, 2018
- Mastering Digital Transformation with Microservices and Containers - November 27, 2018
- Driving Retail Decisions With Data Analytics - November 13, 2018