Microservices for Scalability (Keynote Presentation)
Wilhelm Hasselbring · International Conference on Performance Engineering · 2016
Microservice architectures provide small services that may be deployed and scaled independently of each other, and may employ different middleware stacks for their implementation. Each microservice runs in its own process and communicates with lightweight mechanisms, typically via REST over HTTP. Microservice architectures emphasize transaction-less coordination between services, with explicit allowance of eventual consistency. Polyglott persistence in this context means that the individual microservices may employ multiple data storage technologies. Microservice architectures are cloud native allowing for automated and rapid elasticity. Fault-tolerance mechanisms achieve that failures of individual mircroservices do not affect other services thanks to container isolation. Since services can fail at any time, it is important to be able to detect the failures quickly and, if possible, automatically restore services. Essential for success in such a setting are advanced monitoring techniques. In this presentation, I will discuss the effects of microservice architectures on scalability and illustrate these effects on a large ecommerce shop. Automation is essential for enabling DevOps pipelines allowing for continuous delivery of microservices. Besides scalability of a microservice-based system, I will discuss scalability of developing such systems.