Overview of AWS Proton
AWS Proton is a new service that was introduced at re: invent 2020. AWS proton is a platform for developers to be able to create deployment templates for serverless and containerized applications.
Benefits of using AWS Proton
- Proton provides a self-service web interface that allows users to quickly find and deploy the most recent templates directly from the AWS console.
- Developers can connect to the repository and can deploy with minimal effort by using the preconfigured service templates and environments.
- Proton can be used by multiple teams when working on a project, the Administrator is able to create and update stacks on behalf of developer teams, helping the developer team to focus on building their application.
- Proton can fully automate the end-to-end application deployments with the required infrastructure such as databases and load balancers.
Below shows a visual overview of AWS proton and how the workflow is been distributed:
The figure above is from AWS Proton Userguide
Looking at the overview shows the involvement of templates and environments of staging, production, and development. We will go through each stage as follows;
Stage 1: The administrator creates an Environment template, this template defines the resource sharing
Stage 2: From the Environment template, AWS proton deploys one or more environments that contain the staging, production, and development cycle.
Stage 3: The administrator creates and registers a service template with AWS Proton, and it structures the bedrock of the infrastructure, monitoring and CI/CD resources with the compatible Environment Templates
Stage 4: The developer makes use of the service template and connects to the source code repository
Stage 5: AWS Proton deploys the service with CI/CD pipeline for your service instances.
Stage 6: AWS Proton deploys and manages the service and service instances that are running the Source code which was defined in the service template.
A service instance is an instantiation of the selected service template in an environment for a single stage of a pipeline.
The figure above shows the AWS Proton WorkFlow
Proton can also provide you with an expert CI/CD pipeline dependent on the service template created. Environment templates allow teams to reuse pipelines to deploy the same application into the production, staging, and development stage, which is why Proton is efficient.
Working with AWS Proton
Firstly we need to open the AWS Proton Service in the AWS console and click on get started.
In the getting started page, you choose either create an environment template or create a service template depending on the template you want to create. But for this project, I chose the "create a service template" option
Once open, you choose the template option to create a template for provisioning new environments.
I chose "Use one of our sample template bundles" and "fargate-environment" option at this point. So it will create a VPC, S3 bucket, codepipeline, and a IAM Role for EC2 instance.
Also, create a service. To automatically provision the CI/CD pipeline, the proton connects to the repository source code in the service repository settings.
You create a service instance in configure custom settings. Follow the prompt by entering the instance name, choose the environment for your instance parameters, and create and view your service status and details.
When the service is active, in the overview tab, in the service instance section, choose the name of your service.
To view your application build, deploy stage, in the output section, copy the Pipeline Endpoint.
In this deploy, the following resources are created by AWS:
Iam Role, EC2 Instance, CI/CD Codepipeline, ECS Fargate, S3 Bucket.
This project gives an overview and insight on the usefulness of AWS Proton in regards to creating a reusable Environment Template and a Service Template both for Development teams and Administrator Teams.