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営業日以内に、書面の評価と計画をお届けします。