- Newest
- Most votes
- Most comments
Below are few good references to see as you start thinking on microservices in AWS. Actual implementation will of course depend on detailed requirements but below should give you good starting points. It gives good information around Compute, Storage & Databases, Networking, Messaging, Logging and Monitoring & DevOps.
- https://aws.amazon.com/microservices/
- Implementing Microservices on AWS - https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html
- Simplify access to multiple microservices with AWS AppSync and AWS Amplify - https://aws.amazon.com/blogs/mobile/appsync-microservices/
- AWS re:Invent 2021 - Application integration patterns for microservices - https://www.youtube.com/watch?v=ReRB_xEtEjY
- AWS re:Invent 2021 - Application integration patterns for microservices - https://www.youtube.com/watch?v=QhfuzEkN3Ck
Amplify provides full-stack application development & integration capabilities that includes both front end and backend support.
To consider a microservices architecture, it is best practice to separate front end application development from backend services. Typically backend services are designed and implemented in the forms of RESTFul APIs or GraphQL APIs, and it is recommended to implement those APIs so that they are reusable, i.e. not tied to one Amplify project. However, Amplify front end library provides support to use backend services/APIs in a convenient way including authentication.
Another benefit of keeping them separated is to have different developers/teams working on front end or backend, as long as the API interface is designed and agreed upon by bother developers.
In a summary, you may consider have Amplify project(s) focusing on front end application development that includes dependency and integration with backend microservices which are separate project or code repo.
Hi, Congratulations and all the best for your start on AWS.
You can of course start with multiple Amplify repos.
Ask yourselves some of these Qs:
- Do you have multiple front ends as well? --> perhaps you may like to use 1 project per front end
- Will your backend APIs be used for integrating with other businesses or third parties rather than only your own UX? --> if yes you may want to build your APIs independently of your UX.
- Will you be layering your APIS? so UX --> GraphQL --> REST --> DB. If you have other backend integration this layering will allow you to build your backend to be a standalone and the UX + GraphQL components can sit in Amplify.
Answers to these will help you finalise your project structure.
Even if you do decide to go with multiple Amplify proects, the first thing that I would suggest you do is look into mono repos, especially if you have a small team and the number of services is going to be greater than the number of developers in your team. https://docs.aws.amazon.com/amplify/latest/userguide/monorepo-configuration.html
Of course also look at:
- https://aws.amazon.com/microservices/
- Implementing Microservices on AWS: https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html
Amplify ties together a lot of services that you may choose to use independently. For that
Read up on Cloud foundations, even though you are just getting started setting up robust foundations will only help in the long term and will aid agility. You may consider using AWS Control Tower, AWS Organisations & multiple accounts. https://docs.aws.amazon.com/whitepapers/latest/establishing-your-cloud-foundation-on-aws/welcome.html
As far as login is concerned consider using AWS Cognito User pools so that credentials may not be saved in your database (saving you a lot of compliance headache and help move in the direction of oAuth) https://aws.amazon.com/cognito/
Irrespective of whether you use EC2 or Lambdas to write your micro-services you will need to front your micro-services with a facade. Here you have a choice of using Amazon API Gateway and Application load balancer. https://aws.amazon.com/elasticloadbalancing/application-load-balancer/ https://aws.amazon.com/api-gateway/
Both of which provide excellent integration with
- Amazon Certificate Manager (for encryption)
- Amazon Cognito (for auth)
Both of these services come with their own benefit which will guide your choice.
**Side note: ** I would also recommend microservices.io where you will find truck load of patterns --> https://microservices.io/index.html Which programming language(s) are you planning to use?
Happy to chat more on this.
Relevant content
- Accepted Answerasked 2 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated a year ago
- AWS OFFICIALUpdated 8 months ago
- AWS OFFICIALUpdated 2 years ago