【CNDW2024】クラウド環境下でコストと開発生産性の両立を追求したZOZOTOWNの事例

CloudNative Days Winter 2024において、株式会社ZOZOのEC基盤開発本部SRE部から横田拓海氏と亀井宏幸氏が登壇し、「システムリプレイスプロジェクト発足から7年、改めてコスト最適化に向き合う」と題した講演を行った。2017年から進めてきたZOZOTOWNのクラウドリプレイスの取り組みと、安定稼働・開発生産性・システム稼働コストのバランスをいかに保ち続けていくか、その中でとくに課題となってきたコスト最適化について詳しく紹介した。
7年にわたるZOZOTOWNのシステムリプレイスと課題解決への挑戦
最初に登壇したのは、EC基盤開発本部SRE部 カート決済SREブロック マネージャーの横田拓海氏。横田氏は2013年に新卒入社し、情報システム部門からキャリアをスタートしたのち、商用環境のインフラ担当を経験。オンプレからクラウドへの移行まで幅広く関わってきた。「クラウドネイティブを利活用できている状態とは何かを、改めて考えさせられる一年でした。システムの安定稼働、開発生産性、そしてシステム稼働コスト──この三つのバランスが取れていることが重要です」と、横田氏は語った。
続けてZOZOTOWNというサービスの成長を支えるインフラの変遷と、クラウドネイティブなアーキテクチャへの転換を進めてきた背景を解説し、今回のセッションでは、7年にわたる取り組みの中で得られた知見と、これから向き合うべき課題について具体的に紹介すると説明した。
オンプレミスからクラウドへ移行した背景と技術的課題の克服
ZOZOTOWNは2004年にサービスを開始し、長らくオンプレミス環境で運用されていた。成長を続ける中で、とくにシステムの安定稼働に課題が顕在化した。毎年恒例となっている元旦0時の新春セールにおいて、非常に大きなトラフィックが発生するため、毎年冬には大量のWeb・APIサーバーを手動で増設して備えていた。しかし更新系データベースについては垂直分割やスケールアップでしか対応できず、結果としてSQL Serverの分散トランザクションやレプリケーションに過度に依存する構造となっていた。そのため一つのDB障害がサイト全域に波及するリスクが常に存在していた。
同時に、開発生産性に関する問題も大きかった。開発環境と本番環境のスペック差や、コード差分検知の仕組み不足により、リリース時のトラブルが頻発していた。またVBScriptといったレガシー技術を利用していたことが新規エンジニアの採用難につながり、組織拡大や技術継承の障害となっていた。
「毎年元旦0時の新春セールに合わせてWebサーバーを増設していましたが、データベースは簡単にスケールできず、障害時には全システムに影響が出ていました」と横田氏は振り返る。
これらの課題を解決するため、2017年よりインフラとアプリケーションを刷新する大規模リプレイスプロジェクトが開始された。API Gatewayの自社開発やストラングラーパターンを活用した段階移行を進め、現在では20を超えるマイクロサービスがEKSを中心としたクラウド基盤上で稼働している。これによりシステムの安定稼働と開発生産性は大きく向上し、リプレイスの意義を裏付ける結果を生み出している。
コスト管理の不透明さと組織変化による複雑化の問題点
システムリプレイスを進める中で、安定稼働と開発生産性は着実に向上したが、最大の問題として浮かび上がったのは「なぜそのコストがかかっているかを明確にできない状態だった」ことである。横田氏は「コストを説明できないこと自体がリスクだと痛感しました」と語る。
2017年から2020年までは、一つのSREチームが全体を管理しており、どんなイレギュラーなコストが発生してもチーム内で原因を把握できる環境にあった。「リリースや負荷試験の際にかかるコストも、メンバー間で把握していました」と横田氏は当時を振り返る。
しかし事業成長に伴う人員増加や既存チームとの合併を経て、開発体制に合わせたチーム分割が進められた。2021年以降は、チームや管轄するサービスが異なっても一つのAWSアカウントとKubernetesクラスターを複数チームで共有する、いわゆるマルチテナントのような状態となった。
この結果、各チームが自分たちの利用コストに対する意識を持ちにくくなり、イレギュラーな支出の原因特定が難航するケースが増えた。予算は部単位でまとめて管理されており、見込みと実績の乖離が頻発。報告と修正を繰り返す中で経営層からの不信感が生まれるリスクも高まっていった。最悪の場合、「クラウドリプレイスそのものが失敗だったのではないか」と受け取られかねない状況に陥ったのである。
こうして負のスパイラルが顕在化する中、SRE組織は改めてコスト管理と最適化に真正面から取り組む決意を固めた。
AWSとクラウド基盤環境におけるコスト可視化の具体的手法
コスト最適化に取り組む第一歩として、SRE組織は可視化の重要性を再認識した。共通のAWSアカウントと単一のEKSクラスターを複数チームで利用しているマルチテナント環境においては、チーム単位でのコスト利用状況を把握することが困難であった。
この問題を解決するため、ZOZOはAWS Cost Explorerにおけるコスト配分タグの活用を開始した。CostEnv(環境)、CostService(サービス名)、CostTeam(管轄チーム)という3つのタグを設け、それぞれの粒度でコストをグルーピング・フィルタリングできるようにした。「タグ付けを標準化することで、初めて自分たちの使っているコストが見えるようになりました」と横田氏は語る。
さらにEKS環境内のコスト可視化に関しては別の課題があった。共通NodeGroupを利用していたため、コスト配分タグだけでは粒度の細かい分析が不可能だったのである。ここで活用されたのがKubecostである。KubecostはNamespace単位でリソース利用とコストを可視化でき、EKS上での分析に最適なツールだ。
しかしKubecostの無料版やカスタムバンドル版では過去15日間分しかデータを保持できず、長期的な分析に限界があった。そこでGitHub Actionsを活用し、Kubecost APIから日次でデータを取得しAmazon S3に保存。その後、すでに社内で利用しているSplunkと連携し、過去データも含めたダッシュボードを構築する取り組みを進めた。
「これによりようやくKubernetes環境内のコストを継続的に見える形に落とし込むことができました。施策の効果も明確に把握できるようになり、チーム内での議論も具体的になっています」と横田氏は語った。
外部通信、EKS設計、開発環境運用の最適化実践例
コストの可視化が進んだことで、SREチームは具体的な最適化施策に着手することが可能となった。3つの実践例を亀井宏幸氏が紹介した。
最初の取り組みはVPCの外部通信最適化だ。EKS上で稼働するマイクロサービスは外部通信を行うが、NAT Gateway経由の通信コストが高額になっていた。Cost ExplorerやVPCフローログを活用して調査を行った結果、AWSリソースやDatadog、GitHubへの大量通信が判明。設定漏れのあったVPCエンドポイント経由に通信を切り替えることでコストを削減した。またGitHubへの頻繁なアクセスを生むFluxのImage Update Automation(IUA)の間隔を調整し、通信量を抑制。「IUAの通信間隔を見直すだけで、通信コストが大幅に改善されました」と亀井氏は説明した。
次にEKSアーキテクチャの最適化である。従来は可用性を優先する構成で、1ノードに1つのAPI Podを配置していたためリソース効率が悪く、ノードコストとDatadogのホスト課金コストが膨らんでいた。ここにKarpenterを導入し、柔軟なオートスケールを実現。同時にPodの相乗りを許容する設計に変更し、NodePoolをテナント単位で管理するよう最適化を行った。
三つ目の取り組みは、開発環境における運用最適化である。夜間や土日は開発者が稼働しないにもかかわらず、Develop、Staging環境が常時稼働していたため、不要なコストが発生していた。そこでKEDAを利用し、スケジュールに応じて環境を停止・再稼働する自動化を導入した。さらに「停止期間中でも必要な場合は手動で起動できるツールを独自開発しました」と亀井氏は語った。
継続的な改善と経営層への信頼を見据えた今後の展望
セッションの最後に亀井氏は、これまでの取り組みを振り返りつつ、コスト最適化は一度きりの施策ではなく、継続的に取り組むべきテーマであると強調した。可視化の整備を通じて得られた知見や改善活動は次のアクションを生み出し、組織全体のコスト意識を高めていく礎となる。
「私たちは今後もクラウドネイティブ環境において、『安定稼働』『開発生産性』『納得感のある稼働コスト』の三要素をバランス良く保つことを目指して取り組んでいきます」と語り、さらに経営層からの信頼を維持するためにも、透明性のあるコスト管理と継続的な改善活動の重要性を改めて強調した。
今後もZOZOTOWNでは、システムの安定稼働と開発生産性、そして納得感のあるコストバランスを維持し続けるべく、SRE組織全体で柔軟に対応し続けていく姿勢を示してセッションを締めくくった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 【CNDW2024】GitOpsと完全プライベートEKS環境で実現する開発基盤
- CNDT 2022、DMMのアーキテクトが解説するSREと開発の責任境界とリソース管理の実際
- CNDT 2022、ArgoCDとGitHub Actionsの導入でリリース時間を1/4に削減した事例を紹介
- 地域密着型のコープさっぽろが取り組む、宅配システムの内製開発によるクラウドネイティブ化
- 【CNDW2024】ECSとCloud Runの設計思想を比較し理解を深める
- CNDT2021、ミクシィのSREによるEKS移行の概要を解説するセッションを紹介
- 【CNDW2024】Platform Engineeringの成熟度モデルごとにフェーズに応じてリファレンスアーキテクチャを提示、開発の効率化と品質向上を実現
- 【CNDW2024】PlayStation Networkの大規模Kubernetesマニフェスト管理の成功例
- 【CNDW2024】金融システムにおけるクラウドネイティブ化を実現するEKSの最前線
- CNDT 2022、ChatworkのSREがSLO策定にカオスエンジニアリングを使った経験を解説