全1954文字
PR

 コンテナには開発生産性の向上、拡張性と可用性の向上、コストの低減といったメリットがある。これらを享受するにはシステムの開発と運用のやり方を変える必要がある。基本といえるCI/CD(継続的インテグレーション/継続的デリバリー)以外に、先行ユーザーの事例から、汎用的な活用法である「迅速スケール」「最適サイジング」、応用的な活用法といえる「クラウド乗り換え」「コンテナ納品」という4つの活用法が浮かび上がった。今回は迅速スケールを取り上げる。

負荷が急増すればすぐ台数を自動追加

 ZOZOは従来、ファッション通販サイト「ZOZOTOWN」のシステムをオンプレミスの仮想環境で運用してきた。2020年11月現在、同システムのクラウド移行を段階的に進めている。移行に合わせてモノリシック(一枚岩)だったアプリケーションをマイクロサービスアーキテクチャーで作り直し、クラウドでは主にコンテナで稼働させる。

図 ZOZOTOWNの新システムの構成
図 ZOZOTOWNの新システムの構成
負荷変動の大きい機能からコンテナを適用(出所:ZOZOテクノロジーズの資料を基に日経コンピュータ作成)
[画像のクリックで拡大表示]

 移行先のメーンのクラウドはAWS(Amazon Web Services)だ。コンテナ管理はKubernetesベースの「Amazon EKS(Elastic Kubernetes Service)」を用いる。

 既に、アプリケーションの各種機能をAPI(アプリケーション・プログラミング・インターフェース)で呼び出す窓口となるAPIゲートウエイ、商品情報の参照API、ID管理などの機能をコンテナで稼働させている。「ビジネス戦略上重要で、負荷の変動が大きくクラウドのスケールメリットが生かせる機能を優先した」とZOZOテクノロジーズの川崎庸市技術開発本部SRE部ECプラットフォームチームテックリードは話す。今後は「ショッピングカート」などトランザクションが発生する機能もコンテナに載せる計画だ。

 ZOZOがコンテナを採用した理由の1つは、スケールイン・アウト(縮小・拡大)の迅速さだという。システムの負荷の増減に合わせて、コンテナの台数を素早く増減できる。

 ZOZOTOWNは年に4回の大型タイムセールや「福袋」などの販促イベントのたび、アクセスが急増する。従来はピークに耐えられるよう物理サーバーを増強していた。そのため、通常時はリソースの余剰が生じていた。

 AWS上に構築したコンテナ基盤では、負荷に合わせてコンテナの数を自動的に追加/削除する「オートスケール」を使う。EKSが備える機能だ。これにより、「負荷に合わせた増強が自動化され、ランニングコストの低減につながった」(川崎テックリード)。

 オートスケールの機能は、コンテナでなくても仮想マシン「Amazon EC2」でも利用できる。しかし「仮想マシンのオートスケールでは急激なアクセス増に対応できないことがある」(川崎テックリード)。仮想マシンは起動に分単位の時間がかかり、負荷急増が起きて仮想マシンを増やしたときには負荷が下がっていることがあった。

 一方のコンテナのスケールイン・アウトは10秒単位だという。「負荷急増にも迅速に対応できるようになる」(川崎テックリード)。