preloader
  • Home
  • AWS CodeSuite

CodeSuite family

blog-thumb

Actually, AWS has no service that called “CodeSuite”. In the DevOps world, AWS has a lot of tools for CI/CD (Continuous Integration / Continuous Deployment) to support developers such as:

CodeCommit is the managed GIT service. Think “GitHub light”, you can keep your entire software development lifecycle (SDLC) infrastructure in one AWS account.

CodeBuild is their CI tool / managed build service

CodeDeploy is their deployment automation tool - think EC2 services, staggered release, etc.

CodePipeline is the deployment pipeline service

CodeStar wraps all these 4 things up into a newbie-friendly-ish combination.

CloudFormation is a “close cousin” of these services, and is the AWS infrastructure as Code (IaC) tool / service

CI vs CD

Most of people can be easy to assume that Continuous Integration (CI) and Continuous Delivery (CD) are synonymous terms. People often use them that way. But that’s a mistake.

Simply put, CI is the process of integrating code into a mainline code base. In almost all scenarios today, CI is done using platforms designed specifically for the purpose. Implementing CI is, therefore, as simple as using the right tools.

CD is more complicated. CD is about the processes that have to happen after code is integrated for app changes to be delivered to users. Those processes involving testing, staging and deploying code. There is no single type of tool that does all these things. These processes take different forms, depending on the culture of the team and the type of app it is creating.

Setting up a CI server such as Jenkins or Bamboo to integrate code changes continuously does not mean you are doing CD. It just means you are using a CI server.

To get to CD, you also have to organize your software testing, staging and deployment processes in a way that automates them as much as possible and makes them continuous. Doing so requires more than simply turning on a certain type of tool.

Agile vs CI/CD vs DevOps

While Agile, CI/CD, and DevOps are different, they support one another. Agile focuses on the development process, CI/CD on practices, and DevOps on culture.

cloud.vn

3 different development tools for building your practice

You can’t build a house with a single tool. Nor can you enable your development practice with one. Agile, DevOps, and CI/CD are three distinct tools, each important in its own right. When a development organization uses all three for their intended purposes, the results are transformational. And in the context of security, only then—in our opinion—have you earned the right to call yourselves DevSecOps.

Agile development

Agile, now referred to by some of its manifesto authors as agility, is focused on removing process barriers and enabling the key stakeholders, folk like developers and customers, to collaborate more closely on accelerating delivery. Agile highlights the constancy of change and acknowledges that as software producers, we don’t often know everything we need to successfully conceive, develop, and deliver high-quality software in monolithic life cycles.

So, though agile has come to mean different things over the past two decades, its fundamentals remain: Remove process barriers empowering individuals, produce working software rapidly, collaborate closely with customers, and respond to (rather than resist) change.

CI/CD

Continuous integration (CI) is a software engineering practice where members of a team integrate their work with increasing frequency. In keeping with CI practice, teams strive to integrate at least daily and even hourly, approaching integration that occurs “continuous-ly.”

Historically, integration has been a costly engineering activity. So, to avoid thrash, CI emphasizes automation tools that drive build and test, ultimately focusing on achieving a software-defined life cycle. When CI is successful, build and integration effort drops, and teams can detect integration errors as quickly as practical.

Continuous delivery (CD) is to packaging and deployment what CI is to build and test. Teams practicing CD can build, configure, and package software and orchestrate its deployment in such a way that it can be released to production in a software-defined manner (low cost, high automation) at any time.

High-functioning CI/CD practices directly facilitate agile development because software change reaches production more frequently. As a result, customers have more opportunities to experience and provide feedback on change.

Continuous Delivery vs Continuous Deployment

cloud.vn

DevOps Culture

DevOps focuses on limitations of culture and roles as agile development does process. The intention of DevOps is to avoid the negative impact that overspecialization and stovepiping roles in an organization have on preventing rapid or even effective response to production issues. DevOps organizations break down the barriers between Operations and Engineering by cross-training each team in the other’s skills. This approach improves everyone’s ability to appreciate and participate in each other’s tasks and leads to more high-quality collaboration and more frequent communication.

Here’s a quick and easy way to differentiate agile, DevOps, and CI/CD:

– Agile focuses on processes highlighting change while accelerating delivery.

– CI/CD focuses on software-defined life cycles highlighting tools that emphasize automation.

– DevOps focuses on culture highlighting roles that emphasize responsiveness.

AWS CodePipeline

Here are the high-level phases and primary services covered in this use case:

cloud.vn

This sample will create a pipeline in AWS CodePipeline with the building blocks to support the blue/green deployments of infrastructure and application. The sample includes a custom Lambda step in the pipeline to execute Systems Manager Automation to build a golden AMI and update the Auto Scaling group with the golden AMI ID for every rollout of new application code. This guarantees that every new application deployment is on a fully patched and customized AMI in a continuous integration and deployment model. This enables the automation of hardened AMI deployment with every new version of application deployment.

Source: Blue Green infra application deployment

AWS CodeBuild vs AWS CodeDeploy

AWS CodeBuild: is a fully managed build service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don’t need to provision, manage, and scale your own build servers. Build and test code with continuous scaling. AWS CodeBuild is a fully managed build service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, you don’t need to provision, manage, and scale your own build servers

AWS CodeDeploy: is a service that automates code deployments to Amazon EC2 instances. AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications. Coordinate application deployments to Amazon EC2 instances. AWS CodeDeploy is a service that automates code deployments to Amazon EC2 instances. AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications.

AWS CodeBuild belongs to “Continuous Integration” category of the tech stack, while AWS CodeDeploy can be primarily classified under “Deployment as a Service".

Some of the features offered by AWS CodeBuild are:

– Fully Managed Build Service

– Continuous Scaling

– Enables Continuous Integration

On the other hand, AWS CodeDeploy provides the following key features:

– AWS CodeDeploy fully automates your code deployments, allowing you to deploy reliably and rapidly

– AWS CodeDeploy helps maximize your application availability by performing rolling updates across your Amazon EC2 instances and tracking application health according to configurable rules

– AWS CodeDeploy allows you to easily launch and track the status of your deployments through the AWS Management Console or the AWS CLI

AWS CodeDeploy vs AWS CodePipeline: What are the differences?

AWS CodeDeploy: Coordinate application deployments to Amazon EC2 instances. AWS CodeDeploy is a service that automates code deployments to Amazon EC2 instances. AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications; AWS CodePipeline: Continuous delivery service for fast and reliable application updates. CodePipeline builds, tests, and deploys your code every time there is a code change, based on the release process models you define.

AWS CodeDeploy belongs to “Deployment as a Service” category of the tech stack, while AWS CodePipeline can be primarily classified under “Continuous Deployment".

Some of the features offered by AWS CodeDeploy are:

– AWS CodeDeploy fully automates your code deployments, allowing you to deploy reliably and rapidly

– AWS CodeDeploy helps maximize your application availability by performing rolling updates across your Amazon EC2 instances and tracking application health according to configurable rules

– AWS CodeDeploy allows you to easily launch and track the status of your deployments through the AWS Management Console or the AWS CLI

On the other hand, AWS CodePipeline provides the following key features:

– Workflow Modeling

– AWS Integrations

– Pre-Built Plugins

comments powered by Disqus