機能の一部をクラウド上に放出する、名付けて「ナマコ作戦」!
そこで石田氏が参考にしたのは、モバイルセキュアブラウザなどで採用されているアーキテクチャだ。企業のファイヤウォールの外にアクセスポイントを置き、外部から安全に企業内サーバーへアクセスできるようにする。高い安全性を確保するためのソリューションではあるが、「End-to-Endの暗号化はできず、HTTP/HTML的な脆弱性はそのまま露出されてしまう」といった懸念はある。それでもいいヒントを得られたという。
そして、石田氏は「ホルモン放出 ナマコ作戦」を考えた。ナマコは人間にもまれるなどの刺激を受けると、内臓を吐き出す。そこから名付けられた作戦だ。
具体的には、オンプレミス上にあるシステムの一部機能を外、つまりクラウドに出すということ。なぜそうするのかというと、新機能をオンプレミス側(ナマコでいう内臓以外の本体)に追加するのは難しく、マイクロサービスにした上で、外部からオンプレミス側と連携できるようにしたほうが都合がいいからだ。マイクロサービス化すれば、今後のリファクタリングもしやすくなる。このようにINSUITEはオンプレミスとクラウドで機能を分割し、必要に応じてやりとりをしている。
通信には「RabbitMQ」「Apache ActiveMQ」「Apache Kafka」などのメッセージ指向ミドルウェアを使いたい。しかしOSや可用性、バックアップなどを考えるとハードルが高い。そこで石田氏は「そうだ。SQLiteがある」と思いつく。
「SQLiteであれば、どんな環境にもなぜか入っている」と石田氏が話すと会場は笑いに包まれた。重要なのはライブラリであるということ。データベースではあるが、ファイルを開く感覚で使用できる。これで受け取ったメッセージをキューイングし、性能を損なわないように順繰りに実行することができる。
「巨大でモノリシックなシステムを一気にマイクロサービスに変換するには時間もパワーも必要。にもかかわらずユーザー体験はそれほど変わらない。それなら、新機能からマイクロサービスにしていけばいい。少しずつ工夫すれば徐々に機能を外部に出していける」
このアーキテクチャで思い浮かぶ懸念事項について、石田氏は次の通り補足する。まずはセキュリティ監査が通るのか。現時点ではクラウドの上の機能がデータを持たないことでクリアしている。単に通信しているだけ、ということだ。しかし今後、機械学習の導入などでオンプレミスのリソースが不足することになれば、外でデータ処理を行うことも検討しなければならない。その際、顧客のポリシーに違反しないかどうか、検討する必要が出てくる。
コストはどうか。現状クラウドサービスを使う費用は保守費用から捻出し、持ち出しとなっている。石田氏は「不具合修正パッチの適用コストと比べたら問題ない」と話す。新たにかかるコストよりも、これまでかかっていたコストを削減できる効果が大きいから割に合う。さらにクラウドサービスなのでスケールも容易だ。
強いて問題を挙げるとするとパフォーマンスだ。知話輪に入力してから自然言語解析し、INSUITEからスケジュールデータを引っ張ってくるまで、およそ2~3秒かかる。原因には、LUISのサーバーが海外にあるなど、さまざまな要素が絡んでいるようだ。しかし、知話輪が非同期動作のチャットボットであるため、そこまで大きな問題にはなっていない。
いくつかの課題はありつつも、「変えられない」環境で機能の一部をクラウドに移行し、マイクロサービス化して得たメリットは大きい。これがブレイクスルーの足がかりとなりそうだ。石田氏は「これでコンテナやサーバーレスなどのビッグウェーブに乗れます」と意気揚々と話す。
最後に、石田氏は新しい技術を取り入れることで開発者の生産性向上につながることを強調。古い技術を厳密に保守管理していると、なかなか生産性を上げられない。「みんなで苦労の連鎖を断ち切ろう。そして明日のエンプラ業界を変えていこう」と、石田氏は聴衆に呼びかけてセッションを締めくくった。
お問い合わせ
株式会社ドリーム・アーツ