DevOps Deployment on AWS for Staging and Production
Budget: $1,999 – $2,000 SGD
This proposal is to define the tasks that we need to host our applications in Amazon Cloud and automate deployments and maintenance. All the individual applications will be hosted in Linux docker containers to save the maintenance effort and make sure the high availability. And all the deployments will be automated to speed up the integration of features and bug fixes to production and testing environments. Also, some of the Amazon services should be used to ensure the security of the system.
Projects to be deployed
1. Web Port
a. Technologies – Angular 11, docker
2. Identity (MVC web application)
a. Technologies – ASP.Net Core 3, .Net Framework 5, docker
3. Web API
a. Technologies - ASP.Net Core 3, .Net Framework 5, docker
4. Communication Web API
a. Technologies – ASP.Net Core 3, .Net Framework 5, docker
5. Action Processor Console Application
a. Technologies – ASP.Net Core 3, docker
6. Provisioning Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
7. Service Activating Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
8. Plan Changer Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
9. Terminal Deactivating Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
Databases
1. Core DB – Postgres
2. Communication DB – Postgres
Other Instances
1. Rabbit MQ (using Amazon MQ broker)
2. S3 bucket – to store portal images
Deployment details
1. Code repos are in AWS Code Commit.
2. Identity, Core API and Communication API are in same repo
3. Action Processor is a separate project and repo
4. All the lambda functions are separate projects and repos
5. Need to create release pipeline for APIs, Action Processor, and lambda functions
a. There should be 2 environments: staging and production
b. For the production environments, there should be auto resource scaling (No need for staging).
c. We need RDS instance to create 3 Postgres DBs (each environment).
d. We should have 2 RabbitMQ Amazon MQ brokers (for staging and production)
e. We are using DbUp (https://dbup.readthedocs.io/en/latest/) console applications to execute and maintain db updates for each and individual microservice. Core Communication APIs are having individual DbUp console applications. So, we need to run these applications as the first step of deployment pipeline. If these applications fail, then we need to abort the pipeline.
6. Need to schedule to stop the staging environment at night-time.
7. Should be able to connect to 3rd party systems from all the hosted applications
Projects to be deployed
1. Web Port
a. Technologies – Angular 11, docker
2. Identity (MVC web application)
a. Technologies – ASP.Net Core 3, .Net Framework 5, docker
3. Web API
a. Technologies - ASP.Net Core 3, .Net Framework 5, docker
4. Communication Web API
a. Technologies – ASP.Net Core 3, .Net Framework 5, docker
5. Action Processor Console Application
a. Technologies – ASP.Net Core 3, docker
6. Provisioning Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
7. Service Activating Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
8. Plan Changer Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
9. Terminal Deactivating Scheduler Lambda Function
a. Technologies - Amazon Lambda, ASP.Net Core 3, .Net Framework 5
Databases
1. Core DB – Postgres
2. Communication DB – Postgres
Other Instances
1. Rabbit MQ (using Amazon MQ broker)
2. S3 bucket – to store portal images
Deployment details
1. Code repos are in AWS Code Commit.
2. Identity, Core API and Communication API are in same repo
3. Action Processor is a separate project and repo
4. All the lambda functions are separate projects and repos
5. Need to create release pipeline for APIs, Action Processor, and lambda functions
a. There should be 2 environments: staging and production
b. For the production environments, there should be auto resource scaling (No need for staging).
c. We need RDS instance to create 3 Postgres DBs (each environment).
d. We should have 2 RabbitMQ Amazon MQ brokers (for staging and production)
e. We are using DbUp (https://dbup.readthedocs.io/en/latest/) console applications to execute and maintain db updates for each and individual microservice. Core Communication APIs are having individual DbUp console applications. So, we need to run these applications as the first step of deployment pipeline. If these applications fail, then we need to abort the pipeline.
6. Need to schedule to stop the staging environment at night-time.
7. Should be able to connect to 3rd party systems from all the hosted applications