Most developers have used the Amazon cloud at some point. Amazon provides powerful options for running compute resources like virtual machines and containers, hosting storage, and automating infrastructure processes.

However, some developers go even further and move their entire development environment to AWS. This means using Amazon services for the entire CI/CD process - version control, build server, and deployment.

The major advantage of running your entire development process in the cloud is that it becomes very easy to set up environments and improve your automation. If, at some point, you want to adopt tools like infrastructure as code (IaC), containers, or serverless functions, this is easy with integrated Amazon services. And there is no effort needed to add more pipelines or scale up development as your project grows. 

Essentially, if you are starting out with a small microservices application, and you want to have all the options for adopting cloud native technologies and easily scale to dozens or hundreds of microservices - Amazon has the answer.

Amazon developer services take some getting used to, but once you get into the “Amazon mindset”, are powerful and easy to use. But will it cost you an arm and a leg to get a fully cloud-native development environment? Let’s find out.

If you are unfamiliar with the Amazon ecosystem, check out this blog for a comprehensive background on the Amazon pricing model.

Developing applications on AWS

Amazon Web Services (AWS) offers various cloud services, including computing, content delivery, storage, analytics, and more. These services are offered in the following models:

  1. Infrastructure as a Service (IaaS) - includes on-demand cloud-based IT resources such as networking, virtual servers, dedicated hardware, and data storage. You can access these resources over the Internet. 
  2. Platform as a Service (PaaS) - offers infrastructure to host applications and tools to help you manage your applications. This model eliminates the need to manage the underlying infrastructure.
  3. Software as a Service (SaaS) - offerings that provide a complete software solution managed and run by the provider. These are ready-made tools you can start using at your convenience. You can also use AWS to host your SaaS applications.

You can use AWS Developer Tools to build applications on AWS. These tools let you host code and quickly build, test, and deploy your applications. Here are notable benefits of AWS Developer Tools:

  1. Minimize downtime - AWS Developer Tools can help you build highly available applications on the AWS cloud infrastructure. These tools can help you quickly respond, adapt, and recover from security events.
  2. Automate CI/CD pipelines - AWS Developer Tools provide capabilities that help you replace repetitive manual processes with efficient automation. It helps you build software release pipelines that include build, test, and deployment phases.
  3. Increase developer productivity - AWS Developer Tools let you use your editor to perform all tasks. You can use your editor to manage services, automate development tasks, and provision resources.
  4. Monitor operations - AWS Developer Tools enable you to build an observability dashboard suitable to your needs. You can use your dashboard to gain insight into the operations of systems.
  5. Test and automate infrastructure - AWS Developer Tools let you combine infrastructure as code (IaC) with version control and automated, continuous integration. This pipeline can help you introduce scalability and consistency into provisioning and management.

What developer tools does AWS offer?

Amazon offers several tools that can help you develop applications in a CI/CD model, which are closely integrated with other AWS services. You can access all these services via the Amazon Developer Tools. Amazon’s primary developer tools are:

  1. AWS CodeCommit - a fully-managed source control service for hosting private Git repositories in the AWS cloud. It lets you privately store and manage various assets, including documents, binary files, and source code. AWS CodeCommit repositories store project history from the first commit, allow you to add comments on code, and create pull requests.
  2. AWS CodeBuild - a fully managed build service based in the AWS cloud. The service can compile source code, run unit tests, and produce ready-to-deploy artifacts. AWS CodeBuild offers prepackaged build environments for various programming languages, and you can also customize build environments using your tools. 
  3. AWS CodeDeploy - a fully managed deployment service that can automate software deployments to AWS-based compute services like Amazon Elastic Compute Cloud (EC2) and AWS Lambda. You can also use AWS CodeDeploy to automate deployments to on-premises servers. 
  4. AWS CodePipeline - a continuous integration and continuous delivery (CI/CD) service that can help you model, visualize, and automate all steps needed to release a software product. It can help you quickly model expected release stages and configure these stages as a process for future code changes.

