SHOEISHA iD

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

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

キーパーソンインタビュー

マイクロサービスの失敗は技術だけの問題か――Amazonに学ぶ開発・運用組織の理想形とは

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

 開発と運用の理想的な関係とはどんな姿か。すでに「DevOps」という言葉は浸透しているものの、理想的な形で実践できているかとなると、話は別だ。現場ではどんな障壁があり、DevとOpsが分断されているのか。打開していくにはどうしたらいいのか。DevOpsという言葉が生まれる前から、その本質を実践してきたAmazonのカルチャーにヒントがありそうだ。AWSジャパン 塚田朗弘氏に聞いた。

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

今回お話を伺ったアマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 塚田朗弘氏
今回お話を伺った、アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 塚田朗弘氏

ペアで語られてしまいがちな「マイクロサービス」と「コンテナ」

 Amazonには「DevOps」や「マイクロサービス」という言葉が生まれる前から、DevとOpsを統合し、システムはAPIでやりとりするという原則がある。それを長年追求するなかで、開発カルチャーを育んできた。そんなAmazonから開発と運用の理想の形について聞いてみよう。解説してくれるのはAWSジャパンでスタートアップ企業を中心にソリューションアーキテクトとして多くの現場を支援している塚田朗弘氏だ。

 キーセンテンスとなるのはAmazonで浸透している「You build it, you run it」。直訳すると「あなたが開発し、あなたが運用する」となるが、要は「開発した人が運用しましょう」ということだ。言い換えると、Amazonがたどり着いたDevOpsの理想形は、「DevとOpsの協調や歩み寄り」などではなく、文字通り「Dev=Ops」であると言える。

 近年ではDXが喫緊の課題となり、それに不可欠なものとして開発環境やインフラの最新鋭化が注目されている。この最新鋭化を達成するには何が必要かと考えた時、マイクロサービスとコンテナを思い浮かべる人も多いだろう。しかし、そこには注意が必要だ。塚田氏は次のように説明する。

 「確かに、お客様の現場ではマイクロサービスとコンテナがペアで語られることが多いです。しかし前提としてお話ししておきたいのは、これらは基本的に別物だということです。大切なのは目的です。何のために導入するのかを明確にしておく必要があります」

 まずはマイクロサービスとコンテナをきちんと区分けするところから始めよう。マイクロサービスは独立性のある小さなサービス群であり、これらで構成されるシステムになる。対極にあるのがモノリシック(なシステム)だ。

 マイクロサービスにすることのメリットには、「開発対象を小さくして開発のスピードを高める」「サービスを分離して障害時の影響を極小化する」「開発を分離してコストを管理または最適化する」などがある。

 一方コンテナ(主にDocker以降のモダンコンテナ)はアプリケーションの可搬性を高めることや、開発環境と本番環境など、環境の差異をなくすことに役立つ。コンテナは開発者にはとても便利で有益な存在であり、生産性向上や高品質化を実現している。

 どちらもあると望ましいものといえるが、マイクロサービスはシステム構造が、コンテナはシステム環境の柔軟性が、それぞれのテーマとなる。混同してしまうと迷走してしまう危険性がある。

 大事なのは塚田氏が言うように「何を実現するために導入するのか」という目的だ。塚田氏は「マイクロサービスもコンテナも何らかの目的を達成するための手段であるべきです」と強調する。

 実際に塚田氏がマイクロサービスやコンテナで課題を抱えている顧客の開発現場で導入の目的を問うと、明確に答えられないケースも少なくないという。コンテナではなく仮想マシン(Amazon EC2)のほうが向くケースや、マイクロサービスでなくAWS Lambdaなどを使ったファンクション単位の構成のほうが適していたというケースも起こりうる。

 「導入の目的やビジネス的な課題をどう解決するかというところにフォーカスする必要があります」と塚田氏は念を押す。

マイクロサービスは技術だけの問題だろうか

 マイクロサービスやコンテナといった最新鋭技術を導入することのメリットは多々ある。しかし目的を達成するための手段であるはずの技術が目的化してしまうと本末転倒となりかねない。

 例えば、スタートアップのような小さな会社で、システムの規模がさほど大きくなければ、マイクロサービス化してもメリットをあまり享受できないこともある。むしろサービス数が多いことで開発や運用保守の工数が増えてしまう。あるいは、サービス間のメッセージングも増えてしまい、複雑性を高めてしまいかねない。

 また、マイクロサービスにすることでデータのオーナーシップが不明瞭になってしまうこともある。加えて、全体として一貫性のない設計に陥ってしまうケースもある。

 目的が不明確なままマイクロサービス化を進めてしまった場合、リカバリする方法はあるだろうか。塚田氏は「どこまで進んでしまったかにもよりますが、本当に目的が明確でないなら、やめたほうがいいと思うのが率直なところです。ビジネスであれば目的があり、実現する手段として合理的かどうか検証したうえで判断することが大事です」と話す。

 例を挙げよう。当初モノリシックでも成り立っていたシステムが次第に肥大化すると、開発のスピードが落ちるなどの弊害が現れてくる。そこで各チームを小さく保つことでスピードやアジリティを維持したいという目的が浮かんでくる。こういう時に目的を実現する手段としてマイクロサービス化が候補に挙がってくる。

 「まずは、課題に対して、『これにはマイクロサービスが合理的である』と論理的に明確に説明がつく状態である必要があります」と塚田氏。明確な目的を掲げ、選択した理由に自信があれば失敗や迷走することなく進んでいく。

 なおAmazonがマイクロサービス化を進めている時、冒頭のキーフレーズとなる「You build it, you run it」という概念が生まれた。もともとは2006年、AmazonでCTOを務めるワーナー・ボーゲルズ氏が提唱した。

 この言葉は技術だけでなく、組織のありかたにも着眼している。コンウェイの法則(システムを設計する組織は、そのコミュニケーション構造をそっくりまねた構造の設計を生み出してしまう)から、組織の構成がサービスの単位であるべきと導き出される。Amazonでは、それぞれのチームが独立した小さな企業のような存在となり、そのなかに開発も運用も全ての機能を盛り込むようにしようと考えた。それをボーゲルズ氏が「You build it, you run it」(開発する人が運用しよう)と表現したというわけだ。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
アンチパターンに見る、「You build it, you run it」が与える示唆

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

  • このエントリーをはてなブックマークに追加
キーパーソンインタビュー連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

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

小林 真一朗(編集部)(コバヤシシンイチロウ)

 2019年6月よりCodeZine編集部所属。カリフォルニア大学バークレー校人文科学部哲学科卒。

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15284 2022/02/07 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング