Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub と Azure で加速する ”Code-to-Cloud“ 開発

Akira Inoue
February 20, 2023

GitHub と Azure で加速する ”Code-to-Cloud“ 開発

2023/1/25 開催
〜 開発を加速する GitHub x Azure 最新開発ベストプラクティス 〜
GitHub と Azure で加速する ”Code-to-Cloud“ 開発
セッション資料です。

https://aka.ms/GHAzure23Q3

Akira Inoue

February 20, 2023
Tweet

More Decks by Akira Inoue

Other Decks in Technology

Transcript

  1. ž クラウド ネイティブ を⽀える技術 ž 開発環境のモダナイゼーション ž Inner Loop と

    Outer Loop ž 開発ツールと Git ブランチ戦略 ž シフトレフトとシフトライト ž セキュア DevOps プラクティス
  2. を⽬指して 〜 The Journey to the Cloud 〜 Containers &

    PaaS Minimal code changes Microservices Architecture & Serverless Architected for the cloud modernized/rewrite IaaS “Lift & shift” No code changes On-Premises Infrastructure Platform 移⾏ モダナイゼーション 既存 アプリ&サービス on-premises Rehost クラウド インフラ対応 apps クラウド ネイティブ apps Rearchitect / Rebuild クラウド 最適化 apps PaaS & コンテナー利⽤ CI/CD ⾃動化
  3. クラウド ネイティブ アプリケーション 能⼒ エクスペリエンス 技術 アーキテクチャ 回復⼒ 監視・問題検知⼒ (Observability)

    管理⼒ 疎結合 コンテナー マイクロサービス オーケストレーター サーバレス, PaaS 弾⼒性 ⾃動化, CI/CD Cloud Native Definition v1.0
  4. クラウドネイティブな 展開メカニズム クラウドネイティブの プロセス実装 クラウドネイティブな 組織構造 クラウドネイティブな アーキテクチャ クラウドネイティブの ツール利⽤

    クラウドネイティブな コントロール IT 組織はクラウドネイティブの真の価値を得るために、以下のような技術や開発プロセスに⼤きく変⾰する必要がある
  5. プロジェクトA グループ 認証基盤 かんばんボード ⾃動ビルド・⾃動テスト プロジェクト 責任者 ⾃動リリース インフラ構成テンプレート (IaC)

    コード管理 プロジェクト X A さん プロジェクト Y B さん (多要素認証 必須) モバイル⽤ビルドサーバー Container Registry 開発環境 ステージング環境 本番環境 承認プロセス ソースコード解析 Microsoft Defender インフラ担当 ② 開発者のコミュニケーション • PJ ごとのかんばんボード • 課題や進捗を数値化しプロジェクト 横串で可視化 ID 管理者 機密性 (情報のガバナンス) 完全性 (正しい情報の維持) 可⽤性 (情報のポータビリティ) 設計 開発 テスト GoLive〜(本番運⽤) Web ⽤ビルドサーバー ➋ コミュニケーション • クラウド上の開発マシンを利⽤する • 必要なツールが⼊ったテンプレートか ら仮想マシンを作成/開発環境の 差異を減らす • ライセンス管理の⼀元化 • 認証基盤と連携し、プロジェクトが 終わったら権限をはく奪 ❶ 開発環境の整備 成果物管理 アプリ ver.1.0.0 ② 開発者のコミュニケーション • ソースコードのバージョン管理 • ビルド・テストをツールで⾃動化 • ソースコード解析による品質向上 • 専⽤サーバによるビルド処理 ➌ ビルド・テストの⾃動化 (CI) 合格 • 承認済みの成果物のみを本番 環境にリリース • リリース作業の⾃動化によるオペ ミス撲滅 • ベストプラクティスに基づく インフラ環境をテンプレートから⾃ 動⽣成 ➍ 本番への安全な展開 (CD) プロジェクトX グループ 契約満了 • Microsoft Defender に よる脆弱性の検知 • アラートによる通知 • 監査ログ収集 ❺ 脅威検知・対策
  6. Code faster, work smarter with the Visual Studio 2022 Visual

    Studio 2022 for Mac Visual Studio Code
  7. G EN ERALLY AVAILABLE Your AI pair programmer 記述中のコンテキスト (⽂脈)

    から ⼀致するコードを合成し提案 • コメントをコードに変換 • 反復コードの⾃動⼊⼒ • テストの⾃動提案 • 代替案を表⽰
  8. Anywhere on any device Ready to code in seconds クラウドホスト型開発環境

    Codespaces は、あらゆるタイプ のプロジェクトのリモート開発環境を数分で構築可能 On-demand development クラウドでのコンピューティングとストレージは、開発者が 各プロジェクトの開発環境に必要な専⽤リソースを提供 Familiar tools, consistent experience ブラウザでの Codespaces に加えて、使い慣れた デスクトップ版 VS Code でも利⽤可能 GitHub 開発者エクスペリエンスに完全に統合
  9. Outer Loop Inner Loop PR Loop Analyze Review PR Build

    Test Deploy Validate CI Build Test Build Test Debug Code Staging / Production Quality / Security Operate / Monitor Feedback Loop Pull Request Merge Close (Reject)
  10. Code から Cloud までの全ワークフローの⾃動化 Accelerate delivery through automation 20 以上のプロジェクト

    イベントのオートメーション トリガにより、単なる CI/CD だけでなく、さまざまな API とも連携したワークフローの⾃動化 が可能 Simple and easy to use 多くのサンプルワークフローも⽤意される YAML ベースのワークフロー 定義の利⽤ Global community for actions Microsoft Azure を含む統合機能を提供する企業やコミュニティに よって管理されている数多くのオープンソース Actions
  11. テスト⾃動化は DevOps の中核的な要素の 1 つであ り、顧客への価値の迅速な提供という⽬標を推進す る上で重要 ⾃動化は、機能テストと⾮機能テストの両⽅を考慮す るだけでなく、テストされるアプリケーション/システムの多 くのレイヤーも考慮する必要がある

    異なるテストは、対象システムのさまざまな特性の検証 ⼿段を提供し、デリバリーされる製品の完全な品質評 価を提供する Smoke IaC Regression UI Mobile Business Workflow UAT Performance Security API Unit アプリ
  12. Testing – シフトレフト テスト Automated unit test Telemetry generation CI/CD

    integration TDD & BDD Mocks & Stubs Plan & Design Develop & Build Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY Plan & Design Develop & Build Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY 開発サイクルの後半まで実施を遅らせる従来 のテストモデルが開発のボトルネックになること から、 Shift-Left Testing は⾼速レーン開発 のためのより良いモデルとして設計されている Shift-Left Testing は、ソフトウェアテストを⾼ 速化し、開発サイクルの初期段階にテストプロ セスを移⾏することで開発を促進するために使 ⽤されるアプローチ “シフト レフト” とは、タイムライン上で左にテス トを移動するための⼀つのリファレンス Shift-Left Model Traditional Quality Model
  13. Testing – シフトライト テスト Plan & Design Develop & Build

    Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY Plan & Design Develop & Build Test Deploy & Release Monitor & Analyze ATTENTION TO QUALITY アプリケーションの安定性と復元性は、予期し ない負荷や新しい要素が発⽣したときに、アプ リケーションを監視する新機能を組み合わせた Shift-Right Testing を実⾏することで改善さ れる DevOps の⼀般的なプラクティスは、開発サイ クルの早い段階でテストを実⾏するだけではな く、多くの場合、アプリケーションの動作は運 ⽤環境でもテストされる (Shift-Right Testing) Shift-Left Model Shift-Right Testing は、顧客からのフィード バックを⾼め、仮説駆動型テストを推進し、⾼ いテストカバレッジを可能にする Shift-Left Model Shift-Right Model Feature Flags Insights gained from Telemetry Fault Injection Release rings Hypothesis- driven testing
  14. = 不変の = その状態を変えることができないこと = ⼀度構築した環境を修正しない⼿法 • 変更が必要な場合は、新規に構築して古いものを捨てる • 仮想化やクラウドの弾⼒性を享受

    • Ansible/Terraform/Chef などの構成管理、⾃動構築ツールの活⽤ • 既存環境はそのままに新規環境を⽤意して、ロードバランサーでアクセス先を切り替えることで 環境を⼊れ替える⼿法 Blue – 既存環境 Green – 新規環境 ロードバランサー 切り替え (スワップ) トラフィック
  15. • 記述モデル (コード) を使ったインフラストラクチャの管理⼿法 • ネットワーク、仮想マシン、ロード バランサー、接続トポロジなど • ソース コードに使⽤するものと同じバージョン管理

    (Git など) を使⽤ • 同じソースコードが同じバイナリを⽣成するという原則と同様に IaC モデルは適⽤されるたびに同じインフラストラクチャを⽣成 Sam Guckenheimer, Microsoft Chief Customer Advocate for DevOps 環境構築のリードタイム削減 環境の品質向上、均⼀・均質化、べき等性 環境のスノーフレーク*化を回避 ⾃動化による⼿作業の撲滅 コード変更の追跡と監査 IaC の価値 * スノーフレークとは⾃動的に再現できない⼀意の構成のこと
  16. 命令型 Imperative 宣⾔型 Declarative • インフラストラクチャを作成するためのコマンドを 呼び出すシーケンシャル コード (スクリプト) •

    リソースグループにデプロイするリソースを定義する Bicep ドメイン固有⾔語 (DSL) ファイル または JSON ファイル • デプロイされたリソース間の依存関係も定義 • Azure リソースを⼀貫して繰り返しデプロイ可能 param location string = resourceGroup().location param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } Bicep IaC オーケストレーション ツール
  17. 開発プロセスのより早い段階でのセキュリティ対策が費⽤対効果として重要 Development Build Test/QA Production Breach 改修 コスト SDLC ステージ

    Develop Build Test Deploy Breach $80 $240 $960 $7,600 Security Shifting Left $ Millions Sources: NIST, Polemon Institute
  18. 🔮 ソフトウェア 構成解析 - - - - - - -

    - - - Dependabot 🤖 🕵 シークレットの検出 (および漏洩防⽌) - - - - - - - - - - - - - - Secret Scanning 包括的な 静的解析 - - - - - - - - - - - - Code Scanning
  19. Azure / AWS / GCP / オンプレミス を含めた全 体のセキュリティの状態を俯瞰的に確認可能 マルチクラウドのさまざまなリソースを継続的に

    監視し保護 NIST / CIS 等の客観的な指標を活⽤し 準拠のためのベストプラクティスを提案 Azure 環境のコンプライアンス状況を可視化し ガバナンスアクションを実⾏ Hybrid-cloud coverage Microsoft Azure Google Cloud Amazon Web Services On- Premise Microsoft Defender for Cloud とは | Microsoft Docs
  20. デベロッパー優先、コミュニティドリブン セキュアな開発 クラウド ネイティブな アプリケーション 保護 マルチパイプライン DevOps セキュリティ シフトレフト

    コード セキュリティ 依存関係のセキュリティ 埋め込まれた シークレットへの保護 コードの修復 マルチパイプラインの DevOps セキュリティ管理 Infrastructure-as-Code のセキュリティ管理 “Code-to-Cloud” の コンテキスト化 ⾃動的なワークフロー
  21. Accelerate and secure “ ” development Codespaces Microsoft Dev Box

    GitHub Repos Azure Azure Pipelines GitHub Actions GitHub Advanced Security Code scanning Secret scanning Dependency review Azure AD Visual Studio Code Visual Studio Azure Repos
  22. Modern application pattern Secure DevOps (DevSecOps) Practices Inner Loop IDE

    Dev Container Code Test Debug 1 Source control Pull request 2 Build Test/Scan Deploy 3 Build/Release Infrastructure Application Deployment 5 4 Everything as code ARM GitHub Actions Azure Policy Policies for compliance and Governance 7 Monitoring Monitor logging Staging Production Feedback Loop 6 8 Container Registry Key Vault Azure AD
  23. Plan Develop Operate Deliver GitHub + Azure AD GitHub Insights

    Azure Monitor Microsoft Defender Azure Sentinel GitHub Actions • GitHub + AKS • GitHub + Azure App Service • and more… GitHub + Microsoft Defender GitHub + Azure RM Templates GitHub + Azure Pipelines GitHub Packages Visual Studio / VS Code GitHub Repos Starter Templates Codespaces Dependabot Code & Secret Scanning Azure DevTest Labs Microsoft Dev Box GitHub Issues & Projects GitHub Discussions GitHub + Azure Boards 強⼒なツールとクラウドネイティブ サービス群
  24. © Copyright Microsoft Corporation. All rights reserved. n 本書に記載した情報は、本書各項⽬に関する発⾏⽇現在の Microsoft

    の⾒解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に 対していかなる責務を負うものではなく、提⽰された情報の信憑性については保証できません。 n 本書は情報提供のみを⽬的としています。 Microsoft は、明⽰的または暗⽰的を問わず、本書にいかなる保証も与えるものではありません。 n すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書⾯による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿⼊を⾏うこと は、どのような形式または⼿段(電⼦的、機械的、複写、レコーディング、その他)、および⽬的であっても禁じられています。これらは著作権保護された権利を制限するものではあり ません。 n Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書⾯によるライセンス契約が明確に供給さ れる場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 n Microsoft, Windows, その他本⽂中に登場した各製品名は、Microsoft Corporation の⽶国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、⼀般に各社の商標です。