SHOEISHA iD

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

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

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

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

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

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

 システム開発・運用の現場では徐々に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、ミドルウェアの故障やメンテナンスへの意識が不要になる

次のページ
Azure App Serviceが実装するNoOpsの機能

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

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

もっと読む

この記事の著者

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

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

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10716 2018/03/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング