ケーススタディー

CloudflareでDockerによるマルチアーキテクチャ開発の俊敏性を実現

Cloudflareについて: Cloudflareは、コネクティビティクラウドのリーディングカンパニーであり、組織が複雑さとコストを削減しながら、従業員、アプリケーション、ネットワークをあらゆる場所でより速く、より安全にすることを可能にします。
産業: インターネットセキュリティとパフォーマンスサービス
企業規模:3、600+
場所:本社は米国カリフォルニア州サンフランシスコにあり、120か国以上で利用可能です

ハイライト

  • Cloudflareは、毎日平均 1、500 つの異なるDockerイメージをプッシュしています
  • 6、000+マルチアーキテクチャイメージは、DockerのマニフェストリストとARMサポートで管理されます
  • コンテナ化されたインフラストラクチャを最適化しながら、120+国の320都市にサービスを提供

概要

接続クラウドのリーディングカンパニーであるCloudflareは、世界中のユーザーに高速で安全なインターネット体験を提供しています。 Cloudflareは、ネットワークを介して大量のグローバルインターネットトラフィックが流れる中、インフラストラクチャの効率と信頼性を向上させるための革新的なソリューションを継続的に模索しています。

Cloudflare は、NYSEで取引される23 億ドルのテクノロジー大手に急速に成長し、世界最大かつ最も強力なクラウドネットワークの1つを構築しました。 そのグローバルなフットプリントは、120か国以上の320以上の都市に広がっています。中核となるのは、13以上の000ネットワークと相互接続された320都市のデータセンターであり、Dockerはそれらに展開されるアプリケーションの基盤です。

DDoS攻撃対策やコンテンツ配信などのCloudflareのサービスを支えているのは、 100Tbpsを超えるスループットという驚異的なネットワーク容量です。 その約 70%は、 8以上の800 ネットワークとのプライベート相互接続を介して流れますが、同社のエニーキャストネットワークは、 600+インターネットエクスチェンジを利用して、 37 Tbps以上のボリューム型攻撃を吸収します。 このように、大規模に分散されたプレゼンスと帯域幅のスケーラビリティを組み合わせることで、Cloudflareは世界中のお客様に低レイテンシーのパフォーマンスとセキュリティを提供することができます。

Cloudflareの成功の中心にあるのは、専任のエンジニアチームです。 Sanchita Agarwalは、CloudflareのDevToolsチームとしても知られる開発者生産性チームのシニアソフトウェアエンジニアです。 Agarwal 氏と彼女のチームは、セルフサービスの開発ツールと環境を通じて生産性を高める上で重要な役割を果たしています。 彼らの使命は、ソフトウェア開発ライフサイクル(SDLC)全体を通じて会社全体のエンジニアを支援し、すべての重要なサービス、セルフホストCI/CDプラットフォーム、およびインフラストラクチャがスムーズに実行されるようにすることです。

DevToolsチームは、Cloudflareのエンジニアリングエコシステムのバックボーンであり、開発者の生産性を最適化するために必要なツール、フレームワーク、サポートを提供しています。 さまざまなエンジニアリングチームと緊密に連携して、独自の要件を理解し、効率を高め、ワークフローを合理化するカスタマイズされたソリューションを提供します。 DevToolsチームは、インフラストラクチャ管理の複雑さを抽象化し、直感的なツールを提供することで、エンジニアがコードを書き、Cloudflareの顧客に価値を提供するという最も得意なことに集中できるようにします。

CloudflareとDockerの関係は、 2014年6月にDocker Hubに加わった初期の頃にさかのぼります。 初期の段階では、新しいDocker製品やサービスの多くが登場する前からDockerを使用していました。 コンテナ化テクノロジーをいち早く採用したCloudflareは、アプリケーションの開発、デプロイ、管理の方法に革命をもたらすDockerの可能性を認識していました。 Dockerを Docker Business の顧客として採用することで、Cloudflareはエンジニアリングエコシステム全体を再構築する変革の旅に着手しました。

問題

異なるアーキテクチャの 1人以上の000 開発者にセルフサービスを提供

