Title: ZOZOTOWNのクラウド活用戦略
Event: Tech-on MeetUp Online#03「マルチクラウドで解決するものしないもの 〜エンタープライズにおけるマルチクラウドのリアル〜」
https://techplay.jp/event/793105
ZOZOTOWNのクラウド活用戦略 Tech-on Meetup Online#3「マルチクラウドで解決するものしないもの 〜エンタープライズにおけるマルチクラウドのリアル〜」株式会社ZOZOテクノロジーズ SRE部 川崎庸市 @yokawasa Copyright © ZOZO Technologies, Inc.
View Slide
© ZOZO Technologies, Inc.株式会社ZOZOテクノロジーズSRE部川崎 庸市 Yoichi Kawasaki株式会社ZOZOテクノロジーズ SRE部所属のエンジニア。過去に国内大手インターネット企業にて大規模サービスの基盤プラットフォーム開発に従事、外資系ソフトウェアベンダーにてエンタープライズ検索製品のコンサルやクラウドサービスのアーキテクチャ策定支援に従事。現在はインフラ運用の自動化・効率化が目下の関心事。業務外ではNoOps Japanコミュニティーの運営に従事。趣味はサウナ。 2Twitter / GitHub: @yokawasa
© ZOZO Technologies, Inc.https://zozo.jp/ ● 日本最大級のファッション通販サイト ● 1,300以上のショップ、7,900以上のブランドの取り扱い(ともに2020年6月末時点) ● 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着商品を掲載 ● 即日配送サービス ● ギフトラッピングサービス ● ツケ払い など 3
© ZOZO Technologies, Inc.4ZOZOTOWNリプレイスの歴史
© ZOZO Technologies, Inc.ZOZOTOWNのクラウドリプレイスの背景 5ZOZOTOWN運営開始クラウドリプレイス開始マイクロサービス アーキテクチャに移行開始2004年 2018年 2020年オンプレミス オンプレ+クラウド(ハイブリッド)● ビジネスの拡大● 求められる市場投入スピード● 高まるインフラの拡張性・俊敏性の要求● 巨大化するモノリス● コードの肥大化、特定技術への依存
© ZOZO Technologies, Inc.アーキテクチャーの変遷 オンプレからクラウドベースに、モノリスからマイクロサービスへ6フロントエンド統合DBフロントエンドAPI / BFFフロントエンドAPI GatewayAPIDBDBAPI API API APIオンプレDCクラウドマイクロサービス化参照・書き込みすべてAPI化Read Only Read & WriteAPIはサービスごとに独立しDBも分離弾力性・可用性を要する参照系機能をAPI化してクラウドで提供書き込み系はオンプレBFF絶賛取り組み中レプリケーションリプレイス開始前① ② ③ロジックがDBに載っている(ストアド)
© ZOZO Technologies, Inc.7IIS (ASP)ROロジックがDBに載っている(ストアド)ロジック(表示と処理が混在)DB接続ストアドiOS AndroidPCブラウザクラウドリプレイス前 データの読み書きがDBと一体化されている状態ストアド ストアド ストアド
© ZOZO Technologies, Inc.8新フレームワークロジック(Web表示のみ)ユーザーサービスROお気に入りサービスRW商品サービスRWネイティブアプリはAPI直呼び出しPCブラウザiOS AndroidWebのUIに新技術が使えるようになるそれぞれのAPIが独立したサービスに= マイクロサービス化API Gatewayデータの読み書きがすべてAPI化されている状態= マイクロサービス化されている状態目指す姿ID認証サービスRW
© ZOZO Technologies, Inc.9https://speakerdeck.com/kameikki/authentication-service-replacement-and-security-efforts-of-zozotown-cndt2020ZOZOTOWNリプレイスやID基盤の取り組みに関する詳細はこちらをご資料にしてください
© ZOZO Technologies, Inc.10クラウド活用 〜方針と学び〜 ZOZOTOWNにおけるクラウド活用方針とクラウドリプレイスで得た知見
© ZOZO Technologies, Inc.ZOZOTOWNにおけるクラウドテナンシーの方針 ● 基本はシングルクラウド○ まずはシングルクラウドでアプリやインフラの信頼性の向上に集中○ できることはたくさんある:マルチAZ・リージョンの可用性構成、回復性設計、運用基盤・体制強化● 要件に応じてマルチクラウドを検討○ シングルクラウドでは実現できない高い信頼性が必要とされる場合において、信頼性とコストのトレードオフを考慮しマルチクラウドを検討する○ コストとは学習コスト、設計・運用コスト、設備コストなど11
© ZOZO Technologies, Inc.マイクロサービス基盤のシングルクラウド可用性設定例 12● ロードバランサー(ALB):○ 3AZ可用性構成● NAT Gateway:○ AZごとに作成(全体で1つを共有しない)● Amazon EKS:○ コントロールプレーン(マネージド)■ マスターコンポーネント(api server、etcdなど)の3AZ可用性構成○ ワーカーノード■ 3AZ構成のAuto Scalingグループ(ASG)の一部として展開■ マネージドノードグループによるワーカーノードのAZ分散配置
© ZOZO Technologies, Inc.ZOZOTOWNにおけるクラウド利用パターン ● ハイブリッド○ オンプレF/EとクラウドのAPIやデータ基盤の連携○ オンプレのサーバ仮想環境をクラウドに拡張(VMware Cloud on AWS)● シングルクラウド○ マイクロサービス主要機能(AWS)、データ基盤(GCP)● マルチクラウド○ パーソナライズ検索基盤:検索機能をAWSとGCPでマルチクラウドで提供13
© ZOZO Technologies, Inc.マルチクラウド活用例 - パーソナライズ検索 利用者の行動履歴・属性を元にパーソナライズされたおすすめ順機能のための仕組み14● オンプレのフロントエンドはAWS上に構築されたAPIを通じて検索結果を取得● 検索エンジンはElasticsearch(Elastic Cloud)で、負荷分散・可用性向上のためAWSとGCPに構築● APIはAWSとGCP上のElasticsearchに対してクエリを発行● 検索データ更新処理のためのデータ基盤はGCPに構築● オンプレ・クラウド間は専用線接続● ZOZOTOWNの検索基盤におけるElasticsearch移行で得た知見 https://techblog.zozo.com/entry/migrating-zozotown-search-platform● ZOZOTOWNを支える検索パーソナライズ基盤 https://speakerdeck.com/dama_yu/zozotech-gcp-01
© ZOZO Technologies, Inc.15フロント(ASP)APIGatewayAPI/BFFBigQuery App Engine更新対象取得 更新更新SQLServerSQLServerCDC検索データ更新のための仕組みレプリケーション専用線専用線クライアントパーソナライズ検索全体図ZOZO DCGCPAWS● AWSとGCP上のElasticsearchに対してクロスクラウドでクエリを発行● 失敗したらクラウド間でリトライ( Elastic Cloud )( Elastic Cloud )
© ZOZO Technologies, Inc.一般論 - マルチクラウドのメリット・デメリット ● 信頼性向上○ リスク分散○ 可用性向上● 柔軟な選択肢○ 可搬性確保○ ベンダーロックイン回避16● アーキテクチャの複雑化● コスト増の可能性○ 学習コスト○ 運用コスト○ インフラコストメリット デメリット
© ZOZO Technologies, Inc.ZOZOTOWNリプレイスで得たマルチクラウド知見 ● 信頼性○ 単一クラウドのSLAを越える信頼性確保が可能になる。ただし、中途半端な複数クラウド活用は逆に信頼性低下になる可能性がある● 制約条件○ 選択肢は増える一方、効率性、共通化やベンダーロックイン回避のために特定クラウドに依存しない選択を取ることでシングルクラウド以上に制約条件が増え、また最大公約数のメリットしか得られない可能性がある● アーキテクチャの複雑化・学習コスト増がもたらす主な弊害○ アジリティが低下してビジネスチャンスを逃す可能性がある17求められるビジネス要件、得られる信頼性、必要とするコスト、開発体制、習熟度レベルなどのトレードオフで考えるべき
© ZOZO Technologies, Inc.18クラウド活用 〜実践〜 サイトの信頼性を高めつつ効果的にクラウドを活用するために実践していること
© ZOZO Technologies, Inc.N%リリースによる段階的な移行 ● サブシステムごとに段階的(N%: 0→100)にクラウドベースに移行● 新規システムではなく既存サービスを回しながらの段階的移行(ストラングラーパターン)であるため、移行期間中のシステム全体の複雑性は高くなり、リスク要因が多いことが特徴● 基本的にクラウドで構築するアプリはコンテナーベースで、アプリ基盤にKubernetesを採用したクラウドネイティブを前提とする19ストラングラーパターンのイメージ
© ZOZO Technologies, Inc.利用技術・ツール選定方針 信頼性・柔軟性・コストなどを考慮したケースバイケースの選択● マネージドサービスの活用○ 運用負荷軽減、ポータビリティなどが考慮ポイント○ 必要に応じて自作も考える● オープンソース、またはオープンソース互換の採用● 特定クラウドに依存する技術・ツールも必要に応じて採用○ ステートレスなアプリ基盤に対しデータ基盤はクラウド特化になりがち20Automation / Configuration CloudFormation, TerraformObservability Datadog, Sentry, PagerDuty, CloudWatch, StackdriverCode Repo, CI/CD GitHub, GitHub Actions, CircleCIDB, Analytics RDS (SQL), Aurora (MySQL), BigQuery, AWS Athena利用ツール・サービス例
© ZOZO Technologies, Inc.堅牢性より回復性 - Design for Resiliency ● クラウドは進化(Update)し続ける ⇒ クラウドは壊れる可能性がある● 回復性を重視した設計思想○ 堅牢性より壊れること前提として、ダウンタイムやデータ損失を回避しサービス提供を維持できる回復性のための設計や仕組みを構築する● その他、回復性を支えるために重視している能力・活動○ 構成管理力(IaC、CI/CD)○ 可観測性(ログ、メトリクス、可視化、分散トレーシング)○ DevOps + サイト信頼性のためのエンジニアリング(SRE) 21
© ZOZO Technologies, Inc.構成管理の自動化の徹底 - IaCとCI/CD ● CI/CDを起点としたアプリ・インフラ環境の構築、リリース、構成変更○ コード化: IaC(Infrastructure as Code)○ リリース・構成変更作業の自動化: CI/CD● 初期コストはかかるものの得られるメリットはとても大きい○ ミスの低減、開発効率とリリーススピードの向上○ 運用・開発業務の非属人化でスケール拡大が見込める22ZOZOTOWNマイクロサービスプロジェクトにおける 継 続 的 な 改 善 を 支 えるCI/CD 戦 略https://techblog.zozo.com/entry/zozotown-cicd-strategy アプリ・インフラIaC + CI/CD例
© ZOZO Technologies, Inc.Observability 可観測性 分散アプリケーションの監視・観測の取り組み● ノード、アプリ基盤(k8s)、アプリのログやメトリクスの収集、可視化、必要に応じてアラート● 分散トレーシング23Datadog APMの例) 500エラーになったリクエストのタイムラインビュー
© ZOZO Technologies, Inc.まとめ ● ZOZOTOWNは成長を加速させるためクラウドネイティブに移行● クラウド活用方針○ まずはシングルクラウドで信頼性向上に集中し、必要に応じてマルチクラウドを検討● マルチクラウドについて○ マルチクラウドはメリットはあるものの、アーキテクチャの複雑化や運用・学習コスト増がもたらす弊害もある。さまざまなトレードオフを考慮して判断すべき● 信頼性を保ちつつ効果的にクラウド活用するために実践していること ○ 段階的な移行、技術・ツール選定方針、回復性を重視した設計思想、CI/CD、可観測性、など24
© ZOZO Technologies, Inc.25We are hiring!https://tech.zozo.com/recruit/ZOZOテクノロジーズでは、一緒にサービスを作り上げてくれる方を募集しています。ご興味がある方は以下のリンクから是非ご応募ください!