2024.12.24
ビジネスが急速に変化する現代は「OODAサイクル」と親和性が高い 流通卸売業界を取り巻く5つの課題と打開策
リンクをコピー
記事をブックマーク
原トリ氏:世の中には、アプリケーション開発者はアプリケーションコードだけを書き、コンテナ化あるいはコンテナオーケストレーション周りのことはすべて運用チーム、会社によってはSRE(Site Reliability Engineering)という名前がついているチームがやっている会社がたくさんあると思っています。
冒頭で、「アプリケーション開発者はコンテナイメージの作成やECSタスク定義、あるいはKubernetesマニュフェストみたいなものを書いて、そこからデプロイをしたものを自分で運用するべき」という話をしました。
なぜそう考えるのかについては、当然さまざまな観点から説明可能ですが、今日はこれを責任共有モデルの観点から説明します。聞き覚えがない方は、責任分界点という言葉で考えてもいいかもしれません。
AWSはコンテナサービスに限らず、「お客さまがAWS上でシステムを動かす時に、AWSはクラウドそのもののセキュリティや運用に責任を持ちます」と表明しています。また、「お客さまは、AWSが責任を持っているクラウドの中で動かしているものの責任を持ちます」と。その分界点を定めたリンクをWebサイトの下に貼ってあるので、まだ読んだことない方はぜひ一度読んでみてください。
なぜこれが重要か。これが明示的に定義されていないと、AWS自身もお客さま自身も、どこまでが自分たちの責任範囲かわからなくなり、運用難易度が高まってしまうからです。
(スライドを指して)この責任共有モデルをEC2に落とし込んでみましょう。EC2の場合、下のほうに書いてある点線がAWSとお客さまの責任分界点です。
AWSは物理サーバーやハイパーバイザーに責任を持ち、お客さまはその上で動かすEC2 インスタンスなどの仮想マシン、その中のOSや、その上で動かすアプリケーションに責任を持つ。
少し考えてみてください。(スライドを指して)もし、この責任共有モデルの分界点の線が点線部分に引かれていたら困りませんか?
例えば、図のランタイムのあたりで何か障害が起こった時、どちらが対応すべきか非常にわかりにくい。誰が責任を持っているのか、誰が対応すべきかわからないということは、障害からの復旧に時間を要する可能性が高いということです。
複数の関係者が共同でシステムを組み上げて運用していく際に、中途半端な位置に責任分界点が設けられていては、うまくいくものもいきません。
コンテナワークロードは、ECSの場合、コンテナオーケストレータはAWSの責任範囲です。EC2から上がお客さまの責任範囲になるわけですが、いろいろなユーザーと話していると、(スライドを指して)この辺りに境界線を引いている方がたくさんいます。
Dockerファイルを書いたり、ECSタスク定義を書いたりするのは運用側。アプリケーションエンジニアは上のアプリケーションの部分で、コードを書いたり、あるいは言語ランタイムの部分もちょっとやったりする。
ここで1つ疑問が浮かびます。中途半端な責任共有モデルは問題解決のスピードを落とす、あるいはその妨げになると先ほど確認しました。なのに、なぜこんな境界線が許容できるのか。違和感がありませんか。
許容可能な、甘んじて受け入れられる境界はどこか。(スライドを指して)少なくともコンテナのレイヤーまでは開発チームが責任を持つ、という境界線になるはずなんです。この境界線は、仮想マシン時代には引くことが難しかったんです。言語ランタイムが仮想マシンに埋め込まれていることが普通だったので、非常に難しかった。
コンテナ時代だからこそ、素直にこんな位置に境界線が引けるわけです。つまりコンテナを使う選択をしたのであれば、こういうきれいな場所に責任共有モデルを実装できるんです。
そんな責任共有モデルに基づいて考えた場合、各チームの責任範囲はどう定義されるか。開発者はコンテナから上に責任を持ちます。Dockerファイルを書き、オーケストレータ用の定義ファイルを書きます。コンテナより上のレイヤーに運用責務を持って、オンコールも受け持ちます。
アプリケーションレイヤーがおかしいというアラームが起きたら、開発者が責任を持って対応すべきです。もちろん運用担当者が実装レベルで会話できて協力体制を組めるように、積極的に支援することも必要です。
運用チームは、コンテナより下に責務を持ちます。開発者が投入してくるコンテナが実行できる環境を維持することに、運用チームは責務を持つ。ただし、開発者が運用観点で設計やコード記述ができるように、運用チームは積極的に支援していかなければなりません。
まとめます。アプリケーション開発者はECSやKubernetes、ひいては運用をどこまで知ればいいのか。運用性に優れたソフトウェアは、運用を無視した開発からは絶対に生まれません。大事なのは、ソフトウェアの価値がユーザーに届くのは運用のフェーズだということです。
だからこそ、運用性に優れたソフトウェアを作らなければいけない。開発と運用にどうしても明確な責任分界点が必要な場合は、コンテナから上を開発チーム、コンテナより下を運用チームの責任範囲としましょう。開発者はDockerファイルを書いて、コンテナオーケストレータの定義ファイルを書きましょう。オンコールを受け持って、障害対応や運用改善を行いましょう。
開発と運用が共通のゴールを設けて、システムを作って運用していく責任を共有することが、継続的なデリバリを前提とするソフトウェアの理想です。今日のセッションは個人的な意見も入っていますが、目指すべきかたちはこうだと常々考えていますし、僕自身は信じています。
当然、所属している会社あるいは組織的な制約によって、ここまでドラスティックなかたちを採ることは難しい方もいると思います。ですが、冒頭でも当社のCTOワーナーの話を引用したとおり、このかたちを目指すことで、運用性に優れたソフトウェアが育ち、それがシステムの開発と運用のよいサイクルにつながるはずです。
僕の想像も入りますが、そもそもSREという役割が生まれた背景あるいはそれが目指した世界は、コードによってシステムとその運用の継続性、信頼性を高めるというものではなかったのかと、思うことがあります。本日のセッションが、みなさんのソフトウェアに優れた運用性をもたらすきっかけの1つとなることを祈っています。以上です。
関連タグ:
2025.01.16
社内プレゼンは時間のムダ パワポ資料のプロが重視する、「ペライチ資料」で意見を通すこと
2025.01.15
若手がごろごろ辞める会社で「給料を5万円アップ」するも効果なし… 従業員のモチベーションを上げるために必要なことは何か
2025.01.20
組織で評価されない「自分でやったほうが早い病」の人 マネジメント層に求められる「部下を動かす力」の鍛え方
2025.01.14
目標がなく悩む若手、育成を放棄する管理職… 社員をやる気にさせる「等級制度」を作るための第一歩
2025.01.09
マッキンゼーのマネージャーが「資料を作る前」に準備する すべてのアウトプットを支える論理的なフレームワーク
2025.01.14
コンサルが「理由は3つあります」と前置きする理由 マッキンゼー流、プレゼンの質を向上させる具体的Tips
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.01.21
言われたことしかやらないタイプの6つの言動 やらされ感が強く他人任せなメンバーを見極めるチェックリスト
2017.03.05
地面からつららが伸びる? 氷がもたらす不思議な現象
2015.11.24
人は食事をしないとどうなるか 餓死に至る3つのステップ
特別対談「伝える×伝える」 ~1on1で伝えること、伝わること~
2024.12.16 - 2024.12.16
安野たかひろ氏・AIプロジェクト「デジタル民主主義2030」立ち上げ会見
2025.01.16 - 2025.01.16
国際コーチング連盟認定のプロフェッショナルコーチ”あべき光司”先生新刊『リーダーのためのコーチングがイチからわかる本』発売記念【オンラインイベント】
2024.12.09 - 2024.12.09
NEXT Innovation Summit 2024 in Autumn特別提供コンテンツ
2024.12.24 - 2024.12.24
プレゼンが上手くなる!5つのポイント|話し方のプロ・資料のプロが解説【カエカ 千葉様】
2024.08.31 - 2024.08.31