DevOps with Azureを活用した開発フローとは?初心者向けに解説
プログラミング未経験の皆さんは、Azureを使ったDevOpsに興味を持ったことはありませんか?
Azureには、ソースコード管理やパイプライン構築などの便利なツールがそろっています。
クラウド上での作業が中心になるため、自宅やカフェなどからも開発・運用がしやすいです。
それでは、DevOps with Azure を活用すると具体的にどのようなメリットがあるのでしょうか?
この疑問に応えるために、Azureを使ったDevOpsの要点や初心者向けの流れをお伝えします。
難しそうに見えるかもしれませんが、技術の背景や使い方を分解してみると意外と理解しやすいです。
皆さんの転職や副業の準備にも活かしやすい内容なので、気楽に読み進めてみてください。
DevOpsとは何か
DevOpsは、開発(Dev)と運用(Ops)を組み合わせて生まれた概念です。
開発チームと運用チームが協力し合い、継続的な改善を目指します。
従来、開発と運用は役割が分かれがちでした。
しかし、新しいサービスをリリースするには両者の連携が欠かせません。
テストやデプロイを自動化し、ミスを減らすことも特徴の一つです。
その結果、サービスの品質が保たれやすくなるだけでなく、リリースサイクルの短縮にもつながります。
DevOps with Azure では、Azureが提供する各種サービスを組み合わせて、この流れを効率よく回すことができます。
Azureのメリットは、クラウド上で一貫した管理ができる点にあります。
インフラ構築の手間を削減したり、セキュリティ面でのサポートも得られるため、初心者にも始めやすいと感じるかもしれません。
Azure DevOpsやAzure CLIなどのツールを活用すれば、コードの管理からリリースまでのプロセスをまとめられます。
Azureで進めるDevOpsの主な要素
Azureには、DevOpsに適したサービスがいくつかあります。
具体的にどんなサービスがあるのか見てみましょう。
Azure Boards
タスク管理や進捗管理を行う機能です。 チームでの作業を可視化しやすくなります。
Azure Repos
ソースコードを保存するリポジトリです。 Gitベースなので、ほかのGitサービスの経験があれば馴染みやすいでしょう。
Azure Pipelines
CI/CD(継続的インテグレーションと継続的デリバリー)の基盤です。 自動ビルドやテスト、デプロイを設定できます。
Azure Artifacts
プライベートなパッケージ管理が可能です。 チーム内だけで使うライブラリなどを手軽に共有できます。
Azure Test Plans
テスト管理をするための機能です。 手動テストや自動テストを一括管理できます。
これらのツールを組み合わせると、開発から運用までのフローをスムーズに構築できます。
DevOps with Azure では、これらの機能を使ってコードの変更を自動でテストし、問題なければ本番環境にリリースする流れが容易に作れます。
初めて聞く用語が多い場合は、焦らずに一つずつ使い方を理解していくのが良いでしょう。
Azure DevOps PipelinesでのCI/CD
Azure DevOpsの機能の中でも、多くの方が注目するのがAzure Pipelinesです。
ビルドやテスト、デプロイを自動化し、エラーを事前に検出できます。
リポジトリにコードをプッシュすると、Azure Pipelinesが起動し、自動でビルドとテストを実行します。
問題がなければステージング環境などにデプロイし、最終確認を行います。
その後、本番にリリースするかどうかを判断する流れです。
下記のようなYAMLファイルを用意しておくと、Azure Pipelinesが読みに行きます。
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '16.x' displayName: 'Use Node.js 16.x' - script: | npm install npm run build displayName: 'Install and Build' - script: | npm run test displayName: 'Run Tests' - task: AzureWebApp@1 inputs: azureSubscription: 'MyAzureSubscription' appName: 'my-azure-webapp' package: '$(Build.ArtifactStagingDirectory)/**/*.zip' displayName: 'Deploy to Azure Web App'
これをAzureリポジトリやGitHubリポジトリに配置するだけで、コミット時に自動ビルドと自動テストが動きます。
うまく動作すれば、そのままAzureのWebアプリにデプロイできます。
各種タスクの設定は公式ドキュメントにまとまっているので、詳細はそちらを確認すると分かりやすいです。
GitHub Actionsとの組み合わせ
Azure DevOpsだけではなく、GitHub Actionsを使ってAzureにデプロイする方法もよく見られます。
GitHubのリポジトリを使う場合は、Azure PipelinesではなくGitHub ActionsでCI/CDを組むことが多いです。
YAMLでワークフローを定義し、アクションとしてAzure CLIやAzure WebAppsなどを利用できます。
たとえば、以下のような簡単なGitHub Actionsの例があります。
name: CI/CD for Azure App on: push: branches: [ "main" ] jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Node uses: actions/setup-node@v3 with: node-version: 16 - name: Install dependencies run: npm install - name: Build run: npm run build - name: Test run: npm run test - name: Deploy to Azure WebApp uses: azure/webapps-deploy@v2 with: app-name: "my-azure-webapp" publish-profile: ${{ secrets.AzureWebAppPublishProfile }} package: .
GitHub側のSecretsにAzure Web Appの公開プロファイルを登録しておけば、pushのタイミングで自動でテストとデプロイを実施できます。
DevOps with Azure では、Azure DevOpsもGitHub Actionsもどちらも選択肢として広く使われています。
好みやプロジェクトの事情に合わせて選ぶとよいでしょう。
コンテナ運用とAzure
近年では、アプリケーションをコンテナ化して運用するケースが増えています。
コンテナ技術を活用すると、開発環境と本番環境の差が少なくなり、動作の再現性が高まります。
ここでDevOps with Azure が力を発揮するのは、Azure Kubernetes Service(AKS)などコンテナに特化したサービスが用意されている点です。
AKSを使うと、KubernetesクラスターをAzure上にかんたんに作成できます。
クラスタの構築やスケールの設定などが短い操作で行えるため、初心者でも扱いやすいと感じるでしょう。
また、Dockerイメージを管理する Azure Container Registry (ACR) と組み合わせれば、ローカルでビルドしたイメージをクラウド上に安全に保管できます。
次のようなDockerfileを用意しておけば、アプリをコンテナイメージ化できます。
FROM node:16-alpine WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
イメージをACRにプッシュし、その後AKSにデプロイすれば、継続的に更新できるようになります。
コードを修正したら新しいイメージをビルドし、ACRにアップロードしてクラスターを更新するという流れです。
これはAzure DevOpsのPipelineやGitHub Actionsで自動化できます。
公式ドキュメントにもAKSやACRの構築例が載っているので、あわせて参照すると実践しやすいでしょう。
IaC(Infrastructure as Code)とAzure
DevOpsで語られるトピックに IaC (Infrastructure as Code) があります。
構成管理をコード化し、手動で環境を作るのではなく、スクリプトや宣言的ファイルを用意して自動でインフラを構築する考え方です。
Azureでは、Azure Resource Manager(ARM)テンプレートやBicepなどを使うと、リソース構成を定義できます。
VMやストレージ、ネットワークの設定をコードで記述し、そのままデプロイできます。
これにより、同じ環境を何度でも再現可能です。
たとえばBicepでは、次のようなファイルを書いてVMを作成できます。
param vmName string = 'myAzureVm' param adminUsername string = 'azureuser' param adminPassword string resource myVM 'Microsoft.Compute/virtualMachines@2021-07-01' = { name: vmName location: resourceGroup().location properties: { hardwareProfile: { vmSize: 'Standard_B1s' } storageProfile: { imageReference: { publisher: 'Canonical' offer: 'UbuntuServer' sku: '18.04-LTS' version: 'latest' } } osProfile: { computerName: vmName adminUsername: adminUsername adminPassword: adminPassword } networkProfile: { networkInterfaces: [ { id: resourceId('Microsoft.Network/networkInterfaces', '${vmName}-nic') } ] } } }
このファイルをAzure CLIなどから適用すると、定義通りのVMが作られます。
DevOps with Azure では、IaCの仕組みを使いながらCI/CDパイプラインと連携させることが多いです。
リポジトリにBicepファイルやARMテンプレートを置き、Pull Request時にテストして、問題なければ本番に反映するように設定できます。
Azure MonitorやApplication Insightsでのモニタリング
DevOpsでは本番運用における監視とログの管理も大切です。
Azureには、Azure Monitor や Application Insights といったモニタリング系のサービスがあります。
Webアプリやコンテナのログを集めて、異常が起きていないかを監視できます。
アプリの応答時間やCPU使用率、メモリ使用率などもグラフでチェック可能です。
問題が見つかったらすぐにアラートを飛ばし、メールやチャットツールに通知するといった連携も設定しやすいです。
初期設定はAzure Portalから行うと感覚的に分かりやすいかもしれません。
クラウド環境なのでサーバーにログをため込む必要はなく、Azureが管理してくれます。
監視したいログの種類も比較的簡単に切り替えられるため、状況に合わせて柔軟に運用できます。
DevOps with Azure の大きな利点は、開発と運用のすべてをAzure上で完結しやすいところにあると言えるでしょう。
よくある疑問と公式ドキュメントについて
はじめてAzureでDevOpsを始めようとすると、覚えることが多い印象がありますよね。
特にプロジェクト管理やCI/CD、IaCなど、それぞれの用語が複雑に感じられるかもしれません。
そうしたときは公式ドキュメントを参照してみると、最新の情報や具体的な手順を確認できます。
Microsoftの公式サイトは、実例に沿った解説が整理されています。
Azure DevOpsの設定から、Azure CLIやリソース管理、Kubernetesなど、多岐にわたるガイドが公開されています。
公式ドキュメントは下記URLなどから確認できます。
azure cliを使った簡単な例
Azureのリソースを作成するときは、Azure CLIも便利です。
ローカル環境でコマンドライン操作ができ、スクリプトを用意しておけばかんたんに複数のリソースを構築できます。
Azure CLIを使うには、事前にAzure CLIのインストールが必要です。
インストール後、サインインして下記のようなコマンドを実行すると、リソースグループを作成できます。
az login az group create --name myResourceGroup --location eastus
このあと、Web Appの作成やVMのデプロイなどもCLI経由で進められます。
IaCツールと組み合わせるとスクリプト管理がよりシンプルになります。
Azure DevOpsのPipelineやGitHub Actionsから、これらのコマンドを呼び出す形にすれば、自動的にリソースグループを作成してデプロイする流れを作ることもできます。
DevOps導入の注意点
DevOps with Azure をうまく進めるためには、いくつかのポイントを押さえる必要があります。
初期コストに気をつける
クラウドの利用料金が発生するため、リソースの作成や規模には注意が必要です。
セキュリティの設定を丁寧に
アクセス制御やネットワーク設定を意識しないと、思わぬリスクが生じるかもしれません。
チーム内の情報共有
DevOpsでは開発担当や運用担当の連携が欠かせません。 管理画面やパイプラインの状態を共有しましょう。
適切なログ管理
MonitorやApplication Insightsなどでログを取る際、必要なデータを取りこぼさないように設定しましょう。
これらを意識するだけでも、スムーズに運用しやすくなります。
また、最初は規模の小さいプロジェクトから試してみると負担が少なくなるでしょう。
まとめ
DevOps with Azure は、Azure上のサービスを組み合わせることで、開発から運用までを一貫して管理できる仕組みです。
Azure DevOps(Boards、Repos、Pipelines、Artifactsなど)を使うもよし、GitHub Actionsと連携させるもよしと、複数の選択肢が用意されています。
コンテナを活用したAKSやIaCによるインフラ管理、さらには監視ツールとしてAzure MonitorやApplication Insightsまでカバーできるため、多様なアプリケーションに応用しやすいです。
初心者の皆さんは、「やることが多そうだな」と思うかもしれません。
ただ、クラウドサービスが充実しているからこそ、自前でサーバーを構築するより手軽に取り組めます。
学んでみると、開発から運用へ移る一連の流れが整理され、チーム内での連携もスムーズになるでしょう。
公式ドキュメントでは、各サービスのセットアップ方法やサンプルが多数公開されています。
最初はAzureで仮想マシンを立ててみたり、小さなWebアプリを自動デプロイしてみたりするとイメージがつかみやすいです。
実際に触ってみながら、少しずつ試行錯誤を続けていくと、皆さんのプロジェクトにもDevOpsが自然に組み込めるようになるでしょう。