SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2020】セッションレポート (AD)

オンプレからマルチクラウドへ――ZOZOTOWNの事例に学ぶシステム基盤刷新の秘訣【デブサミ2020】

【13-A-4】我々はZOZOTOWNのクラウドジャーニーを通じて何を学んだのか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

システム刷新から得られたクラウド活用の知見

 このシステム基盤刷新で、川崎氏をはじめとしたリプレースチームはどのような学びを得てきたのだろうか。

 まず、「クラウドは不安定(であるという前提で考える)」という観点だ。「クラウドは永遠のベータ版」といわれるように、常に機能のアップデートがくり返されている。これは、利便性が向上し続けることを意味する一方で、対象リソースの挙動が不安定になることとも隣り合わせである。

 また、多くの場合クラウド環境のリソースは完全専有型ではなく、共有型・相乗り型である。ゆえに、他の利用者のアプリケーション高負荷などが原因となって「うるさい隣人問題(Noisy Neighbors)」が発生しうることは意識しておかなければならない。

 「クラウドは共有責任モデル」だという前提もある。これはクラウドベンダーと利用者の管理権限に応じた責任分担の考え方だ。「あるレイヤーまではクラウドベンダーが責任を保つが、他のレイヤーに関してはユーザーも責任を持つ必要がある」という思想である。利用者たちは、多かれ少なかれ管理責任が自分たちにもあることを認識し、オーナーシップを持って対策を行うことが肝要となる。

 「これらの前提を踏まえてシステム基盤を構築するには、『堅牢性より回復性(Design for Resiliency)』を意識することが重要です。つまり、落ちないシステムをつくるのではなく、落ちることを前提として回復しやすいシステムを設計する、ということです。

 どのような要件を満たすべきかについては、マイクロソフトが『アプリケーション回復性パターン』というドキュメントを公開していますから、ぜひ参考にしてみてください。『ZOZOTOWN』の参照系APIシステムの刷新においては、APIに以下のような機能を持たせることで、回復性の担保に努めました」(川崎氏)

参照系APIに持たせた回復性機能。
参照系APIに持たせた回復性機能。

 「クラウドリソースは有限」だと意識するのも大切である。クラウドリソースはあくまで物理資源をソフトウェアで仮想化・抽象化しているものである。いつでも期待通りにリソースが確保できるとは限らない。Virtual Machineの作成やスケール変更に失敗することもある。

 とりわけ、クラウドベンダーの需要予測を上回るような高負荷が発生する際には、トラブル発生を警戒すべきだ。大量のリソースが必要だと事前にわかっている場合には、クラウドベンダーにあらかじめリソース確保の相談をするのが有効な策である。

 また、運用において「不確定要素(Chaos)」が生じることもある。

 「かつて、『ZOZOTOWN』の主要なセールイベントにおいて、事前に十分な準備を行ったにもかかわらず、想定通りの結果が得られなかったことがありました。想定を超えるアクセス数・アクセスパターンや、想定外のボトルネックなど、不確定要素が発生することを考慮し、問題が発生してもサービスを継続できるように備えておきましょう。『不確定に備える』という意味においては、『カオスエンジニアリングの5原則』の考え方が非常に参考になります」(川崎氏)

カオスエンジニアリングの5原則
  1. 定常状態における振る舞いの仮説を立てる
  2. 実世界の事象は多様である
  3. 本番環境で検証を実行する
  4. 継続的に実行する検証の自動化
  5. 影響範囲を局所化する

 また、「クラウドは決して安くない」と理解することも重要である。オンプレは減価償却モデルであり、クラウドは従量課金モデルだ。長期的に見れば、クラウド移行がコスト削減にはつながらないケースも多い。

 クラウドの本来の強みはそこではなく、可用性の担保やセキュリティ対応の省力化、サービスの市場投入速度の短縮化、自動化との相性の良さといった点にある。「クラウドの導入によって、自分たちは何を解決したいのか」を考えるべきなのだ。

 川崎氏は最後に、クラウドを利用する場合の「学習の基本姿勢」について言及した。

 「クラウドプラットフォームでは新しい機能が次々に登場しますから、それらの技術を使いこなすには利用者が着実にキャッチアップしていく姿勢が必要です。SIerやベンダーサポートへの丸投げ方式では、開発のスピード感を保つことは難しくなります。

 グローバルの潮流としても、自社で知識のキャッチアップを行い、内製型のサービス開発を行うような成功モデルが確立されつつあります。クラウドネイティブの世界においては『自分たちで闘う』という基本姿勢を持つことが重要です」(川崎氏)

 クラウドは決して銀の弾丸ではない。多大なる利点がある一方で、欠点も持ち合わせている。その前提を踏まえて、導入を進めることが肝となる。クラウドネイティブの現代において、「クラウドの特性を正しく理解し、正しく活用すること」の重要性が伝わるセッションとなった。

お問い合わせ

 日本マイクロソフト株式会社

  • 【Microsoft Learn】
    • Microsoft Azureについて学習できる無料のオンライン トレーニング コンテンツ一覧

 株式会社ZOZOテクノロジーズ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2020】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11990 2020/03/13 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング