Deploying Microservices on AWS
If you are wondering which services you can use for deploying microservices on Amazon Web Services (AWS), check out the recommendations below.
Amazon Elastic Container Service/AWS Fargate
Microservices does not translate to containers. You could deploy an entire application with microservices using pure virtual machines or a physical host. But keeping in mind how containers work and what they aim to do, you could also deploy every service as a set of containers that can communicate with each other, so going live with containers seems like a natural choice.
With Amazon Elastic Container Service (Amazon ECS), you can define your cluster with load balancers, and can even configure how to scale based on metrics. If you don’t want to worry about the provisioning (type of instances, managing the cluster, deciding when to scale), you should definitely go with AWS Fargate, which will take care of the provisioning for you. Amazon ECS integrates with many other services, like Amazon CloudWatch, IAM, and AWS Elastic Container Registry.
Amazon Elastic Container Service for Kubernetes
Amazon Elastic Container Service for Kubernetes (Amazon EKS) is the “Kubernetes as a service” alternative on AWS. If Amazon ECS does not cover all your needs, then, most likely, Amazon EKS will. And if your deployment structure requires the Kubernetes engine, you’re covered. Amazon EKS allows you to not only run containers that can represent microservices, but also to group them via pods and services.
It also has many integrations with other AWS services. For instance, you can connect AWS App Mesh to your Amazon EKS cluster for monitoring and communication control (you can do this with Amazon ECS as well).
If your business needs don’t require you to have your application running all the time, you can define your application as a set of serverless functions, so that by grouping them, they can be seen as an independent service. AWS Lambda allows you to deploy functions that are run on demand when an event happens. If you attach those functions to HTTP calls, you can create a pretty decent API that could cover your business requirements. What’s great about Lambda is that AWS only charges for execution time. Also, Lambda allows you to integrate with AWS API Gateway, so you can monitor and secure your APIs as needed.
Microservices architecture is not a silver bullet. However, when it comes to scaling, it provides more benefits than a monolithic approach. If you are considering switching your monolithic to microservices, make sure the decision is based on a team consensus, and not just your desire to follow a trend. Moving to a microservices approach means increasing the complexity of the architecture, and it will require more DevOps expertise; be aware of that. Once you’ve started the migration, begin small, validate the benefits in the early stages, and then continue splitting and specializing your services.
Finally, moving to a microservices approach will require a mindset change, not only in your team, but in the whole company. Be ready for dealing with data redundancy, CI/CD and monitoring challenges, deployment dependencies, and more.
If you still aren’t sure about this architecture, we at Media Temple have talented people who can help you assess whether or not you should switch; and if so, determine the best way of doing it. Once you’ve nailed it, you will scale happily!
Click here to go back to Part 2 of this series.
As an AWS Advanced Consulting Partner, Media Temple can help you get the most from your AWS cloud. Reach out anytime.