SoundCloud、Meetup、SeatGeek での経験をもつ Phil Calçado 氏は、キャリアを通じてモノリスからマイクロサービスアーキテクチャへの移行プロジェクトを経験している。近年では、サーバーレスへの移行が課題となってきている。QCon New York でのプレゼンテーションでは、彼はサーバーレスの概念とマイクロサービスを交えて彼の経験を語った。
以前 Meetup と SoundCloud で働いており、現在は SeatGeek に在籍している Calçado 氏は、マイクロサービスを高度に分散されたアプリケーションアーキテクチャであると定義したうえで、インフラに焦点を置きすぎていると彼が感じる分散システムと対照的にビジネスロジックに焦点をおいている分散アプリケーションについて強調した。
彼のマイクロサービスの観点からすると、 Calçado 氏はサーバーレスを定義することは困難であることに気づき、人によって異なる定義がなされていると指摘した。彼は Symphonia の Mike Roberts 氏 と John Chapin 氏による著作 What is Serverless? を引用した。サーバーレスの大きな特徴は、コードとサービスの概念が分離されていることである、と彼は指摘した。すなわち CPU、メモリといったことを気にしなくてよいということだ。
Meetup はニューヨーク市のスタートアップのひとつであり、大半は大きいモノリシックな JVM ベースのアプリケーションで構成されている。これは非常に扱いづらい。サーバーレスへ移行するため、彼らは新しく非同期なイベントベースの設計を構築するためのプロジェクトを立ち上げた。この新しい設計では、モノリスのデータベースの変更からイベントが発行され、それらイベントは Lambda 関数によって保存、処理される。そして最終的にビジネスルールとして必要な特定のビュー (CQRS プロジェクション) に保存される。
プロジェクトはうまくいかず、彼らはアプローチをリバートして API を使用する方針でやり直すことになった。よく発生した問題としては、バグ修正のために毎回すべてのデータを再処理しなければならないということがあった。コードの変更はロジックの変更であり、ビューにおけるデータが誤っていることになるからだ。ほかの問題は、モノリスへの書き戻しをどうするかということだった。これは完全にやろうとすると非常に複雑になるため、現実的な手法を採り、書き込みの API としてレガシーコードを使用することにした。しかしこの解決方法によって、データ読み込み中のイベントや Lambda 関数の動作のすべてが重要かどうか、という問題を引き起こした。そして最も大きな問題が、ガバナンスの欠如だった。関数がどこにデプロイされたか、どれがプロダクションにあるのか、といった問題についてコントロールできなかったのだ。
Calçado 氏は、いくつかのことは期待よりもはるかにうまくいった、と述べた。新しいエンジニアの立ち上げは期待していたよりもずっと早かった。また開発チームが個別に動いて個別にデプロイすることはもともとの期待よりもうまくできた。その要因としては、 Lambda 関数のサイズの小ささが影響している、と彼は考えている。それによってすべての権限をもつことが容易になった。開発者の喜びだけが彼の期待を上回ったのだ。
Calçado 氏がサーバーレスにみる問題は、マイクロサービスを用いると限られた数のサービスでしかないものが、サーバーレスを用いることによってそれらが膨大な数の関数に分割されることだ。これらの関数は他の関数とP2Pネットワークの形式で通信することがあり、それによって何が起こっているのか把握するのが非常に困難になる。彼は Chris Ford 氏のツイートを引用し、こう呼んだ。
ピンボールマシンアーキテクチャー
こうした種類のアーキテクチャーを避けるため、彼は Martin Fowler 氏の2002年の記事 Public versus Published Interfaces に言及した。パブリックなインターフェイスであっても、使用すべきではない。ライブラリのプロバイダーや同様の種類のソフトウェアは交付済みインターフェイスを提供すべきで、これのみが使用されるべきだ。この考えに基づいて、 Calçado 氏と彼のチームはすべての関数をグループ分けし、その前に API ゲートウェイを置いた。そしてその API ゲートウェイはそれらの関数にアクセスするための唯一の手段となるようにした。これは、演算器としての関数でサービスを構成することに似ている、と彼は考えている。マイクロサービスを構築するブロックとしてサーバーレスを使うのだ。
Calçado 氏は、 Meetup ではすべて AWS で構成したが、たとえ Amazon 方式ですべてをこなしたとしても、開発チーム全体の10%はツールとプラットフォームに専念していただろう、と述べた。互いにコミュニケーションをとっていないなど、やるべきことは多い。
彼らが成し遂げたことを振り返ると、 Calçado 氏はこれが本当にサーバーレスなのかは確証をもっていない。しかし重要なことは、彼らがなんとか巨大で複雑なレガシーアプリケーションからサーバーレスコンピューティングの世界へ導いたということだ、と彼は強調した。彼は、サーバーレスが未来のように見えたとしても我々はまだそこにはいない、と述べた。しかしより良いツールによって、それは正しい道になるはずだと彼は信じている。
Calçado’ 氏のプレゼンテーションは記録されており InfoQ にて9月下旬に公開される予定。