BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース DoorDashのポリシー自動化で開発者の効率を改善

DoorDashのポリシー自動化で開発者の効率を改善

DoorDashは最近、Open Policy Agentを活用して開発者の効率を向上させた。DoorDashのインフラチームは、インフラポリシー変更の迅速な検証、リソースのより包括的なタグ付け、ポリシー違反に起因するインシデントの顕著な減少など、いくつかの利点を確認した。

QCon New York 2023で、DoorDashのシニア・ソフトウェア・エンジニアであるLin Du氏は、ポリシーの自動化を利用したセルフサービス・インフラストラクチャの詳細な説明した。

数年前、DoorDashは注文量が減少するインシデントに陥った。インフラチームは1時間でインシデントを解決したが、根本的な原因はAWSの必須リソースを誤って削除したことだった。この意図しない削除はTerraformコード内で発生し、そのコードには他にも一見影響がなさそうな約90のリソースが含まれていた。このことに気づいたことで、今後このような重大な見落としに対する安全策として、ポリシーの自動化を使用することになった。

DoorDashでは、チームはTerraformプラン用のオープンソースのオーケストレーターであるAtlantisを使用している。このオーケストレータはTerraformプランのライフサイクルを管理する。ユーザーがGitHubでインフラのプルリクエストを作成すると、AtlantisのワーカーにWebhookイベントがトリガーされる。このワーカーは、指定されたS3バケットからOpen Policy Agent(OPA)ポリシーを取得する。

DoorDashは、Regoクエリを使用してポリシールールを作成し、予想されるシステム状態からの乖離を特定する。DoorDashが採用するconftestツールは、これらのOPAポリシーを活用し、ポリシーアサーションに対してデータを検証する。

そして Atlantis は Terraform プランに対してconftestを実行し、OPA で定義されたポリシーと整合した結果は、Terraformプランの詳細とともに、GitHubのプルリクエストにコメントとして追加される。

DoorDashは、コードレビュー、割り当て、ポリシーを取り扱うGitHubの機能であるPull Approveにより、さらにプロセスを合理化している。Atlantisは必要な承認を得て、Terraformプランに従ってAWSリソースを変更している。

Du氏はさらに、この自動化を使って記述できるポリシーを説明した。彼はポリシーを信頼性、速度、効率、セキュリティの4つのタイプに分類した。

信頼性のために、重要なリソースを削除から守る重要なシナリオを考えてみよう。Du氏は、このような重要なリソースを特定するためのポリシーを設定する例を示しながら説明をした。次に、検証ステップが導入され、これらのリソースに変更を加える前に 管理上のレビューが必要となった。レビューの速度を最適化するために、Du氏は、ポリシーがすでに承認されたモジュールのリストから、特定のPRのTerraformモジュールをチェックする例を紹介した。もしチームがリストにないモジュールを使用する場合、ポリシーがすでに承認されているTerraformモジュールの使用を推奨している。

ポリシーの自動化の結果、DoorDashのインフラチームはプルリクエストのレビューに費やす時間を節約し、全体として製品の改善に取り組むめた。また、プルリクエストに含まれるポリシーの問題を早期に特定でき、ポリシー違反によるインシデントを未然に防げた。最終的に、チームはリソースのタグ付け範囲と標準化を20%から97.9%に向上させ、コストとチームメンバーの最適化につながった。

作者について

この記事に星をつける

おすすめ度
スタイル

BT