AWS Proton

AWS Proton is the first fully managed software deployed service for container and Serverless applications. Cloud Platform teams can use AWS Proton to connect and coordinate all the different tools needed for infrastructure provisioning, code deployments, monitoring, and updates. As enterprises start deploying application using Micro-service architecture, with hundreds of small services , maintaining and managing these services is getting very complex. AWS proton will help the platform team and developers to reduce the complexity of managing these architectures by providing the tools and setting up standards to deploy these kind of applications.

How AWS Proton works
AWS PROTON ARCHITECTURE

AWS Proton for Platform & Developer teams

As an administrator, you or members of your platform team, create environment templates and service templates. The environment template defines shared infrastructure used by multiple applications or resources. The service template defines the type of infrastructure that’s needed to deploy and maintain a single application or Microservices into an environment. An AWS Proton service is an instantiation of a service template, which normally includes several service instances and a pipeline. An AWS Proton service instance is an instantiation of a service template in a specific environment. You or others in your team can specify which environment templates are compatible with a given service template. For more information about templates, see AWS Proton templates.

The following diagram is a visualization of the main AWS Proton concepts discussed in the preceding paragraph. It also offers a high-level overview of what constitutes a simple AWS Proton workflow.


                A diagram that describes the main AWS Proton concepts discussed in the preceding paragraph. It also offers a high-level overview of
                    what constitutes a simple AWS Proton workflow divided into the following six steps.

 As an Administrator, you create and register an Environment Template with AWS Proton, which defines the shared resources.

 AWS Proton deploys one or more Environments based on an Environment Template that you created.

 As an Administrator, you create and register a Service Template with AWS Proton, which defines the related infrastructure, monitoring, and CI/CD resources as well as compatible Environment Templates.

 As a Developer, you select a registered Service Template and provide a link to your Source code repository.

 AWS Proton deploys the Service with a CI/CD Pipeline for your Service instances.

 AWS Proton deploys and manages the Service and the Service Instances that are running the Source code as was defined in the selected Service Template. A Service Instance is an instantiation of the selected Service Template in an Environment for a single stage of a Pipeline (for example Prod).

AWS PROTON DEMO

In this demo, I will be showing you how to deploy simple web application that allows a user to send a tweet. You can access the code here https://github.com/ajmalbaba/linux_tweet_app

We will be using the AWS sample templates for an Amazon ECS load-balanced service running on AWS Fargate.The environment template contains an ECS Cluster and a VPC with two public subnets. The service template contains all the resources required to create an ECS Fargate service behind a load balancer in that environment, as well as sample specs for creating Proton Environments and Services using the templates. You can access all these templates here

https://github.com/aws-samples/aws-proton-sample-templates/tree/main/loadbalanced-fargate-svc

Pre-Requisites

  1. You have an IAM account with administrator permissions. For more information, see Setting up with IAM.
  2. You have the AWS Proton service role and the AWS Proton pipeline service role are attached to your account. For more information, see Setting up AWS Proton service roles and Service roles for AWS Proton.
  3. You have a version control repository connection. For more information, see Setting up a repository connection.
  4. You’re familiar with creating AWS CloudFormation templates and Jinja parametrization. For more information, see What is AWS CloudFormation? in the AWS CloudFormation User Guide and Jinja website.
  5. You have permission to create the S3 Bucket to store the templates for environment and services.

STEPS TO FOLLOW

  1. Create a Environment template using the sample AWS fargate environment. Check the environment details here https://github.com/aws-samples/aws-proton-sample-templates/tree/main/loadbalanced-fargate-svc/environment

Give the proper name of the template with additional details & create template

2. Create a service template using the AWS sample fargate service that will include the AWS pipeline resource to deploy the service. Check the sample service template files here https://github.com/aws-samples/aws-proton-sample-templates/tree/main/loadbalanced-fargate-svc/service

Once we have created both Environment Service templates in AWS Proton, we can go ahead use these templates to create the application environment & services.

3. Create an environment for both staging & production environment using an environment template

Similarly we can also create the production environment by specifying the production environment input like VPC & subnet values.

We can confirm that environment resource specified in our template is deployed by checking the cloud formation stack

4. Once Environment is ready we can create a web-service using service template that defines all infrastructure resources, the CI/CD pipeline, and observability tooling.

Note:- Here we choose the service repository as GitHub repository. We need to create source connection in our AWS to connect to our GitHub account.

We then choose the environment where this instance will be launching. We can also customize the app by providing the custom settings that have been defined in our service template like service instance details , Container image type, Fargate task size & pipeline input details.

We can confirm that service resource specified in our Service template is deployed by checking the cloud formation stack

Once we have our application being deployed , we should be able too see the service endpoint public URL in the proton service instance details




5. Here is the screenshot of our application being launched through AWS proton

Cost of AWS Proton

AWS is offering the use of AWS Proton at no additional expense. You can create, register, and maintain service and environment templates at no charge. You can also count on AWS Proton to self-manage its own operations, such as storage, security and deployment, at no cost to you. The only expenses that you incur while using AWS Proton are the following.

  • Costs of deploying and using AWS cloud resources that you instructed AWS Proton to deploy and maintain for you.
  • Costs of maintaining an AWS connection to your code repository.
  • Costs of maintaining an Amazon S3 bucket that you need to provide inputs to AWS Proton.


Note
:- I have collected this information from AWS official documentation and try to concise it for the readers. Please refer this for detailed understanding of AWS services https://docs.aws.amazon.com/