I recently helped client build Architecture in AWS . They had following requirements.
- Migrate existing applications (Java/.NET Core) to AWS with minimum friction.
- Ability to run legacy and cloud native applications.
- Migrate existing MySQL DB.
- Support Microservices Architecture.
- Secure and scalable .
- Ability to archive PDF docs.
- DevOps pipeline
- Click stream analysis.
- Team has limited infra capability.
The Architecture is very self-explanatory , however I would like to discuss important points.
Fargate
Fargate is ECS’ serverless offering where you don’t have to manage servers. You simply package (containerize) your application/APIs and run them as Task (container) inside a cluster. AWS is responsible for underline infrastructure, updates, scaling and patching so you only focus on your business applications. Fargate makes it very easy to run the existing applications in cloud and also it’s simpler to introduce new services. You can run legacy and new services side by side.
VPC
Virtual Private Cloud is isolated cloud space for our services. I have put all the Fargate services , DB and rest of application services in Private Subnet and they can only be accessed via network Load Balancer. This makes them more secure since there are no direct public access to these services. The network load balancer itself is in private subnet and can only be reached via API gateway. So only public end point is API gateway.
Database
Amazon Aurora is a MySQL compatible relational database built for the cloud. Amazon Aurora provides security, availability, and reliability of commercial databases at lower cost than traditional databases. Amazon Aurora is fully managed DB service, which automates time-consuming administration tasks like hardware provisioning, database setup, patching, and backups. You get out of box point-in-time recovery, continuous backup, and replication across three Availability Zones (AZs).
User Click Stream Analysis
Learning user behavior and patterns is key to serve customers better in future. Due to chatty nature, user click service can add additional load on existing application/API so in our architecture . I am keeping this service separate from the rest of the application. Usage pattern and click data from web frontend can be ingested directly using Amazon API Gateway.
Leveraging cloud native technologies like Amazon Kinesis and AWS Lambda to process and save the data and they can scale massively without overhead of server maintenance. Amazon Kinesis is data collection and processing service. These AWS services can integrate with AWS Machine learning capabilities to get more information out of click stream.
Continuous Integration and Deployment (CI/CD)
AWS code pipeline provide you feature for end to end build and release. Using pipeline you can build the Docker Image that can be pushed to ECR and from there image can be deployed to Fargate.
Note: The Fargate launch type is not currently supported for Windows containers.
What an awesome post ! It is possible to get the CloudFromation code to deploy it ? Specially the one related with DevOps with Fargate and ECS
Excellent, very helpfull
Great help for all AWS Architact!! Salute to you!!
Very Well Explained, Thanks for sharing.
My company I worked before just uses openstack cloud system then I couldn’t get experiences that improved cloud services as like AWS. Now I have to make my companies web service but it was hard to architecting architecture but this post is very helpful for me. Thank you.