Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

NoOpsで高可用性・ハイスケールシステムを自律運用させよう! 実現に必要な3つのポイント【デブサミ2018】

【16-B-2】高可用性+ハイスケールシステムを自律運用させてみよう ~ Microsoft Azure による Serverless から NoOps への挑戦

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/03/26 14:00

 システム開発・運用の現場では徐々にAutomationやDevOpsなどの自動化ソリューションが適用されつつある。しかしただこれらを使っても、アプリケーションのバグやミドルウェアの不具合などの障害がなくなるわけではない。これらの障害を防がないと、開発者が運用を担当するDevOpsでは開発の時間が減ることになる。そこでDevOpsの一歩先の設計思想「運用レス=NoOps」を目指していくために必要な要素「自己修復(セルフヒーリング)」「無停止メンテナンス(IFR)」「アダプティブスケール」を実現するAzureの技術、およびハイスケールシステム全体での自律的システムを目指す際のポイントなどについて、日本マイクロソフト Azure テクノロジーソリューションプロフェッショナルの川崎庸市氏とゼンアーキテクツ 代表取締役兼アーキテクトの岡大勝氏が披露した。

目次
日本マイクロソフト株式会社 Azure テクノロジーソリューションプロフェッショナル 川崎 庸市氏
日本マイクロソフト株式会社 Azure テクノロジーソリューションプロフェッショナル 川崎 庸市氏
株式会社ゼンアーキテクツ 代表取締役兼アーキテクト 岡 大勝氏
株式会社ゼンアーキテクツ 代表取締役兼アーキテクト 岡 大勝氏

システムに自律運用能力を持たせるNoOps

 ゼンアーキテクツの岡氏は、2013年に日経SYSTEMSの特集「これが日本のトップアーキテクト」にて、トップアーキテクト18人の一人として選出された。Azureベースの案件も数多く手掛けており、「さまざまなプロジェクトですばらしい設計をしている」と、Azureテクノロジースペシャリストとしてクラウドベースシステムのアーキテクチャーや実装支援活動をしている川崎氏も一目置く人物だ。

 セッションはまずOpsの10年戦争を振り返ることから始まった。今も続いているOpsの10年戦争の発端となったのが、2008年の「DevOps革命」である。DevOpsはインフラのソフトウェア化により、構成変更の自動化を促進するといったもの。つまり開発~運用のライフサイクルを高速に回せるようになった。2年前にGoogleが提唱したSRE(Site Reliability Engineering:信頼性エンジニアリング)はまさにDevOpsの実装例というべきもの。「詳しくは書籍を読んでほしい」と岡氏。

 とはいえ「DevOpsやSREで障害がなくなるわけではない。アプリケーションのバグやアプリのVRのメモリリーク、ミドルウェアの不具合、ネットワーク障害などの部分をなんとかしないと、運用を担当する開発者が開発を行う時間が減る。そこで運用のための設計といった発想が必要になる」と岡氏は説明を続ける。これまでもシステム設計時に運用は考慮されてきていた。クラウド上で稼働するシステムの設計原則としてDesign for Failureがある。すべてが故障する前提で設計し、障害からの復旧を計画している。そしてこの発展系がNoOpsというわけだ。

 NoOpsはシステムに自律運用能力を持たせることで、人間による運用を最小化すること。そのためには、次の3つの能力が必要になる。「Self Healing(故障発生時のサービス無影響+自己修復の能力)」「In-Flight Renewing(変更・更新に対する無停止メンテナンスの能力)」「Adaptive Scale(負荷変動に弾力的に適応する自律的リソース調整の能力)」だ。

 NoOpsで何が得られるのか。エンドユーザーにとってはサービス停止時間が最小化され、レスポンスタイムの安定、コストも最適化される。運用担当者は、「運用業務がなくなることはないが、障害対応作業の非同期化が実現するため、障害の原因特定や再発防止策の策定業務などに、ゆっくり後から取り組めるようになる」と岡氏はそのメリットを説明する。しかもシステムは自動で回復しているので、空いた時間で開発ができる。

 NoOpsはDevOpsの発展系と説明したとおり、Design for FailureとDesign for Resiliency(回復性設計)を組み合わせて実現できるという。回復性設計では障害は起きるものとして捉え、ダウンタイムやデータ損失を回避すべく障害に対応することを目指す。最大の目的は障害発生時にもアプリケーションが完全に機能している状態を維持することだ。

 「中でも一番、回復性があるとうれしいのがミドルウェアだろう。だが自分たちのプロジェクトに自前で回復性を持たせるのは難しい。だからこそ、プラットフォームとして回復性がネイティブに実装されているマネージドサービスの利用をお勧めする」と岡氏は説明する。マネージドサービスでも単純ホスティングではなく、クラウドネイティブで回復性を実装しているServerlessを選ぶことが重要だという。

ハードウェアやOS、ミドルウェアの故障やメンテナンスへの意識が不要になる
ハードウェアやOS、ミドルウェアの故障やメンテナンスへの意識が不要になる

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:【デブサミ2018】セッションレポート

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5