ここでは、ソフトウェアの開発プロセスにおいてソフトウェアの安全性を高めるために Akamai が使用する手順を示します。これは、構築プロセスの間に不安定性が発生するのを最小限に抑えるためにすべてのエンジニアリングチームが従う必要のある手順です。

Akamai は複数の QA テストを使用しますが、インターネット全体では一部の地域、ISP、お客様にのみ適用されるエッジケースを実行する場合があります。

まず、いくつか背景を見ていきます。Akamai のエンジニアが開発したソフトウェアは、Akamai の分散ネットワークを構成する何十万台ものサーバーにインストールされます。Akamai のソフトウェア開発プロセスでは、他の主要な Software as a Service(SaaS)プロバイダーと同様に運用を重視したモデルが採用されています。これは適応型モデルであり、チームワーク、役割の分担、リスク管理に重点が置かれています。社内開発ソフトウェアに加えて、Akamai は、アップストリームベンダーの FLOSS や独自ソフトウェアなど、他社製ソフトウェアも広く使用しています。

Akamai は、これらのコンポーネントを、拡張、トラブルシューティングの向上、システム監視のための遠隔診断および正常性チェックのレポート、ソフトウェアの特定部分のみの使用などを目的として変更しています。

Akamai のエンジニアリング組織は、リビジョン管理システム(RCS)を使用して、許可されるソフトウェア変更の量を制限し、ソースコードの送信を追跡するチェックイン時通知を提供します。ソースコードのチェックアウトとチェックインは、アクセス制御と否認防止の両方を提供する公開鍵暗号化で認証されます。

変更は、Akamai のサービスへの影響が最小限になるように、段階的にロールアウトされます(「フェーズ」と呼ばれます)。ソフトウェアは安全な接続を通してインストールされ、コンポーネントのリビジョンが正しく、転送中に変更されていないことが確認されます。

各フェーズが安定して動作していることが確認されると、残りの部分の展開が決定されます。Akamai ではこれを「ワールド」フェーズと呼びます。すべてのフェーズにおいて、インストールをロールバックする方法についてのプロセスが文書化されています。これは、問題がある場合でも、ソフトウェアは新しくインストールされた地域へのトラフィックの送信を自動的に停止しないためです。多くの場合、ロールバックが必要なときは、影響を受けるサーバーが自動的に一時停止します。

Akamai のサービスへの影響を最小限にするため、グローバルにロールアウトするときは、ソフトウェアのインストールは通常「グループ」で行われます。例えば、地域に 3 台のサーバーがある場合、一度にインストールされるのは 1 台のサーバーだけです。継続性を保証するため、Akamai は地域全体に一度にインストールすることはありません。

これらの制御は、ソフトウェアの変更によるインストール時のネットワークへの予期しない影響を最小限にして、顧客へのサービス提供を継続できるように設計されています。