Cloud Computingと知働化

Cloud Computingとは何か?という疑問を持たれている方が多々いらっしゃるので、Cloud Computingと知働化と書いた時点で何の事かさっぱりわからないという方もいらっしゃると思います。
そこで、簡単にCloud Computingとは何なのかを書いておきます。

Cloud Computingとは、大量のサーバを用意し、必要な時に必要なだけ利用できるようにし、規模の経済の利益を享受するものです。

アーキテクチャ的には、二つあります。
一つは、Server Cloudと呼ばれる、物理サーバや仮想サーバを、必要に応じて提供するもの。
もう一つは、Scale out Cloudと呼ばれる、コードを流し込めば、自動的にScale outしてくれるものです。

Server Cloudの代表的なものは、Amazon Web ServiceやMicrosoft Azureがあります。
Scale out Cloudの代表的なものは、Google AppEngineです。

どこにサーバを集約させるかによって、区分する場合は、Public CloudとPrivate Cloudとに分けられます。
Internet越しに、どこかのデータセンターにあるサーバを利用する場合は、Public Cloud、企業内にサーバを用意して利用する場合はPrivate Cloudと呼ばれます。
しかし、規模の経済の利益を享受するという観点からすると、Private Cloudには、その点は不利だということはすぐにご想像がつくと思います。
1企業が数百万台のサーバを保有するということはあり得ず、必然的にAmazon、Microsoft、GoogleのようなPublic Cloudの方が規模の経済の利益を享受しやすいことは明らかです。

Cloud Computingは電力の普及と同じ歴史をたどることでしょう。
昔、水車や蒸気機関によって稼働していた工場が、電力を利用するために発電機を導入し、そして電線を引き入れて電気そのものだけを利用したいだけ利用し、利用した分だけ払うというようになりました。
コンピュータも、今までは、企業内に設置し管理者を置いて管理してきたわけですが、今後は、インターネット越しに稼働させたいコードを流し込み結果を得る、そして利用したい時だけ利用し、利用した分だけ払うというようになるでしょう。
その観点からすると、インフラの構成をユーザが組むServer CloudはScale out Cloudへの過渡期における一時的なCloud Computingのサービス形態であると言えます。

今、私たちは、電力を、それがどこで作られているとか、どのような仕組みで作られているとか、どのような管理体制にあるかとか、そういうことを気にせずに使っています。
しかし、発電所から電線を通して供給し始めた頃は、そういうことを企業の人たちは非常に気にしたはずです。
それは、今日、Cloud Computingについて語る人たちや、検討している人たちが、気にしている事と全く同じです。
しかし、サービスが普及し、実績が積み重なるにつれて、そのようなことを気にする人たちも徐々にいなくなってしまうでしょう。

さて、Cloud Computingについてざっくりと解説・定義し終えたとことで、本題のCloud Computingと知働化という話題について書きたいと思います。

企業のITシステムは、今日では、企業のノウハウやコアコンピテンスなどがぎっしり詰まった中核をなすものとなりました。
しかし、そのシステムは、企業内に置かれたサーバ上で稼働し、サーバを管理するための人が必要でした。
また、コードの中には、きっと半分以上は、業務そのもののロジックではなく、システムの冗長性を担保したり、可用性を高めたりするためのコードが含まれています。
このようなコードが、Scale out Cloudに移行すると、

  1. サーバ管理者を置く必要がなくなる
  2. 勝手にScale outしてくれるので、冗長性や可用性を高めるためのコード、システムの存在のためのコードが激減する
という利点があります。
つまり、企業は、より自社の業務のためだけのコードを書きさえすれば良い、という事になります。

そして、企業は、本来ソフトウェア開発がそうであるべき形態へと、開発の仕方やシステムの捉え方が変わると思います。
システムとはなまものであって、企業が日々変わるのと同様に変わり続けるものであるという事です。
「変化とは、プロセスであって、出来事ではない」という言葉を最近とある本で目にしました。
確かにそのとおりで、変化は日々の流れに付帯する常なるものであり、ある日突然発生するものではないのです。

企業が、利益向上を目指し、既存業務を改善・発展させたり、新しいビジネスを始めたりするのは、日々の常なることであり、決して突然訪れる出来事でありません。
そうであるならば、その業務のノウハウ、コアコンピタンスをコードという形で具現化させたソフトウェアも、常にその変化に対応するように変化すべきです。
しかし、実際は、まるで記念撮影をするが如く、仕様を固めて、リリース日を決めて、開発を行い、そしてそのシステムを利用します。
仕様を決めた日から、日々は流れ、業務は少しずつ変わっているのに、昔決めた内容のシステムを利用する、今日のシステムの利用形態は、まるで、記念写真を眺めるかのようです。

現在、伸び盛りの企業の殆どがシステムを内製で作っていて、利益が伸び悩んでいる企業は受託開発や外注依存であることを考えると、その点が納得できると思います。
自社内に開発要員を揃えて、システムを自社内で開発している企業は、自社の日々の変化にシステムを対応させることが、受託開発や外注依存の企業よりは、やりやすいのです。

今まで企業はシステム部のアウトソーシングに努め、本来業務に注力するようにしてきました。
しかし、本当は、サーバやネットワークといったインフラ周りについてはアウトソーシングし、その上で稼働するソフトウェアについては、アウトソーシングするべきではなかったのです。
ソフトウェアについては、自社の業務のノウハウ、コアコンピテンスが詰まっており、その部分も手放してしまうという事は、自社の競争力が大きく削がれてしまうという認識がなかったのです。
その点は、tangible(手に触れることができる)な物により大きな価値を置いてしまう、日本人の性なのでしょうか。
intangible(手に触れることができない)なモノの方が今後の社会ではより大きな価値を持つという認識が経営陣に欠けていたためかもしれません。

しかし、Cloud Computingが普及すれば、必然的に、tangibleなサーバについてはアウトソーシングすることとなり、intangibleなソフトウェアが手元に残ります。
このソフトウェアを、日々、開発、メンテナンスするソフトウェアエンジニアを企業内に雇用し、そしてその企業の業務に特化したソフトウェアエンジニアとして育成することが、今後は企業の競争力強化に不可欠となると思います。
そのようなエンジニアこそが、企業の知をソフトウェアという形に具現化させる、知動化の担い手となると思うのです。
そういったエンジニアは、Cloud Computingを利用することで、業務とは直接関係のない、システムの存在のためのコードを書く必要がなくなり、作業効率が向上します。
関心が分散されずに済むからです。
そのエンジニアの関心は、本来業務のシステム化だけに振り向けることができるようになり、また日々メンテナンス、改変していくことで、企業の成長と変化に応じて、システムを変化させ続けることができるでしょう。

知働化を語る上で、Cloud Computingという存在は欠かせないと私は考えています。

Comments