AWS Developer Tools
AWS CodeCommit is a highly scalable, managed source control service that hosts private Git repositories.
You simply create a repository to store your code. There is no hardware to provision and scale or software to install, configure, and operate.
CodeCommit helps you collaborate on code with pull requests, branching, and merging.
You can implement workflows that include code reviews and feedback by default, and control who can make changes to specific branches.
AWS CodeBuild is a fully managed continuous integration service.
You just specify the location of your source code, choose your build settings, and CodeBuild will run build scripts for compiling, testing, and packaging your code.
There are no servers to provision and scale, or software to install, configure, and operate.
AWS CodeDeploy is a service that automates application deployments to a variety of compute services including Amazon EC2, AWS Fargate, AWS Lambda, and on-premises instances.
CodeDeploy fully automates your application deployments eliminating the need for manual operations.
CodeDeploy protects your application from downtime during deployments through rolling updates and deployment health tracking.
When using AWS CodeDeploy with AWS Lambda there are three ways traffic can be shifted during a deployment:
- Canary – Traffic is shifted in two increments. You can choose from predefined canary options that specify the percentage of traffic shifted to your updated Amazon ECS task set / Lambda function in the first increment and the interval, in minutes, before the remaining traffic is shifted in the second increment.
- Linear – Traffic is shifted in equal increments with an equal number of minutes between each increment. You can choose from predefined linear options that specify the percentage of traffic shifted in each increment and the number of minutes between each increment.
- All-at-once – All traffic is shifted from the original Lambda function to the updated Lambda function all at once.
- Blue/green – Traffic is shifted from one version of a Lambda function to a new version of the same Lambda function.
AWS CodePipeline is a continuous integration and continuous delivery service for fast and reliable application and infrastructure updates.
You can use CodePipeline to fully model and automate your software release processes.
CodePipeline can execute pipelines in response to events in GitHub.
CodePipeline can receive a webhook from GitHub when a change is made to your GitHub repository.
Webhooks can tell CodePipeline to initiate a pipeline execution.
AWS Cloud Development Kit
The AWS Cloud Development Kit (AWS CDK) is an open source software development framework to define your cloud application resources using familiar programming languages.
AWS SDK is used for defining cloud infrastructure in code and provisioning it through AWS CloudFormation.
AWS CloudFormation enables you to:
- Create and provision AWS infrastructure deployments predictably and repeatedly.
- Leverage AWS products such as Amazon EC2, Amazon Elastic Block Store, Amazon SNS, Elastic Load Balancing, and Auto Scaling.
- Build highly reliable, highly scalable, cost-effective applications in the cloud without worrying about creating and configuring the underlying AWS infrastructure.
- Use a template file to create and delete a collection of resources together as a single unit (a stack).
Developers can use one of the supported programming languages to define reusable cloud components known as Constructs. You compose these together into Stacks and Apps.
AWS X-Ray makes it easy for developers to analyze the behavior of their production, distributed applications with end-to-end tracing capabilities.
You can use X-Ray to identify performance bottlenecks, edge case errors, and other hard to detect issues.
X-Ray supports applications, either in development or in production, of any type or size, from simple asynchronous event calls and three-tier web applications to complex distributed applications built using a microservices architecture.
This enables developers to quickly find and address problems in their applications and improve the experience for end users of their applications.