Design an automated app deployment solution
In the previous step, we learned about designing a catching solution. In this article, you will learn how to design an automated app deployment solution.
With the move to the cloud, many teams have adopted agile development methods. These teams must iterate quickly and repeatedly deploy their solutions to the cloud. Teams must be assured their infrastructure is in a reliable state. Application code must be managed through a unified process.
To meet these challenges, you can automate deployments and use the practice of infrastructure as code. In this unit, you’ll learn how to evaluate different Azure solutions for deployment and automation for your applications. These solutions include Azure Resource Manager templates, and Azure Automation.
What are Azure Resource Manager templates?
Azure Resource Manager templates are files that define the infrastructure and configuration for your deployment. When you write a template, you take a declarative approach to your resource provisioning. These templates describe each resource in the deployment, but they don’t describe how to deploy the resources.
There are many benefits to using templates for your resource provisioning. These benefits are described in the following table:
Table 1: Benefits of using templates for your resource provisioning.
Function | Template benefit |
---|---|
Repeatable results | Templates are idempotent. Idempotent means you can repeatedly deploy the same template and get the same result. |
Orchestration | When a template deployment is submitted to Azure Resource Manager, the resources in the template are deployed in parallel. This process allows deployments to finish faster. |
Preview | The WhatIf parameter, available in PowerShell and Azure CLI, allows you to preview changes to your environment before template deployment. This parameter will detail any creations, modification, and deletions that will be made by your template. |
Testing and Validation | Templates submitted to Resource Manager are validated before the deployment process. This validation alerts you to any errors in your template before resource provisioning. |
Modularity | You can break up your templates into smaller components and link them together at deployment. |
CI/CD integration | Your templates can be integrated into multiple CI/CD tools, like Azure DevOps and GitHub Actions. |
Extensibility | With deployment scripts, you can run Bash or PowerShell scripts from within your templates. Through extensibility, you can use a single template to deploy a complete solution. |
Note!Two types of templates are available for use today: JSON templates and Bicep templates. JavaScript Object Notation (JSON) is an open-standard file format that multiple languages can use. Bicep is a new domain-specific language that was recently developed for authoring templates by using an easier syntax. You can use either template format for your templates and resource deployments.
What are Bicep templates?
Bicep is an Azure Resource Manager template language that’s used to declaratively deploy Azure resources. Bicep is a domain-specific language, which means that it’s designed for a specific scenario or domain. Bicep is used to create Azure Resource Manager templates.
There are many reasons to choose Bicep as the main tool set for your infrastructure as code deployments. These benefits are described in the following table.
Table 2: Benefits of using Bicep as the main tool set for your infrastructure as code deployments.
Feature | Description |
---|---|
Azure-native | Bicep is native to the Azure ecosystem. When new Azure resources are released or updated, Bicep will support those features on day one. |
Azure integration | Templates, both JSON and Bicep, are fully integrated within the Azure platform. With Resource Manager-based deployments, you can monitor the progress of your deployment in the Azure portal. |
Azure support | Bicep is a fully supported product with Microsoft Support. |
No state or state files to manage | All state is stored in Azure. Users can collaborate and have confidence their updates are handled as expected. |
Easy transition from JSON | If you’re already using JSON templates as your declarative template language, it isn’t difficult to transition to Bicep. You can use the Bicep CLI to decompile any template into a Bicep template. |
What is Azure Automation?
Azure Automation delivers a cloud-based automation and configuration service that supports consistent management across your Azure and non-Azure environments. Automation gives you complete control of process automation, configuration management, and update management.
Table 3: Automation process.
Process | Description |
---|---|
Process Automation | Enables you to automate frequent, time-consuming, and error-prone cloud management tasks. This service helps you focus on work that adds business value. By reducing errors and boosting efficiency, it also helps to lower your operational costs. The service allows you to author runbooks graphically, in PowerShell, or using Python. |
Configuration Management | Enables access to two features: Change Tracking and Inventory and Azure Automation State Configuration. The service supports change tracking across services, daemons, software, registry, and files in your environment to help you diagnose unwanted changes and raise alerts. |
Update management | Includes the Update Management feature for Windows and Linux systems across hybrid environments. The feature allows you to create scheduled deployments that orchestrate the installation of updates within a defined maintenance window. |
Design an application configuration management solution
Traditionally, shipping a new application feature requires a complete redeployment of the application itself. Testing or deployment of a feature often requires multiple versions of the application. Each deployment may require different configurations, credentials, changing settings or parameters for testing.
Configuration management is a modern software-development practice that decouples configuration from code deployment and enables quick changes to feature availability on demand. Decoupling configuration as a service enables systems to dynamically administer the deployment lifecycle.
In this unit, you’ll learn about Azure Configuration Management solutions that can help you address deployment issues.
What is Azure App Configuration?
Azure App Configuration provides a service to centrally manage application settings and feature flags. Use App Configuration to store all the settings for your application and secure their accesses in one place.
The following two diagrams show how Azure App Configuration works in Development and Productions environments:
Development
Production
What are the benefits of App Configuration?
App Configuration offers the following benefits:
- A fully managed service that can be set up in minutes.
- Flexible key representations and mappings.
- Tagging with labels.
- Point-in-time replay of settings.
- Dedicated UI for feature flag management.
- Comparison of two sets of configurations on custom-defined dimensions.
- Enhanced security through Azure-managed identities.
- Encryption of sensitive information at rest and in transit.
- Native integration with popular frameworks.
You are almost at the end of this activity. When you are ready click on Mark as complete and then Next to continue on to the Knowledge quiz.
Designing Infrastructure Solutions with Microsoft Azure Architecture
Designing Infrastructure Solutions with Microsoft Azure Architecture
Reach your personal and professional goals
Unlock access to hundreds of expert online courses and degrees from top universities and educators to gain accredited qualifications and professional CV-building certificates.
Join over 18 million learners to launch, switch or build upon your career, all at your own pace, across a wide range of topic areas.
Register to receive updates
-
Create an account to receive our newsletter, course recommendations and promotions.
Register for free