Cloudflareは、グローバルなプレゼンスと顧客基盤を拡大するにつれて、膨大なネットワークインフラストラクチャを効率的に管理および展開するという課題に直面しました。 0001人以上のエンジニアが重要なサービスに取り組み、エッジのノード数が急速に増加しているため、Cloudflareは開発およびデプロイプロセスを合理化するソリューションを必要としていました。同社は、冗長性を減らし、リソース使用率を最適化し、多様なエコシステム全体で一貫性を確保することを目指していました。

Cloudflareのエンジニアリングチームは、複数の環境を管理し、異なるシステム間で互換性を確保するという複雑な課題に取り組んでいました。 Cloudflareが成長し拡大するにつれて、その技術スタックは、マルチアーキテクチャイメージのタグ付けを処理するために、より多くのサポートを必要としていました。 彼らは、マルチアーキテクチャのイメージを管理するための単一のソリューションを探しており、それをインフラストラクチャ、特にARMに追加していました。

Cloudflareは、俊敏性と効率性を維持するためには、新しいツールや、ニーズの拡大に合わせて拡張できる既存のツールを倍増させる必要があることに気付きました。 彼らは、Dockerが競争力を維持し、優れた顧客パフォーマンスを提供するのに役立つと信じていました。

解決

Dockerの力を活用してシームレスなアプリケーション配信を実現

Cloudflareは、アプリケーションの開発とデプロイのアプローチを拡大するためにDockerに目を向けました。 2017年、Dockerはマニフェストリストを導入し、Cloudflareはマルチアーキテクチャイメージの管理に迅速に2018を活用しました。この機能により、各アーキテクチャのマニフェストを生成し、同じ名前とバージョンでイメージにタグを付け、Docker デーモンがアーキテクチャに基づいてイメージをプルできるようになりました。

Dockerのポータブルコンテナにより、エンジニアはアプリケーションとその依存関係を、すべての環境で一貫性のある標準化されたユニットにパッケージ化することができました。 このアプローチにより、異なる環境間での統一性が促進され、開発ワークフローが大幅に合理化されます。 Dockerのコンテナ化テクノロジーを採用することで、Cloudflareは新たなレベルの効率性と俊敏性を実現しました。

主な利点

マルチアーキテクチャ・イメージのサポート

Dockerがマニフェストリストを使用したマルチアーキテクチャイメージをサポートしていることは、Cloudflareにとって画期的なことでした。マニフェストリストが導入される前は、Cloudflareは、ベースイメージだけが異なる場合でも、アーキテクチャごとに異なるタグを持つ複数のイメージを管理する必要がありました。このアプローチにより、アーキテクチャごとに異なるバージョンとタグを持つイメージが急増し、イメージ管理の複雑さと冗長性が増大しました。

Dockerの継続的なイノベーションを活用

Cloudflareは、Dockerの継続的なイノベーションへの取り組みに特に感銘を受けており、それはマニフェストリストやBuildXなどのツールの継続的な機能強化に表れています。2017で導入されたマニフェストリストは、さまざまなアーキテクチャ間でのCloudflareのイメージ管理を大幅に簡素化しました。また、Cloudflareは、Dockerが市場にもたらした別の改善であるIPv6 ネットワーク機能を活用して、CIエージェント内に新しいネットワークを確立しました。この機能は、IPv6 ネットワーク上でのアプリケーションのデプロイとテスト、互換性の強化、Cloudflareのサービス範囲をIPv6依存環境に拡大するために重要でした。

開発および展開プロセスの合理化

Dockerのコンテナ化技術により、Cloudflareのエンジニアはアプリケーションとその依存関係を標準化されたユニットにパッケージ化し、異なる環境間での一貫性を確保できます。このアプローチにより、開発とデプロイのプロセスが合理化され、複雑なアプリケーションスタックのセットアップと管理に必要な時間と労力が削減されます。

拡張性と柔軟性の向上

