システム刷新から得られたクラウド活用の知見
このシステム基盤刷新で、川崎氏をはじめとしたリプレースチームはどのような学びを得てきたのだろうか。
まず、「クラウドは不安定(であるという前提で考える)」という観点だ。「クラウドは永遠のベータ版」といわれるように、常に機能のアップデートがくり返されている。これは、利便性が向上し続けることを意味する一方で、対象リソースの挙動が不安定になることとも隣り合わせである。
また、多くの場合クラウド環境のリソースは完全専有型ではなく、共有型・相乗り型である。ゆえに、他の利用者のアプリケーション高負荷などが原因となって「うるさい隣人問題(Noisy Neighbors)」が発生しうることは意識しておかなければならない。
「クラウドは共有責任モデル」だという前提もある。これはクラウドベンダーと利用者の管理権限に応じた責任分担の考え方だ。「あるレイヤーまではクラウドベンダーが責任を保つが、他のレイヤーに関してはユーザーも責任を持つ必要がある」という思想である。利用者たちは、多かれ少なかれ管理責任が自分たちにもあることを認識し、オーナーシップを持って対策を行うことが肝要となる。
「これらの前提を踏まえてシステム基盤を構築するには、『堅牢性より回復性(Design for Resiliency)』を意識することが重要です。つまり、落ちないシステムをつくるのではなく、落ちることを前提として回復しやすいシステムを設計する、ということです。
どのような要件を満たすべきかについては、マイクロソフトが『アプリケーション回復性パターン』というドキュメントを公開していますから、ぜひ参考にしてみてください。『ZOZOTOWN』の参照系APIシステムの刷新においては、APIに以下のような機能を持たせることで、回復性の担保に努めました」(川崎氏)
「クラウドリソースは有限」だと意識するのも大切である。クラウドリソースはあくまで物理資源をソフトウェアで仮想化・抽象化しているものである。いつでも期待通りにリソースが確保できるとは限らない。Virtual Machineの作成やスケール変更に失敗することもある。
とりわけ、クラウドベンダーの需要予測を上回るような高負荷が発生する際には、トラブル発生を警戒すべきだ。大量のリソースが必要だと事前にわかっている場合には、クラウドベンダーにあらかじめリソース確保の相談をするのが有効な策である。
また、運用において「不確定要素(Chaos)」が生じることもある。
「かつて、『ZOZOTOWN』の主要なセールイベントにおいて、事前に十分な準備を行ったにもかかわらず、想定通りの結果が得られなかったことがありました。想定を超えるアクセス数・アクセスパターンや、想定外のボトルネックなど、不確定要素が発生することを考慮し、問題が発生してもサービスを継続できるように備えておきましょう。『不確定に備える』という意味においては、『カオスエンジニアリングの5原則』の考え方が非常に参考になります」(川崎氏)
カオスエンジニアリングの5原則
- 定常状態における振る舞いの仮説を立てる
- 実世界の事象は多様である
- 本番環境で検証を実行する
- 継続的に実行する検証の自動化
- 影響範囲を局所化する
また、「クラウドは決して安くない」と理解することも重要である。オンプレは減価償却モデルであり、クラウドは従量課金モデルだ。長期的に見れば、クラウド移行がコスト削減にはつながらないケースも多い。
クラウドの本来の強みはそこではなく、可用性の担保やセキュリティ対応の省力化、サービスの市場投入速度の短縮化、自動化との相性の良さといった点にある。「クラウドの導入によって、自分たちは何を解決したいのか」を考えるべきなのだ。
川崎氏は最後に、クラウドを利用する場合の「学習の基本姿勢」について言及した。
「クラウドプラットフォームでは新しい機能が次々に登場しますから、それらの技術を使いこなすには利用者が着実にキャッチアップしていく姿勢が必要です。SIerやベンダーサポートへの丸投げ方式では、開発のスピード感を保つことは難しくなります。
グローバルの潮流としても、自社で知識のキャッチアップを行い、内製型のサービス開発を行うような成功モデルが確立されつつあります。クラウドネイティブの世界においては『自分たちで闘う』という基本姿勢を持つことが重要です」(川崎氏)
クラウドは決して銀の弾丸ではない。多大なる利点がある一方で、欠点も持ち合わせている。その前提を踏まえて、導入を進めることが肝となる。クラウドネイティブの現代において、「クラウドの特性を正しく理解し、正しく活用すること」の重要性が伝わるセッションとなった。
お問い合わせ
日本マイクロソフト株式会社
-
【クラウドデベロッパーちゃんねる】
- クラウドを使って開発するITの開発者・デベロッパーの皆様へ様々な技術情報をお届けするYouTubeチャンネル
-
【Microsoft Learn】
- Microsoft Azureについて学習できる無料のオンライン トレーニング コンテンツ一覧
-
【開発者コミュニティ ニュースレター】
- マイクロソフトが配信しているニュースレターで、最新テクノロジ記事、技術ドキュメント、および開発者イベントなど、世界の情報を月イチで配信
株式会社ZOZOテクノロジーズ