本文へスキップ
BigTree108

AzureクラウドとDevOps

コードによるインフラ管理、1日に何度もデプロイするパイプライン、原則拒否のセキュリティ基準、予測できる請求額。これが当社のクラウド環境の構築方法であり、自社の運用方法でもあります。

DevOpsの実際の業務

  • パイプライン。GitHub Actionsでビルド、テスト、セキュリティスキャン、デプロイを行います。保存されたシークレットではなくフェデレーション認証を使い、すべてのアクションをハッシュで固定します。
  • Infrastructure as Code。すべてをTerraformで管理し、適用前にプランとしてレビューします。定期的なドリフト検知により、誰かが手作業で変更した箇所を報告します。
  • データベースのデリバリー。スキーマの変更は、バージョン管理されたマイグレーションとしてパイプラインで実行します。そのため、スキーマなしでコードだけをデプロイすることは起こりません。
  • 監視とアラート。ログ、メトリクス、トレースを1つのワークスペースに集約し、アラートは、開発者が対応できる場合にのみ担当者に届きます。
  • コスト管理。適正なサイズのプラン、負荷の変動が大きい箇所には従量課金、そして誰かが実際に目を通す月次の請求額です。

使用している技術

すべてのリソースをTerraformで宣言し、フェデレーション認証を使ってGitHub Actionsからデプロイします。当社の環境でも御社の環境でも、ポータルで手作業で組み立てるものはありません。

  • コンピュート

    APIと40の定期ジョブには、.NET 10の分離ワーカーで動くAzure Functionsを使い、データベースのデプロイとEF Coreのマイグレーションは、Container Apps Jobsで実行します。

  • データ

    Azure SQLに行レベルセキュリティを設定し、Key Vaultの顧客管理キーでAlways Encrypted列を保護します。文書と署名済みPDFはBlob Storageに保存します。

  • フロントエンド

    ポータルとこのサイトの2つのStatic Web Appsを、どちらも厳格なContent Security Policyで配信し、クローラーがHTMLを必要とする箇所ではプリレンダリングします。

  • ID管理

    人とグループにはEntra ID、すべてのワークロードにはユーザー割り当てマネージドID、GitHub ActionsからはOIDCを使います。パイプラインに長期間有効な認証情報は置きません。

  • オブザーバビリティ

    Application InsightsとLog Analyticsに、Teamsのメッセージとしてチームに届くアラートルールを設定します。開発者が対応できるシグナルだけがアラートになります。

  • ガバナンス

    リソースグループのポリシー、管理ロック、消去保護、診断設定を、すべてTerraformで宣言し、各ルールの隣にその理由を記します。

コストの規律

当社のエンジニアリング原則は、優先順位を固定の順序で定めています。コストが最優先で、次にセキュリティ、最新性、パフォーマンスの順です。アーキテクチャを描く前にコストの上限を設定し、設計上の判断はすべてそれに照らして確認します。実際には、負荷の変動が大きい箇所では常時稼働のサーバーではなく従量課金を使い、ベンダーが推奨する階層ではなく適正なサイズのデータベース階層を選び、有料のオンコール製品ではなく、サブスクリプションにすでに含まれるサービスでアラートを構成します。

セキュリティ基準

  • ファイアウォールは原則拒否で、SQLにはFunctionsのサブネットからのみ接続できます。
  • シークレットはKey Vaultにのみ存在し、マネージドIDを通じて読み取ります。
  • 個人情報と財務情報の列はAlways Encryptedで保護されており、データベース管理者でも読み取れません。
  • アクションとコンテナイメージはハッシュで固定します。依存関係の更新はレビュー済みのプルリクエストとして取り込み、セキュリティアドバイザリが出れば無条件でアップグレードします。
  • CodeQLはプッシュのたびに実行し、Terraformのプランは適用前に検証し、ドリフトは定期的に検知します。

クラウドの実績

20を超えるCI/CDパイプラインを構築し、2週間ごとのリリースを毎日のデプロイに変え、リリース時間を4時間から25分に短縮し、あるプラットフォームではAzureの支出を30%削減しました。数値は当社の納品実績によるものです。

場当たりではなく、そのために採用

DevOpsは、当社が意図して採用している職種です。求人実績にはDevOpsエンジニアと、DevOps専任の技術面接官が含まれており、候補者は、チェックリストを読み上げるだけのジェネラリストではなく、実際にその仕事をしている人に評価されます。

Azure環境をコード化し、請求額も抑えませんか。

サブスクリプションへの読み取りアクセス、またはどこで何が動いているかの説明をお送りください。1営業日以内に、書面の評価と計画をお届けします。