IoT時代がやってきたが
IoTというと、インターネットに世の中のありとあらゆる機械、デバイス、センサーがつながって、そのデータを収集して分析することで、何か新しいこと、ものが生まれる、というイメージは共有されていると思いますが、それ以上のことについては、人々の理解がまだ混沌としている状況ではないでしょうか?
そういう状況の中、様々な企業がIoT対応に取り組んでいることと思いますが、具体的なソリューションが現れて、それを使って何か従来にはない画期的なものが生まれて来たという状況にはまだ遠いというのが現実でしょう。
また、対応を急ぎたいと思いながら、どこから手をつければいいか逡巡している人々、組織も多いだろうと想像しています。IoTが単なるIT業界に閉じた変革ではなく、世の中を大きく変える可能性を秘めていると考えると、こういう状況は寧ろ想定の範囲ということかもしれません。
かようにIoTというものは非常に守備範囲の広いものですが、あまり範囲を広げてしまうと話が収拾つかなくなるかもしれませんので、ここではITという観点からどうアプローチしていくべきかということについて考察したいと思います。
ITシステムの役割発展と第三のIT利用
まず、ITの発展に伴い、IoTに限らずITに対する期待が質的に変化してきているという点があります。
様々なITシステムを見てみると、歴史的なシステムの世代という観点から3つのカテゴリーがあると言われています。
1つ目は、そのビジネスを長い間サポートし続けているビジネスの根幹をなすシステムです。
いわゆる基幹システムと呼ばれるものです。
2つ目は、様々に変化するビジネス環境の中、競合他社に対して優位性を確保するための差別化のためのシステムです。ビジネスプロセスの効率性、コスト優位性や迅速性によって競合に対して優位性を確保するためのシステムです。
そして3つ目は、ここにIoTも入ってくると思いますが、新しいビジネスを創造するためのIT利用という領域です。
この第三のIT利用には、第一、第二のIT利用と質的に大きな違いがあります。
それは、何を行うべきか予め定まっていないという点です。
従ってアプローチとしては必然的にトライ&エラーの繰り返しということになります。
もちろん第二の領域でも最適化の過程で、微調整のための試行錯誤というプロセスはあると思いますが、あくまでもそれは部分的なものに留まっていたと思います。いわゆるPDCAサイクルを永遠に回していくというイメージになります。従ってその開発手法もより変化に素早く対応できるアジャイルなものにならざるを得ません。
そこでDevOpsやマイクロサービスとの関連性がでてきます。
開発を素早く繰り返していくということは、それに伴い運用も素早く回していくということなので、それらを一体化して考えようということですし、開発するものも大きなものになると素早く開発できないので、なるべく小さな単位で開発していく、すなわちそれはマイクロ(小さな)サービスの集合になるということです。
マイクロサービスと同じような概念としてSOA(Service Oriented Architecture)というものが提唱されていました。これも非常に期待されながらあまり普及するまでに至っていません。難しかったのは、サービスという単位の粒度をどうすべきかという点に関して、全体としてのコンセンサスがとれなかったところではないかと思います。
マイクロサービスは、そこの部分を割り切って言葉の意味通りその粒度をかなり小さな単位で考えます。その結果、マイクロサービスの属性として、シンプルなインタフェースとステートレスというものが特徴として挙げられます。
ステートレスにすることでいかなる状況でもそのマイクロサービスを呼び出すことができるので、その上位のプロセスを柔軟に組み上げることができます。
課題は情報の可視化とシステム連携
さて、次の課題は、その上位のプロセスをどうしたら柔軟に組み上げられるかです。
マイクロサービスがステートレスであるということは、必然的にそれを呼び出す部分にステートやコンテキストが存在することになります。
ここで非常に重要なポイントがあります。それは、これらのステートやコンテキストといった情報を可視化するべきであるということです。可視化できなければ、それは結局そのプロセスの中に埋もれてしまい、やがてその内容を把握し制御することが難しくなっていきます。
それでは、それらのマイクロサービスを呼び出す(コンシューマ)側がその可視化を担うべきなのでしょうか?
それは大変だし、そもそも呼び出す側は、サービスを利用したいだけなので、そんな手間をかけたくないと思うでしょう。
ここにシステム連携、統合を制御するシステム連携基盤の必要性がでてきます。
システム連携基盤がビジネスプロセスに必要なコンテキスト、ステートを管理することで、サービスを呼び出す側、サービスを実装する側は自分の仕事に集中できる環境が整います。
次回は、システム連携基盤が満たすべき機能とIoTにおけるデータプラットフォームの要件について考察していきます。
第二回目の記事は こちら