AWS Proton
AWS Proton is a fully managed application delivery service designed to streamline and standardize the deployment workflow for container and serverless applications. It provides a way for platform engineering teams to define and manage infrastructure, architecture, and CI/CD pipelines as reusable, version-controlled templates, which developers can then use to deploy their applications easily and consistently.
The Two-Persona Model
Proton is built around the collaboration between two distinct teams:
1. The Platform Team (Administrators)
This team is responsible for defining the "golden path" for deployments. They create and manage curated templates that codify best practices for security, architecture, and cost. Their goal is to provide developers with a set of approved, self-service tools that ensure consistency and compliance across the organization.
2. The Development Team (Developers)
This team consumes the templates created by the platform team. They can select a service template that fits their application's needs, provide their source code repository, and let Proton handle the provisioning of the infrastructure and the deployment pipeline. This allows them to focus on writing code rather than managing complex infrastructure.
Core Components
Proton uses several key components to model and manage your infrastructure. These templates are defined using Infrastructure as Code (IaC) tools like AWS CloudFormation or Terraform.
Environment Templates
This defines the shared infrastructure that can be used by multiple applications or services. It typically includes resources like a Virtual Private Cloud (VPC), subnets, ECS or EKS clusters, and shared Application Load Balancers. The platform team creates and manages these templates.
Service Templates
This defines the specific infrastructure, monitoring, and CI/CD pipeline required to deploy a single application or microservice into an environment. A service template is composed of:
-
Service Infrastructure: The resources needed for one instance of your service (e.g., an ECS Task Definition, a Fargate service).
-
CI/CD Pipeline: The pipeline that builds and deploys the service when new code is pushed.
Environments
An Environment is a deployed instance of an Environment Template. For example, a platform team might deploy a "Production" environment and a "Development" environment from the same template, each with slightly different parameters.
Services
A Service is a deployed instance of a Service Template. A developer creates a service, pointing to their source code and selecting a target environment to deploy into. Proton then provisions the service instance and the associated CI/CD pipeline.
Components
A Component is a way to define and provision any supplemental AWS infrastructure that a service might require, but which is not included in the main service template. For example, a service might need an S3 bucket or a DynamoDB table. Developers can attach a component to their service to have these resources provisioned in a standardized way.
The Deployment Workflow
-
Define: The platform team creates and registers
Environment
andService
templates in the Proton service catalog. -
Deploy Environment: The platform team deploys one or more
Environments
(e.g., dev, prod) from anEnvironment Template
. -
Select & Deploy Service: A developer selects a
Service Template
, provides their source code location, and requests a deployment into a targetEnvironment
. -
Automate: AWS Proton provisions the service infrastructure and the CI/CD pipeline. When a developer pushes a new commit to their repository, the pipeline automatically builds and deploys the update to their service running in the specified environment.