クラウド時代のソフトウェア品質管理。それは健康管理と同じだとグーグルのテスト担当者
「システム管理者は、数学的、科学的にログを分析して、システムで何が起きているのかを判断することが新しい役割になる」。クラウド時代のシステム管理者についてこう話したのは、TwitterのJohn Adams氏でした(参考:Twitterの大規模システム運用技術、あるいはクジラの腹の中(前編)~ログの科学的な分析と、Twitterの「ダークモード」)。
Adams氏はまた、Twitterのソフトウェアはデプロイされたあとも何かあればすぐにさまざまな機能を停止できる「ダークモード」と呼ばれる90ものスイッチを備えていると説明しています。
クラウド時代のソフトウェアは「スイッチを入れる」
そういえば同じような見解を以前にも読んだことがあります。グーグルのソフトウェアテストエンジニアのブログ「Google Testing Blog」に、今年の2月にポストされたエントリ「Testing in the Data Center (Manufacturing No More)」です。
グーグルのテストエンジニアであるJames A. Whittaker氏は、クラウド時代のソフトウェアテストについて次のように書いていました。
We just don't write or release software the way we used to. Software isn't so much built as it is grown. Software isn't shipped ... it's simply made available by, often literally, the flip of a switch.
かつてのようにソフトウェアは単に、開発してリリース、とはならない。ソフトウェアは成長するように構築されるものではなく、出荷されるものでもない…それは単に利用可能になるのだ、文字通り、スイッチを入れるように。
クラウド時代のソフトウェアは、出荷されものではなく、スイッチを入れるように「利用可能になる」ものだ、という認識はグーグルの中の人も、Twitterの中の人にとっても共通の認識のようです。
Whittaker氏は、クラウド時代のソフトウェアでは、こうしたリリースはつねに起きているのだと指摘します。
This is not your father's software. 21st century development is a seamless path from innovation to release where every phase of development, including release, is happening all the time.
これはあなたの父親の時代のソフトウェアではない。21世紀の開発は、現場においてイノベーションからリリースまでがシームレスに続いており、しかもいつでもリリースが発生しているのだ。
古い世代のソフトウェア開発(父親の時代の開発)、つまりはいま普通に行われているパッケージソフトウェアの開発は、顧客がその製品を入手するためにはいったん開発を終えて製品をリリースする必要がありました。しかしクラウド時代のソフトウェアは、つねに開発が続けられ、それが顧客に絶え間なく届けられていくというわけです。Web 2.0が流行した頃に「永遠のベータ」という言葉がよく言われましたが、まさにそういう状態なのでしょう。
ソフトウェアテストの仕事は内科医のようになった
ソフトウェアをリリースする形態の変化が、ソフトウェアテストに関する仕事にも変化をもたらしていると、Whittaker氏は説明します。
In our father's software and Deming's model we talk about quality control and quality assurance while we play the role of inspector. In contrast, my job seems much more like that of an attending physician.
品質管理と品質保証について、父親の時代のソフトウェア、デミング博士のモデルでは、私たち(テスト担当)の役割は検査官(Inspector)にあたる。しかしそれとは対照的に、いまの私の仕事は内科医のようなものだ。
クラウド時代のテスト担当者の仕事は、まるで内科医のようだというのです。どういうことでしょうか?
In fact, a medical analogy gives us some interesting parallels to think about software testing. A physician's hospital is our data center, there is always activity and many things are happening in parallel.
実際のところ、医療の例えはソフトウェアテストについて考えるとき興味深い類似点がある。内科医にとっての病院は、私たちにとってのデータセンターだ。つねに活動があり、多くのことが並行して起きている。
動作中のソフトウェアのことを、まるで生命活動をしている生き物のように例えているのです。自分たちはそれを診る内科医だと。
Physicians have patients; we have applications and features. Their medical devices are our infrastructure and tools. I can picture my application's features strewn across the data center in little virtual hospital beds.
内科医には患者がいる。私たちにはアプリケーションと機能がある。彼らの医療機器は、私たちのインフラとツール群にあたる。私はアプリケーションの機能を小さな仮想病院のベッドの上に横たわるデータセンターにまき散らしたように描くことができる。
ソフトウェアを患者として、つねにその活動を把握することが大事だとWhittaker氏は書いています。
Let's add equipment to take vitals and display them for any attending tester to see. Like human patients, apps have a pulse, data runs through code paths like blood through veins.
さあ、テスターが診ることができるように、生体活動をモニタするための機器を取り付けよう。人間の患者のように、アプリケーションには脈拍があり、データは血液の流れのようにコードのあいだを流れていく。
そしてクラウド時代のテスターの技量とは、どのようなデータをどこから取得し、どう分析し、どのように原因を突き詰めていくか。記録をどのように整理するか、といったことになるというのです。
Whittaker氏は、新しい時代のソフトウェア品質管理のあり方は、健康管理のようだと結んでいます。
This is the challenge of the new century of software. It's not a process of get-it-as-reliable-as-possible-before-we-ship. It's health care, cradle to grave health care ... prevention, diagnosis, treatment and cure.
これは新しい時代のソフトウェアにおけるチャレンジだ。それは「出荷前にできるかぎり信頼性を高めよう」的なプロセスではない。ヘルスケアなのだ、ゆりかごから墓場までのヘルスケア、予防、診断、治療、そして治癒だ。