Dockerのポータビリティと柔軟性により、Cloudflareはお客様の高まる要求に合わせてアプリケーションとサービスを簡単に拡張できます。コンテナ化により、AMDやARM64など、さまざまな環境やアーキテクチャ間でのアプリケーションの迅速なデプロイとスケーリングが可能になり、Cloudflareは変化するビジネス要件に対応するために必要な俊敏性を得ることができます。

オーケストレーションのためのKubernetesとのシームレスな統合

Dockerは、主要なコンテナオーケストレーションプラットフォームであるKubernetesと統合されています。 Cloudflareは、この統合を活用して、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化します。 Kubernetesは、Dockerコンテナをオーケストレーションするための堅牢でスケーラブルなフレームワークを提供し、Cloudflareがインフラストラクチャを大規模に効率的に管理できるようにします。

 

Cloudflare全体でのDockerの利用状況
Cloudflareは 、Docker Compose を多用して、マルチコンテナアプリケーションを定義して実行しています。同社は、エンジニアが日常のタスクや構成を簡単に再利用できるように、Docker Composeを中心にラッパーツールを構築しました。このアプローチにより、複雑なアプリケーションスタックの設定と管理に必要な時間と労力が大幅に削減されます。Dockerは、インフラストラクチャ管理の複雑さを抽象化することで、Cloudflareのエンジニアがコードの記述と顧客への価値提供に集中できるようにします。

DevTools チームは、エンジニアの生産性と自律性を高めるセルフサービス開発プラットフォームの作成に不可欠です。 Dockerコンテナのラッパーとして機能する革新的なアプリケーションを構築し、インフラストラクチャ管理の複雑さを抽象化しました。 これらのアプリケーションは、エンジニアが開発環境を立ち上げ、テストを実行し、コードを迅速にデプロイするためのユーザーフレンドリーなインターフェイスを提供します。

このセルフサービスプラットフォームが開発者の幸福度に与える影響は、いくら強調してもし過ぎることはありません。 エンジニアは、インフラストラクチャのプロビジョニングを待ったり、環境の問題のトラブルシューティングに時間を費やしたりする必要はありません。 コードをすばやく反復し、変更をテストして、自信を持って本番環境にデプロイできます。 このレベルの自律性と効率性は、開発者の満足度と生産性につながり、Cloudflareとその顧客にとってより迅速なイノベーションとより良い結果につながっています。

Cloudflareとオープンソースの透明性
CloudflareにとってのDockerの重要な利点の1つは、その活気に満ちたオープンソースコミュニティと透明性の高い開発プロセスです。Docker コミュニティは、世界中の開発者がプロジェクトに貢献し、専門知識を共有している積極的な関与で知られています。

CloudflareはDockerコミュニティに積極的に参加し、 Docker Hub にベースイメージを提供し、他のユーザーと交流して知識やベストプラクティスを共有しています。 同社は、マニフェストリストによるマルチアーキテクチャサポートの導入など、新機能や改善を声高に提唱してきました。 Dockerコミュニティの集合知を活用することで、Cloudflareはコンテナ化テクノロジーの最前線に立ち続け、最先端のソリューションをお客様に提供することができました。

Dockerプロジェクトの透明性は、Cloudflareにとって大きなメリットとなっています。Cloudflareは、オープンな開発プロセスと公開の問題追跡機能により、Dockerチームと積極的に連携し、重要な機能やバグ修正に関するフィードバックを提供することができます。このレベルの透明性により、CloudflareとDockerコミュニティとの間の信頼感と協力関係が育まれ、同社はプロジェクトの方向性に影響を与え、そのニーズが確実に満たされるようにすることができます。

結果

比類のない速度と効率の向上

Dockerを採用することで、Cloudflareは速度と効率の面で目覚ましい成果を達成しました。 同社は現在、毎日平均 1、500 つの異なる画像をプッシュしており、短いタグと長いタグを考慮すると、 6以上のマルチアーキテクチャ画像000 に変換されます。 このレベルの生産性は、Dockerなしでは考えられなかったでしょう。

Agarwal 氏が説明しているように、「マニフェストリストがなければ、異なるバージョンの 1 つのイメージがあり、各イメージは基本的に、タグ内で異なるアーキテクチャを持つ 1 つのイメージとして機能します。 エンジニアは、それらの画像を引き出す責任があります。」

