ドリルを買いにきた人は何が欲しい? ~SchooでWebセミナーをやります~
「コンピュータに仕事を任せたら、人間は何をすればいいのか」では、「ドリルを買いに来た人はドリルが欲しいわけではない(穴を開けたい)」という格言を書いた。
コンピュータを買いに来た人はコンピュータが欲しいわけではないし、広告を発注するクライアントはCMが欲しいわけではない。ある少女アニメのスポンサーは、制作会社に対して
我々は「良い番組」を作って欲しいのではありません。
おもちゃの売れる番組が欲しいのです。
と、面と向かって言ったらしい。さすがに面と向かって言ってはまずいだろうと思うが、それが本音である。
コンピュータも同じことだが、どうしてもハードウェア偏重になりがちだった。PC Serverが登場し、ハードウェア性能が横並びになった結果、今度はOSやミドルウェアの競争になった。しかし、冷静に考えるとWindowsであろうとLinuxであろうと、できることは大して変わらない。どれくらい簡単にできるのか、どういうサポートがあるのか、というのも重要だが、マクロな目で見ると似たようなものである。
Oracleは一時期SQL Serverを激しく攻撃していたが、両方のデータベースを知っている人に言わせると
どちらもそれぞれ特徴というか、癖があって、異なるテクニックが必要だけど、大ざっぱに言えば似たようなものだ。
ということだそうだ。同じ「関係データベース理論」に基づいているのだから、まあ、そんなものだろう。
ずいぶん昔に会社の先輩から聞いた話である。ある案件でデータベースのコンペがあったそうだ。競合に対して先輩は「1億件のデータベースでベンチマークをしよう」と提案したそうだが、競合に「1億件は非現実的な数字だ」と却下されたそうだ。調べたら、当時、競合のデータベース管理システムは64ビット対応しておらず、1億件のデータが扱えなかったのだという。
このように昔は「頑張ってもできないこと」が存在したが、今ではそういう制約はほとんどない。
サービスとしてのコンピューター
クラウドの良いところは、特定のハードウェアに依存せず、欲しいだけ使い、使っただけ支払うことである。
クラウドが提供するサービスは、大きく3種類ある。
- SaaS (Software as a Service)…アプリケーションを提供
- PaaS (Platform as a Service)…Javaや.NETなどアプリケーションの実行環境や、データベースなどミドルウェアを提供
- IaaS (Infrastructure as a Service)…仮想マシンを提供
もっとも手軽なのはSaaSである。欲しいサービスがあればすぐに使える。たとえば電子メールはSaaSとしてヒロ靴K割れている。組織ごとの要件の違いがあまりないため、容易に導入できるからだ。
特定業界向けのSaaSもある。たとえば、Webサイトから予約できるレストランを見つけて、試しに予約画面を出して見て欲しい。多くの場合は、レストランWebサイトと異なるDNSドメインになるはずだ。
コスプレ写真撮影会PhotoPlusの予約システムは、エステサロン向けのシステムだそうだ。撮影会はスタジオとモデル両方を指定する必要がある。そこで、サロンとエステシャンの両方を指定するエステサロン向けのシステムを流用したらしい。
このように、サービスが限定されている場合は簡単なカスタマイズをするだけですぐ使える。これがSaaSの利点である。
SaaSでは対応しきれないような大きな変更が必要な場合、現在広く使われているのはIaaS、つまり仮想マシンである。ERPシステムなどは企業ごとの差異が大きいため、カスタマイズ量が多い。現在使われているERPシステムをクラウド化する場合は、現行システムをそのままIaaS上に移行した方が簡単なことが多いようだ。
ただし、長期的にはERPをSaaSとして使う方向に進むと言われている。ERPの中でも、企業間の差異が比較的小さいCRM(顧客管理システム)は、Salesforce.com(Salesforce CRM)やマイクロソフト(Dynamics CRM)がSaaSを提供している。
SaaSの欠点は、高度なカスタマイズができないことである。そこで、PaaSが注目されている。Salesforce.comは、Salesforce CRMのカスタマイズ環境としてForce.comを提供しているし、マイクロソフトもカスタマイズ環境を提供している(もっとも低レベルなサポートが.NET Framework)。
注目されるPaaS
SaaSが契約すればすぐ使えるのに対して、PaaSは何らかのシステム構築を行う必要がある。IaaSが既存システムとのほぼ完全な互換性を持つのに対して、PaaSには多くの制約がある。
しかし、SaaSのカスタマイズには限界があるのに対して、PaaSの自由度は高い。既存システムをIaaSに持っていった場合はクラウドの利点を生かし切れない場合も多いが、PaaSは最初からクラウドに最適化されている。
既存システムのソフトウェア資産が多いうちはIaaSが有利だが、新規開発が増えてくるとPaaSの方が有利になるはずだ。
IaaS | PaaS | SaaS | |
互換性 | ○ | △ | × |
クラウド対応 | × | ○ | ○ |
カスタマイズ | ○ | ○ | × |
無料Webセミナー「Schoo」でしゃべります
勤務先が、無料WebセミナーSchooと契約したので、Microsoft Azureについての授業を担当している。
- Microsoft Azure IaaS講座: 5分で作れるサーバーシステム(1限目) ~とにかく仮想マシンを作ってみよう~
- Microsoft Azure IaaS講座: 5分で作れるサーバーシステム(2限目) ~落ちない仮想マシンを作ってみよう~
- Microsoft Azure IaaS講座: 5分で作れるサーバーシステム(3限目)~仮想マシンではなくWordPressが欲しいんです~
1限目では、マイクロソフトが提供するクラウドサービスMicrosoft AzureのIaaS機能を使った仮想マシンを作成した。単に作るだけなら簡単である。
2限目では、複数サーバーを構成して、負荷分散と可用性の両方を実現した。これはなかなか難しかったようである。
今週8月27日(水)18:00から開催される3限目では、複雑になったIaaSをあきらめて、PaaSに移行する。ここでのPaaSは、WordPressという定評あるCMS(コンテンツ管理システム)だ。
PaaSを利用するときに、OSの知識は(基本的には)必要ない。Microsoft Azure上で提供されるWordPressは負荷分散機能も含まれるため、3限目は1限目と2限目を知らなくても参加できるようになっている。言い換えれば、1限目と2限目は不要だったということだ。
クラウドを前にしたエンジニアが、必ず悩むことがある。
これだけのサービスを提供してくれるのだったら、内部の動作を知らなくてもいいのではないか。
私の意見はこうである。
単に使うだけなら知らなくてもいい。
高度なカスタマイズやトラブルシューティングを行うには知っておいた方がいい。
自動車の機能が向上し、多くのことが自動化された。私の学生時代は、寒いときにエンジンをかけるときの注意とか、坂道で駐車するときの注意とか、さまざまな技法を覚える必要があった。しかし、今ではすべて自動車任せである。
単に、道具として自動車を使う人はそれで全く問題ない。しかし、自動車の整備工がそれでは困るだろう。実際に故障を直すのは自動車メーカーかもしれないが、基本的な知識は必要なはずだ。
もし、エンジニアとして生きたいなら、たとえクラウドサービスを使うだけであっても、内部の動作をある程度は把握しておくべきだ。
ドリルを買いに来た人は、ドリルが欲しいのではない。しかし、ドリルを売る人はドリルの機能の全てに加え、ドリル以外の穴開け道具について一通り知っておく必要がある。それと同じことだ。