Nowadays, software engineering field is moving so fast. Giga, Tera, Peta gigabytes of data are processed every day, connected devices and users are growing all around the world.
We need to satisfy this growth by making our applications more efficient and this efficiency starts by asking ourselves:
How to design a high-traffic app?
In the past, software architecture vision was completely different. Making a monolithic software, bundling all our components and just bring it up to production. Too many requests because of your post on HN? Need more resources to host these new visitors? Avoid failures that make them angry? Just scale it up! Configure a new server, redeploy your application and fingers crossed.
Plenty of apps you are using are built like that, actually, it still working today. At the era of cloud computing, where machines become more and more abstract, where serverless emerged as the next big buzzword our thoughts are not the same as before.
We need availability, resiliency, and scalability. Moreover, we need to improve time-to-market, reduce technical debt by decoupling as most as possible. Here, microservices enter the game. In other words, welcome this new kind of SOA implementation.
Martin Fowler wrote a great article if you don’t know the meaning of a microservice. He confronts monolithic and microservice architecture.
How to build a microservice? Follow the best practices according to the twelve-factor methodology.
Do not be afraid of switching to a microservice architecture, Nginx team explains to do it from a legacy project.
Create a High-Freedom, High-Responsibility Culture with Less Process
According to what Adrian Cockcroft learned from Netflix, your company and team culture and organization have a great impact on how you want to leverage microservices.
Implementing automation for your processes as much as possible let improve your time-to-market, to be a fast and responsive to your client needs.
Management has to be split, one manager per microservice taking care of the whole life cycle with its team and providing API for other teams.