継続的Webサービス改善ガイド

第1章 なぜ「継続的Webサービス改善」が必要なのか~変化に対応し,10年後も生き残るWebサービスのために

この記事を読むのに必要な時間:およそ 5 分

「環境の変化」への対応

データ量の増大

開発コストの変化は,複雑性の増大のみによって決定されるわけではありません。時間が経過し,Webサービスが成長するのに伴い,アクセスしてくるユーザはどんどん増え,扱うべきデータ量は加速度的に膨れ上がります。アクセスログやデータベースに格納するユーザデータの増大がその典型です。

そのこと自体は,サービスの成長を直接的に示すものですから歓迎すべきことです。しかし,それが開発コストに響いてくるような事態をもたらすことは避けなければなりません。

データ量の増大への対応

どれだけ多くのユーザが殺到しても,どれだけ多くのデータがデータベースに保存されてもさばけるように,システムを保つ必要があります。もしそうでなければ,せっかくの機会に恵まれたとしてもユーザを逃がすことになり,そもそも価値を提供できなくなってしまうでしょう。

第3章では,いかにしてパフォーマンスを改善するか,また,継続的に施策を打っていくためにはどうしたらよいかについて解説します。

技術的環境の変化

ローンチ当初はピカピカの最新鋭だった技術も,時を経るに従ってコモディティ化したり,劣化したり,あるいは,もっと優れた技術が登場してお払い箱になってしまったりということは,変化の激しいWebサービス業界においてはよくあることです。

OSSの運用コスト

高度にOSSOpen Source Softwareを利用しプロダクトを開発することの多いこの業界では,OSSとの付き合い方もよく考える必要があります。たしかにOSSのライブラリやフレームワークは,製品の購入代金という意味においては「無料」ですが,ここでも先の分類に従って,運用におけるコストを考慮する必要があります。

たとえばRubyは,2013年6月より先は,1.8.7はあらゆるサポート対象外とされています。そのときまでのいつの時点かで,コストをかけてバージョンアップをしなければなりません。ほかの言語やフレームワーク,ミドルウェアなどでも,期間の長短こそあれ同様でしょう。

これは考えてみれば当然のことです。OSSは「無料」で利用できるとはいえ,その開発やサポートにはコストがかかっているわけです。我々がその恩恵を享受するその時点では,我々にとってはコストがかからないとはいえ,時間が経つにつれ,バージョンアップや新しいフレームワークやライブラリへの置き換えコストを払うことは当然のことでしょう。もちろん,保守やサポートに対してディストリビュータにコストを払うという方法も可能ではあります。

技術的環境の変化への対応

たとえばRailsを中心としたエコシステムの恩恵を受けながら開発をしていると,ライブラリの流行り廃りが激しく,また,常にRailsのバージョンアップに追従していかないと,新しく登場する便利なライブラリを使うことができません。そのため,それを使えさえすればすぐに済む開発を,自分たちのコストでやらなければならないということが往々にしてあります注2⁠。

このような技術的環境の変化に伴う開発コストの増大可能性に対応するために,ふたたび第2章がお役に立てることでしょう。

注2)
もちろん,こちらからもできる限り貢献をしていることが前提で,このようなことを言っているわけですが。

本章のまとめ

改善も投資であることを意識する

これから本特集が具体的に紹介していく改善も,機能開発などと同様に,それ自体が組織のリソースを使って行われるからには,投資の一貫であることを強く意識する必要があります。ただやみくもに,なんとなく駄目そうだから,改善が必要そうだからなどといった理由でコストをかけ,また,その結果としてさしたる成果を上げられないということは,許されることではないでしょう。

まず,本章で述べたとおり,サービス改善をなぜ行わなければならないのかについて,しっかりとした認識を持つことが必要です。開発者であるか否かを問わず,そのような認識に基づいて,効率良く成果を挙げるために力を尽くすべきでしょう。そして,期限を決めて取り組み,その成果について論理的,具体的に評価を行いましょう。

「複雑性の増大」「環境の変化」に対応する

複雑性の増大と環境の変化は,Webサービスにとっては,いわば自然の摂理のようなものです。一定以上の規模と,長い将来にわたっての成長を目指すWebサービスは,どのようなものであってもその法則から逃れることはできません。

そのような中で我々ができるのは,その現実を認め,よく対処し,あるときには逆にうまく活かしてチャンスとし,サービスのより良い成長を促進していくことです。複雑性の増大とは,その良い面を見れば,コードベースやシステム,組織の拡大により,やれることの幅がどんどん広がっていくということです。環境の変化にうまく適応できれば,より良いサービスを継続的に提供し続けられるでしょう。

次の10年のための改善

限られた時間の中で価値を提供することを目的としたWebサービスならともかく,できるだけ長い間,ユーザに価値を提供し,そのことで利潤を生み続けることを目的とするサービスを提供するためには,継続的な改善を行うことが必要です。

すでに10年目を迎えたサービスにとっても,今まさにローンチされんとするサービスにとっても,将来は同じように不確実です。だからといって不確実性に過度に惑わされ,結果として将来価値を毀損することなく,自サービスの将来を,ひいてはユーザの将来,インターネットの将来を良くするために,一歩ずつ確実に歩んでいきましょう。

次の10年を我々の手でより良いものにするためにも,Webサービスの改善に自信を持って取り組んでいこうではありませんか。

本特集の構成

以降に続く本特集の各章について,ここで簡単に紹介しておきます。

第2章「開発環境の改善」では,⁠技術的負債」の返済という観点から,開発環境の改善や仕様化テストの導入などを通して,コストを縮減し,より良いWebサービスを提供するための具体的な方法を紹介します(2/18公開⁠⁠。

第3章「パフォーマンスの改善」では,Webサービスのパフォーマンスを視覚化し,改善への効果的なアプローチを採ることで,パフォーマンス面においてユーザへのより良い価値提供を継続するための方法を紹介します(2/19公開⁠⁠。

第4章「インフラ構成管理の改善」では,ユーザへの継続的な価値提供を支えるインフラ面からのサービス改善について,これまでの歴史的経緯をたどりつつ,実際に取り組んできた内容を具体的に紹介します(2/20公開⁠⁠。

第5章「ビジネス視点の改善」では,Webサービスを改善するにあたって,ビジネス的・マネージャ的な観点から,より良い施策の実行やチームビルディングが欠かせないことを,具体例とともに紹介します(2/21公開⁠⁠。

著者プロフィール

栗林健太郎(くりばやしけんたろう)

(株)paperboy&co.

URL:http://kentarok.org/
Twitter:@kentaro
Github:kentaro