What is the history of AWS and Azure?
Before considering the differences and similarities between running DevOps in AWS or Azure, it is important to understand the different in their roots. AWS was launched in 2006 by Amazon, who at that time was an online retailer. They realized in the early days of the commercial internet, nearly ten years before, that they needed to scale up their IT infrastructure for the holiday season only to have it sit idle after the New Year until the following autumn. Worse yet, it was entirely possible that hardware and software artifacts required to scale up their infrastructure would need to be replaced in less than a year after only a few months of use.
Also, around the year 2000 Amazon was a developer centric shop because their entire platform was internet-based. One data point that quickly became a key issue for Amazon management was that it took 3 months to build out the necessary infrastructure and tools required to support a new software engineer on the Amazon platform.
Amazon’s solution to this problem was to create database, compute, and storage components for new hires as API services that could be quickly spun-up to increase the productivity ramp of the new hires. The idea of renting these resources as services to other developers and developer centric businesses is what became the AWS service that Amazon provides today.
At a Microsoft Developer’s Conference in 2008, the first plan for Microsoft’s Azure Cloud was announced publicly. It called for Microsoft to offer five key categories of services: Windows Azure for computing, storage, and networking; Microsoft SQL Services for databases; Microsoft .NET Services for developers; Live Services for file sharing; and Microsoft SharePoint Services and Microsoft Dynamics CRM Services SaaS offerings. Microsoft launched Azure in 2010 almost 4 years after AWS. It received mixed reviews since the AWS service was considered much more mature and platform agnostic than the original release of Microsoft-centric Azure Cloud Services e. While the Azure cloud service has come a long way over the last decade, AWS still has had 31% of the global cloud computing market, while Azure controls just 11%.
Both AWS and Azure provide extensive AWS and Azure DevOps branded sets of tools and capabilities to build CI/CD pipelines and automate rapid software development lifecycles.
What are Pipelines-as-Code or Code Pipeline?
The pipelines-as-code technique emphasizes that the configuration of delivery pipelines that build, test, and deploy applications or infrastructure should be treated as code; they should be placed under source control and modularized in reusable components with automated testing and deployment. As organizations move to decentralized autonomous teams building microservices, the need for managing pipelines as code increases to keep the building and deploying of software consistent. This need has given rise to delivery pipeline templates and tooling that enable a standardized way to build and deploy services and applications. Such tools use the declarative delivery pipelines of applications, adopting a pipeline blueprint to execute the underlying tasks for various stages of a delivery lifecycle such as build, test and deployment; they abstract away implementation details. The ability to build, test and deploy pipelines as code should be one of the evaluation criteria for choosing a CI/CD tool.
What is AWS Code Pipeline?
AWS CodePipeline is a fully managed, continuous delivery service that connects to existing tools and systems. It allows organizations to model the different stages of their software release process using the console interface, the AWS CLI, AWS CloudFormation, or the AWS SDKs.
AWS CodePipline allows users to easily specify which tests they want to run and customize the steps and dependencies required to deploy their application. With AWS CodePipeline developers can use AWS’s pre-built plugins or their own custom plugins in any step of the release process. For example, developers can pull source code from GitHub, use their on-premises Jenkins build server, run load tests using a third-party service, or pass on deployment information to their custom operations dashboard. Automating the build, test, and release process allows development teams to test each code change and catch bugs while they are small and simple to fix quickly and easily. This process makes it possible for developer team to ensure the quality of their application or infrastructure code by running each change through their staging and release process.
What is Azure Pipelines?
Azure Pipelines is a cloud service that can automatically build and test code projects and make them available to other users. It works with just about any language or project type. Azure Pipelines combines continuous integration (CI) and continuous delivery (CD) to test and build code and ship it to any target constantly and consistently. It supports almost any language or any platform. For example, you can use Azure Pipelines with most application types including
- Java
- JavaScript
- Node.js
- Python
- .NET
- C++
- Go
- PHP
- XCode.
Azure Pipelines runs in parallel on Linux, macOS, and Windows. It is easy to build and push images to container registries like Docker Hub and Azure Container Registry. Users can also deploy containers to individual hosts or to Kubernetes environments. Azure Pipelines allows users to explore and implement a wide range of community-built build, test, and deployment tasks, along with hundreds of extensions from Slack to SonarCloud. With Azure Pipelines developers can implement continuous software delivery (CD) to any cloud, including Azure, AWS, and GCP. They can also visualize deployment to any number of interdependent stages and ensure fast continuous integration/continuous delivery (CI/CD) pipelines for every open-source project.
What are Code Building Tools?
Build tools are programs that automate the creation of executable applications from source code (eg. .apk for android app). Building incorporates compiling, linking and packaging the code into a usable or executable form.
Build automation is the act of scripting or automating a wide variety of tasks that software developers do in their day-to-day activities like:
- Downloading dependencies.
- Compiling source code into binary code
- Packaging that binary code
- Running tests
- Deployment to production systems
What is AWS CodeBuild?
AWS CodeBuild is a fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy. With CodeBuild, developers don’t need to provision, manage, and scale their own build servers.
AWS CodeBuild eliminates the need to set up, patch, update, and manage build servers and software. There is no software to install or manage. Developers can bring their own build tools and programming runtimes to use with AWS CodeBuild by creating customized build environments in addition to the pre-packaged build tools and runtimes supported by CodeBuild. Like many other AWS services, CodeBuild scales up and down automatically to meet the build volume required. It immediately processes each build submitted and can run separate builds concurrently, which means builds are not left waiting in a queue. AWS CodeBuild belongs to a family of AWS Code Services, which u can be used to create complete, automated software release workflows for continuous integration and delivery (CI/CD). Developers can also integrate CodeBuild into their existing CI/CD workflow. For example, developers can use CodeBuild as a worker node for their existing Jenkins server setup for distributed builds.
What is Azure Code Build?
Azure provides 3 unique but separate services that are like AWS CodeBuild.
Azure Repos is a set of version control tools that you can use to manage your code.
Azure Artifacts introduces the concept of multiple feeds that you can use to organize and control access to your packages. If you're familiar with using packages from NuGet.org or npmjs, you can think of those places each as a single feed. With Azure Artifacts you can create and share Maven, npm, and NuGet package feeds from public and private sources with teams of any size. You can add fully integrated package management to your continuous integration/continuous delivery (CI/CD) pipelines with a single click.
Azure Test Plans or the Test hub in Azure DevOps Server (see Web portal navigation) provides three main types of test management artifacts: test plans, test suites, and test cases. These elements are stored in your work repository as special types of work items. You can export and share them with your team, and benefit from close integration for all your DevOps tasks.
- Test plans group test suites and individual test cases together. Test plans include static test suites, requirement-based suites, and query-based suites.
- Test suites group test cases into separate testing scenarios within a single test plan. Grouping test cases makes it easier to see which scenarios are complete.
- Test cases validate individual parts of your code or app deployment. You can ensure your code works correctly, has no errors, and meets business and customer requirements. You can add individual test cases to a test plan without creating a test suite, if you wish. More than one test suite or test plan can refer to a test case. You can effectively reuse test cases without needing to copy or clone them for each suite or plan. See Create manual test cases.
What is Code Deploy?
Code Deploy is a managed service that automates software deployments to a variety of compute services. These tools make it easier to users to rapidly deploy new features by automating complex application updates.
What is AWS Code Deploy?
AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of computing services such as Amazon EC2, AWS Fargate, AWS Lambda, and on-premises servers. Developers can use AWS CodeDeploy to automate software deployments, eliminating the need for error-prone manual operations. The service scales to match deployment needs.
Developers can consistently deploy their application across development, test, and production environments whether deploying to Amazon EC2, AWS Fargate, AWS Lambda, or on-premises servers. AWS CodeDeploy allows users to easily launch and track the status of their application deployments through the AWS Management Console or the AWS CLI. It also gives a detailed report allowing users to view when and to where each application revision was deployed. Developers can also create push notifications to receive live updates about their deployments.
AWS CodeDeploy helps maximize application availability during the software deployment process. It introduces changes incrementally and tracks application health according to configurable rules. Software deployments can easily be stopped and rolled back if there are errors. Also, CodeDeploy is platform and language agnostic, works with any application, and provides the same experience whether you’re deploying to Amazon EC2, AWS Fargate, or AWS Lambda. Developers can easily reuse existing setup code and CodeDeploy can integrate with existing software release processes or continuous delivery toolchains (e.g., AWS CodePipeline, GitHub, Jenkins).
What is Azure Code Deploy?
The Azure Pipelines product described earlier, actually provides all of the features that AWS Code Deploy offers as well as providing integration with third-party tools, such as Ansible, Chef, Puppet, Jenkins, and Terraform. It also offers a comprehensive set of access extensions through their Extensions Marketplace. See:https://marketplace.visualstudio.com/azuredevops for the full list.[SB1]
What are some DevOps collaboration tools?
AWS CodeStar enables developers to quickly develop, build, and deploy applications on AWS. CodeStar provides a unified user interface, enabling users to easily manage their software development activities in one location. With CodeStar, a user can set up an entire continuous delivery toolchain in minutes, allowing the ability to start releasing code faster. CodeStar makes it easy for development teams to work together securely, allowing them to easily manage access and add owners, contributors, and viewers to projects. Each project comes with a collaborative project management dashboard, including an integrated issue tracking capability powered by Atlassian JIRA Software. With the project dashboard, teams of developers can easily track progress across the entire software development process, from the backlog of work items to the teams’ recent code deployments.
To start a project, developers choose from a variety of templates for Amazon EC2, AWS Lambda, and AWS Elastic Beanstalk. They have the option to choose AWS CodeCommit or GitHub to use as their project’s source control. Developers also have the option to edit their source code using one of several options including AWS Cloud9, Microsoft Visual Studio, or Eclipse. After making selections, the underlying AWS services are provisioned in minutes, allowing the team to quickly start coding and deploying applications.
AWS CodeStar also enables developers to collaborate on projects across their team in a secure manner. Developers can easily manage access for project owners, contributors, and viewers without needing to manually configure a separate policy for each service. CodeStar simplifies the process of setting up project access for teams by providing built-in role-based policies that follow AWS Identity and Access Management best practices. CodeStar provides an easy way to coordinate day-to-day development activities through a unified user interface, reducing the need to switch between various service consoles. The project dashboard lets users monitor application activity, and track progress across all stages of the software development process, including code commits, builds, tests, and deployments, from a central place. CodeStar integrates Atlassian JIRA Software, a third-party issue tracking and project management tool, allowing users to easily manage JIRA issues directly in the AWS CodeStar dashboard.
With the Azure Boards web service, teams can manage their software projects. It provides a rich set of capabilities including native support for Scrum and Kanban, customizable dashboards, and integrated reporting. These tools can scale as your business grows. Developers can quickly and easily start tracking user stories, backlog items, task, features, and bugs associated with their project. Users can also track work by adding work items based on the process and work item types available to their project. They can also quickly add and update the status of work using the Kanban board. Developers can also assign work to team members and use labels to tag support queries and filtering. Share information through descriptions, attachments, or links to network shared content. Prioritize work through drag-and-drop.
Should You Choose AWS or Azure cloud solutions?
The differences between the suite of AWS and Azure DevOps tools in terms of the general DevOps requirements of coding, building, testing, packaging, releasing, configuring, and monitoring in a collaborative environment with continuous integration and continuous deployment are more subtle and nuanced than substantial. The major differences between the Azure and AWS DevOps tool sets are their integration with their respective platforms. Both tools incorporate the look and feel of their respective UIs of their cloud platforms for obvious reasons. AWS DevOps is much easier to get started in while the Azure DevOps suite is better integrated between the different tools across the entire Azure DevOps tool sets and has a much more comprehensive set of integrations with the entire Azure Marketplace.
Want to learn more about Venafi's many partners? Check out the Venafi Marketplace to discover the thousands of integrations possible.