2015で
Adrian Trenaman氏が,モノシリックなRuby on Railsアプリケーションから,Scala,Docker,AWSを活用したクラウドベースのマイクロサービスによる‘LOSA(Lots of Small Application)’プラットフォームへという,
Gilt.comアーキテクチャの発展について講演した。その中で氏は,Giltがスタートアップから10億ドル企業へと発展した過去8年間に,技術面と組織面の両方から学んだ教訓を公開している。
の技術担当副社長を務める
Trenaman氏の講演は,Gilt Groupeが提供する中心的ビジネスとそのテクノロジの紹介から始まった。Gilt.comは,高級ブランドやライフスタイルグッズの
フラッシュセールを専門とするオンラインショッピングWebサイトで,米国を基盤にしている。フラッシュセールの特徴は,Webサイトのトラフィックがセール開始の15分前に急激に上昇した後,2時間に渡って急速に低下し,低いレベルのベースラインに戻る,という動きを見せることだ。このようなトラフィックパターンの結果として,アプリケーション障害によるコストは,問題が発生した時刻に大きく左右される。
私たちのユーザは,バイソンの群れのように,毎日午後12時にサイトに殺到します。サービス拒否攻撃を毎日,自分たちから仕掛けているようなものです ...
Gilt.comのWebサイトは当初,PostgreSQLデータベースを使ったモノシリックなRuby on Railsアプリケーションとして,2007年に構築された。トラフィックの増加に伴ってmemcachedキャッシュレイヤが追加され,サイト内にあったいくつかのビジネス機能が,一連のバッチプロセスジョブに移行された。その後,4年間に及ぶトラフィックの増加がオリジナルのアーキテクチャを圧迫し始めた。さらにアプリケーションのモノシリックな構造ゆえに,どのようなクラッシュでも,Webサイトとそれをサポートするビジネスアプリケーション全体のフェールを引き起こしていたのだ。
2011年になると,Java言語とJVM(Java Virtual Machine)がアプリケーションスタックに導入され,ビジネス機能をベースとして,サービスをオリジナルのモノリスから抽出する作業が開始された。元々あった単一データベースへの依存性が取り除かれたのもこの時期だった,と氏は述べている。開発に対する投資には,必ずそれ以上の何らかのリターンがあったのだ。ただし,小規模なサービスの大部分は,プライマリデータベースのデータを読み取り専用でコピーして保持していた。'カート'サービスは,
Voldemortベースのデータストアを独自に使って作られていた。
2011年当時のGiltのアーキテクチャについてTrenaman氏は,‘巨大で疎結合なJSON/HTTPサービス’と,そのサービスのバウンダリを越えて交換される,粒度の粗いキー/バリューマップとしてのデータで構成されていた,と説明している。同社が信じ難いペースで革新を続けるのに伴って,開発チームも意図しないまま,‘Swift’ビューサービスで新たなJavaベースのモノリスを開発することになり,それがイノベーションのボトルネックとなった。アーキテクチャの結果として,'重要視される部分と,そうでない部分を持った' コードベースが作り出されたのだ。
Trenaman氏は,Giltの技術的リーダシップが2011年に,戦略的イニシアティブ(いわゆる
逆コンウェイ戦略)を中心としたチーム再編を決定した様子について説明した。その最大の目的は,コードの実運用投入を容易かつ迅速に行えるようにするためだ。明示的なアーキテクトという役割はなかったが,Giltの技術カルチャと価値観によって,マイクロサービスベースの '
LOSA(Lots Of Small Application)'アーキテクチャが明確になってきた。個々のイニシアティブの下で作業するチームにはそれぞれ,目標とKPI(Key Performance Indicator)が設定され,多数のイニシアティブが開始された(2015年には,マイクロサービスの数が156に達している)。
JVM上で動作する
Scalaが技術スタックに導入されると,マイクロサービス数の成長はさらに加速された。Trenaman氏が説明するGiltの平均的なサービスは,2,000行のコードと5つのソースファイルで構成され,運用時には3つのインスンタンス上で実行される。また2011年から2015年の間には,レガシアプリケーションを
AWS(Amazon Web Services)へと“リフト・アンド・シフト”する決定も行われた。新たに開発されたマイクロサービスも,このプラットフォームにデプロイされている。Trenaman氏によると,Giltで運用しているサービスの大半は,AWS EC2の
t2.microインスタンス上で実行されているという。このインスタンスは,計算能力は比較的低いものの,‘
バーストに対応可能なパフォーマンス’を提供することができる。
Giltはマイクロサービスアーキテクチャに対して非常に積極的だ,とTrenaman氏は言う。同社にとって次のようなメリットがあるからだ。
Trenaman氏は同時に,マイクロサービスベースのLOSAアーキテクチャの実装には,さまざまな問題があったことにも言及している。