webサービスオペレーションに熟達しよう
ここで言うwebサービスオペレーションとは?
webサービスが中心にある事業(ビジネス)において、
- そのwebサービスを安定稼働させること
- そこから提供される顧客価値を最適化させること
に関わる業務全てと定義します。
webサービスであることがビジネスに与えている影響
- webサービスでは新しく追加される機能や既存機能の改善はデプロイメントを通じて即座にユーザーへ届けられる
- 稼働するシステムの状況、ユーザーの利用状況、さらにはwebサービス上のユーザーの詳細な振舞いなど様々なものがメトリクスやログデータとしてリアルタイムに収集され分析される
- 顧客要求を満たすよう、収集・分析される情報を活用しwebサービスの改善、ひいては顧客価値の最適化は迅速かつ継続的に行われる
上記のようなwebサービスだからこそ可能となる振舞いによってビジネス上の学習・価値検証・価値実現が迅速化かつ高頻度化することに少なからず影響を与えている。
顧客要求にビジネスを迅速に適応させる方法論が存在していることは喜ばしいことである一方、その遂行は優位性ではなくなっている。つまり当たり前のように遂行される最低限の組織能力(ケイパビリティ)水準が引き上げられ、高度化・複雑化していることにも寄与していると感じる。
つまりここでwebサービスがビジネスに与えている影響は以下2点あると主張したい。
- ビジネス上の学習・価値検証・価値実現の迅速化かつ高頻度化
- 要求される組織能力(ケイパビリティ)水準の高度化・複雑化
OSSサプライチェーンの活用とそのセキュリティリスク
組織はOSSおよび商用ソフトウェアを適切に組み合わせて迅速にwebサービスを構築し、自分たちの事業ドメインに集中することが可能になった。商用ソフトウェアもOSSを利用してサービスを構築していることがほとんどであり、またOSS自身も大小さまざまな別のOSSを利用して構築されていることが大半だ。そういったOSSの繋がりはサプライチェーンと表現される。OSSを活用し競争力を担保することもまた要求される組織能力であり、OSSの活用は必要不可欠になっている。それと同時にOSS利用時のセキュリティリスクも考慮しなければならない。
サプライチェーン上のいずれかのOSSに脆弱性(セキュリティリスク)が発覚し、それが事業継続上のリスクとなる可能性は大いにある。またサプライチェーンが巨大で複雑になるほど、セキュリティリスクが発生する箇所も多くなると言える。そして最も大きな事業継続上のリスクは事業の停止であり、OSSのセキュリティリスクに起因してそれは確実に起こりうる。
OSSのセキュリティリスクを軽減・予防するためにとるべき策のひとつは「利用するOSS・商用ソフトウェアを最新バージョンへ更新し続けること」である。これを確実に遂行し続けることもまた必要な組織能力であると考えている。
webサービスを適切に安定稼働させる
webサービスはクライアントサーバモデルのシステム形態である。ビジネスにも依存する事柄ではあるが、webサービスを利用するユーザーのアクセス状況はアンコントローラブルな要素のひとつであり、状況によってはwebサービスの安定稼働を阻害する事象となる。だからといって安定稼働させるためにあらかじめ過剰なシステムリソースを投与することはビジネス運営上の不必要なコストにもなる。
アンコントローラブルな要素を予測し、費用対効果を考えながら予防策・軽減策を適切に講じてwebサービスを安定稼働させることは顧客価値を損なわないために必要なことと言える。
また安定稼働させるために必要な「学習」もwebサービスだからこそ迅速に行い、継続的にプロセスを改善できることも競争力を維持する上での必要な組織能力と考えている。
webサービスオペレーションの中で具体的に取り組んでいきたいこと
長い長い前置きも踏まえて、以下のようなことに具体的に取り組んでいきたい。
- 目的1: セキュリティリスクを軽減・予防する
- 利用するOSS・商用ソフトウェアを最新バージョンへ更新し続ける
- webサービス自体に脆弱性がないことを評価する、脆弱性があればそれを改善する
- webサービスのセキュリティ強度を上げる仕組みの導入と、ユーザー利便性とのバランスをとる
- e.g. WAFの導入、CSPの導入、etc...
- 目的2: 顧客価値の毀損を抑止する
- webサービスの安定稼働を実現する
- 実装不備や機能不全を検知し修復する
- ここは特に自己検知して即座に修復されていくことが望ましく、エラーモニタリングを活用したい
- ユーザー体験を阻害するシステムパフォーマンス不全の検知と修復
- ここも自己検知して修復されていくことが望ましく、メトリクスやモニタリングを活用したい
- 目的3: 提供する顧客価値をより顧客要求へ適応させる
- 稼働するwebサービスを通じて得られる学習・価値検証・価値実現を積み重ねること
またこの取り組み(プロセス)を行いながら、その質を継続的に改善するプロセスも確立したい。
つまりタイトルにある「熟達」とは何を意図したのか
- プロセスの獲得
- プロセスを継続的に改善するためのプロセスの獲得
の2つを実現し、webサービスオペレーションを通じて達成される、
- webサービスの安定稼働
- 顧客価値の最適化
を意のままに実行できる状態になること、と意図しました。
webサービスオペレーションを熟達した先にあるもの
そもそもなんでこんな記事を書こうと思ったかという背景に、一般的に言われる「新規開発」vs「運用保守」という対立構造的な概念を持っている方が多いのではという仮説がありました。
これに対する私の主張として、以下ブログ記事からの引用となりますが、
アーキテクトを目指すエンジニアの最短ルート - エス・エム・エス エンジニア テックブログ
Webオペレーションはいわば構築したシステムに対する答え合わせです。設計のときに気にしていたことはテストで答え合わせをすることもできますが、観点が漏れていたことは運用の中でしか見つかりません。
運用を経験することによって得られる学び・学習が大いにあり、それは次の設計・開発するためのインプットになるということです。このことから「新規開発が得意なエンジニア」「運用保守が得意なエンジニア」という表現は私にとってしっくりくるものではなく、「新規開発が得意なエンジニアは運用保守も得意、その逆も然り」と考えています。
また前置きにも書いた「ビジネス上の学習・価値検証・価値実現」は、「新規開発」と「運用保守」を接続して迅速にかつ継続的にフィードバックループを回すことで実現できるものだと考えており、これはまさにフルサイクル開発を実現することそのものだとも考えています。
Netflixにおけるフルサイクル開発者―開発したものが運用する - CARTA TECH BLOG
webサービスオペレーションに熟達した先にあるもの、それはもしかしたらアーキテクトやフルサイクル開発者といったよりビジネスにインパクトを与えうるエンジニアキャリアという話かもしれないし、ビジネス上の学習・価値検証・価値実現を継続的に実現することによって起きる漸進的イノベーションという話かもしれない。実際に熟達した上でそれは見届けたいなと考えています(要は私も答え持ってないよ、というオチでした)。
Discussion