Other features of the Developer Tools console include:

  1. Notifications manager - enables you to subscribe to events in AWS CodeCommit, AWS CodeBuild, AWS CodePipeline, and AWS CodeDeploy. It lets you set up notifications related to repositories, deployments, pipelines, and builds. This manager provides a unique API, AWS CodeStar Notifications, that you can use to quickly push notifications to relevant users about events concerning their expertise. 
  2. Connections - enable you to associate specific AWS resources with a relevant third-party source code provider. The feature lets you use a unique API, AWS CodeStar Connections, that helps you set up authorized connections with third-party providers. 
  3. Object storage - all Amazon tools store code and application data in Amazon S3, an elastically scalable, low cost object storage system, with high durability and advanced replication options.

AWS developer tools pricing

Amazon’s developer tools are powerful, but come at a cost. Let’s see what you can expect to pay to move your development environment to AWS.

Compute and storage costs

Before we get into the cost of developer tools, it’s important to understand how much it will cost you to test and run your applications on Amazon. In general, Amazon charges a per-hour or per-second price for compute resources (such as virtual machines, containers or serverless functions), and a fixed price per GB-month for cloud storage. There are also charges for network interfaces and in some cases, for inbound and outbound network traffic. 

The costs will depend on the type of Amazon services you want to use and their scale. For example, if you use large EC2 instances with a lot of CPU and memory resources, costs can quickly add up. You can use the AWS calculator to define a few Amazon services and how you plan to use them, and calculate the monthly cost. The calculator also lets you try a few different scenarios and see which one fits your budget.

AWS CodeCommit pricing

AWS CodeCommit offers a free tier that gives you five active users per month, with the following conditions:

  1. 1,000 code repos per Amazon account
  2. 50 GB-month of storage
  3. Limited to 10K Git requests per month

If you want to use CodeCommit for more than five users, you pay $1 per user per month. This gives you, for each additional user:

  1. Extra storage: 10 GB-month
  2. Extra Git requests: 2K extra Git requests per month

AWS CodeBuild pricing

AWS CodeBuild has a pay-as-you-go pricing model. Pricing is billed per minute, based on the instance type you choose (each instance type has a certain amount of system memory and processing power, measured as virtual CPUs or vCPUs), and the operating system used. 

You can also leverage the AWS CodeBuild free tier, with 100 build minutes per month using the build.general1.small instance type. This allowance is free forever, both during the first 12 months of your AWS subscription and afterwards. 

Here are a few examples of instance sizes and their cost in the US East region, using the Linux operating system (Windows is available for some instance types at a higher cost). Costs are per build minute:

  1. arm1.small: 3 GB memory and 2 vCPUs—$0.0034
  2. general1.medium: 7GB memory and 4 vCPUs—$0.005
  3. arm1.large: 16 GB memory and 8 vCPUs—$0.015
  4. general1.2xlarge: 144 GB memory, 72 cVPUs—$0.20
  5. gpu1.large: 244 GB memory, 32 vCPUs—$0.65

WS CodeDeploy pricing

CodeDeploy is free when you deploy code on the popular Amazon compute services - EC2, Lambda, and Elastic Container Service (ECS). Keep in mind that you pay for any AWS resources used by CodeDeploy, for example S3 buckets used to store your application code.

To support scenarios where some development or testing environments are on-premises, Amazon lets you run CodeDeploy on-premises. This comes at an extra cost of $0.02 per update per on-premises instance.

AWS CodePipeline pricing

AWS CodePipeline offers a 30 day free trial, and offers a free tier of one active pipeline per month. Beyond this, it costs $1 per pipeline per month. You pay for pipelines only while actually using them. As with other developer services, keep in mind that you pay extra for Amazon resources used to store your code, such as Amazon S3 buckets, or actions triggered by your code pipeline on other AWS services. 

Conclusion

In this article I covered the basics of moving your development operation to the Amazon cloud, and discussed the costs of Amazon developer services. 

You may be surprised that Amazon developer tools are so inexpensive. This is part of Amazon’s strategy to encourage small users to start using its services. If you run a huge project or manage multiple applications, these costs can add up. But for small-to-midsize development operations, costs are minimal.

But there is one more catch. Moving your development shop to Amazon is great but it also means you are locking yourself into the Amazon ecosystem. If, in the future, you want to move to another cloud or move back on-premises, this will be difficult to do without changing the way you work.

To reduce the lock-in problem, consider using open source tools that are supported by Amazon but can also be used on-premises. This will be a bit more difficult to set up, but will give you maximum flexibility to change your development environment in the future.