Dockerのおかげで、Cloudflareのエンジニアはイノベーションに集中し、顧客に価値を提供できるようになりました。 コンテナを迅速に起動し、アプリケーションをローカルでテストし、シームレスにデプロイできるため、開発サイクルが大幅に短縮されました。 エンジニアは、より迅速にイテレーションを行い、新しいアイデアを試し、顧客のニーズに迅速に対応できるようになりました。 この速度の向上により、Cloudflareは競合他社の一歩先を行き、プラットフォームに新機能と改善を継続的に提供できるようになりました。

Cloudflareは今後も、Dockerの機能を活用する新しい方法を模索し続けます。 同社は、CI/CDパイプラインをさらに最適化するために、Docker-in-Dockerソリューションを積極的に調査しています。 Cloudflareは、Dockerコンテナ内でDockerを実行することで、ビルドとデプロイのプロセスを合理化し、イテレーションの高速化とリソース利用の効率化を実現することを目指しています。 この継続的な調査は、コンテナ化テクノロジーの可能性の限界を押し広げるというCloudflareのコミットメントを示しています。

CloudflareのDockerへの道のりは、商用オープンソースとコミュニティ主導のイノベーションがもたらす変革力の証です。 Dockerを採用し、その活気あるエコシステムに積極的に関与することで、Cloudflareは前例のない速度、効率、スケーラビリティのレベルを実現しました。 同社のサクセスストーリーは、インフラストラクチャをモダナイズし、進化し続ける技術環境で優位に立ち続けようとしている他の組織に刺激を与えています。

Dockerを開発者エクスペリエンス向上のパートナーとして迎えることで、Cloudflareは将来の課題に取り組み、CDN分野のリーダーであり続けることができる体制を整えています。 透明性、コラボレーション、継続的な改善に対する同社の取り組みは、Dockerコミュニティの価値観と完全に一致しています。 Cloudflareが革新を続け、可能性の限界を押し広げる中で、Dockerとのパートナーシップがインターネットの未来を形作る上で重要な役割を果たすことは間違いありません。

「マニフェストリストのような新しいDocker機能が継続的に追加されることで、ユーザビリティが大幅に向上し、より直感的で効率的になりました。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「Docker を使用すると、冗長性とコストを削減できます。処理やストレージの使用量自体だけでなく、Docker の使いやすさにより、他のリソースの量と投資する時間が削減されるため、コストが削減されます。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「マニフェストリストがなければ、異なるバージョンのイメージがあり、各イメージはタグ内に異なるアーキテクチャを持つ単一のイメージとして機能します。そして、エンジニアはそれらの画像を引き出す責任があります。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「Docker は多くのことを可能にし、常に改善しています。そして、ドキュメントを見るたびに、これは新しいなと思うんです。知らなかった」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「Docker には大きなコミュニティがあり、優れたサポートと透明性があります。信頼の観点からは、Docker の使用を開始する必要があります。使い始めると、(Docker によって速度が大幅に向上します) ことに気付きます。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「誰もが大規模なデプロイにDockerを使用しています。私は学生の頃から使っていますが、アプリケーションの開発とデプロイに代わるものは見当たりません。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「Dockerはこの旅で私たちを助けてくれました。CloudflareはDockerとともに成長しました。他のものを使うなんて想像もできません」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「欠陥を見つけて実際に対処し、その問題から元に戻したり、根本原因にデバッグしたりできることは、Dockerをユニークなものにしている非常に興味深い点の1つです。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

「Docker が絶えずクールなものを考え出しているのは、とても素晴らしいことです。私たちは新機能のリクエストをプッシュし、それらを公開して追跡することができます。」

サンチタ・アガルワル

Cloudflareのシニアソフトウェアエンジニア

自分に合ったサブスクリプションを見つける

今すぐ専門家に連絡して、Dockerサブスクリプションのコラボレーション、セキュリティ、サポートの完璧なバランスを見つけてください。