In my last blog post, I introduced the backbone of PureCloud, Amazon Web Services (AWS), which included some background along with a few of the benefits of using the AWS backbone. In this post, I’d like to take a closer look at the PureCloud microservices architecture, which reside in the AWS backbone.
First of all, lets define what microservices is. According to Wikipedia, microservices is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small building blocks, highly decoupled and focused on doing a small task, facilitating a modular approach to system-building.
In PureCloud, there are over 120 microservices (and growing)! Examples of PureCloud microservices include things like login, chat, directory retrievals, voice mail retrievals, document uploads etc. Due to the modularity of microservices, each microservices instance is essentially only worried about itself and, in fact, may have multiple versions of itself. This means that if one service goes down, it won’t typically affect other services.
Each microservice is actually deployed on its own virtual machine, called an Amazon Machine Image (AMI). Anytime there are changes, such as an update, fix or patch made to a particular microservice, that microservice is actually deployed on a new AMI. Old AMI’s end up going away, replaced by the new ones. Over time, the entire underlying infrastructure can change unbeknownst to the users!
An Auto Scaling Group (ASG) is a group designed to automatically launch or terminate computing resource instances based on user-defined policies, schedules, and health checks. As you might guess, each set of microservices reside in their own ASG. Additional AMI’s can be added to these ASG’s on an as needed basis. Traffic is then directed to each AMI in equal fashion by what’s called an Elastic Load Balancer (ELB). Some of the traffic may end up actually going to a different ASG, where the aforementioned new AMI versions reside.
Keeping the terminology straight can be a bit daunting, but once you’ve had a chance to ponder it, you can see the implications of such an architecture on scaling quickly and providing resiliency. Code can be deployed fast, known as a continuous delivery methodology.
To summarize, here are several benefits of microservices:
- Loosely coupled
- Horizontal scale (more servers)
- No downtime upgrades
- Multiple ASG’s and zones
I hope this post was helpful! Please contact us if you have questions or would like more information about PureCloud.