BT

GOTO Berlin: マイクロサービスを用いたWunderlistの再構築

| 作者: Jan Stenberg フォローする 29 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年11月26日. 推定読書時間: 3 分 |

原文(投稿日:2014/11/08)へのリンク

大規模な再開発を何年も経験して,そこで破棄されるソフトウェアの開発に人々がどれほど時間を費やしたかを目の当たりにしたChad Fowler氏が,GOTO Berlin Conferenceで次のように宣言した - レガシシステムを,今日一般的に思われているような悪いものとしてではなく,次なる世代へ向かおうと我々を奮い立たせる,ポジティブな存在として考えるべきだ,と。

Wunderlistの開発企業である6WunderkinderにCTOとして参加した氏が目にしたものは,巨大なモノシリックのRailsアプリケーション,巨大なモノシリックのデータベース,そしてモノシリックなデプロイプロセスだった。モノリス構築の一因となっている,大きな問題のひとつだと氏が見ているのが,システムの肥大化と複雑化に伴って,その拡張を維持したいがために,周辺に抽象的な概念を作り上げる行動だ。そうではなく,独立性と交換可能性を維持したいのであれば,一点レベルの分離性を確保するため,全体を非均質なものにする必要がある,と氏は考えている。氏がマイクロサービスアーキテクチャを採用したのは,そのような発想からだった。

システム全体を書き直す代わりに,氏らは,新機能を新たにサービスとして実装する作業に着手した。それと並行して,新システムのプロトタイピングを開始した。また,巨大なデータベースを分割すると同時に,全データのマイグレーションを兼ねて,より小さな複数のデータベースに置き換える作業を行った。作業がすべて終わる頃,新しいアーキテクチャの動作に確信を持った氏らは,バックエンドとクライアントの一部を対象とする新たなアーキテクチャ全体を作り出すため,大規模な再開発を実施したのだ。氏にとって誇りに思えるものでなかったにせよ,開発は問題なく終了した。

新しいアーキテクチャでは,すべての要求は最上位にあるWebソケットサーバを経由して到着する。Webブラウザからの要求を受けたWebソケットサーバは,ストリーミングコンテントが準備完了すると,それを返送する。その下には,より従来的なHTTPサーバがあって,1レベルの認証と承認を処理する。これら上位2層は,システムとの対話点の統一性を維持しながら,多数のサービスに分割するための基本となるものだ,と氏は説明している。氏らのシステムには現在,約60のサービスからなるシステムバックエンドがある。必要な機能を探すために,これら60のサービスを意識しなければならないAPIの利用を開発者に強いるのではなく,ひとつのAPIとして公開することが必要だ,と氏らは考えているのだ。

2つの上位層の中には,さらに2つの内部的なサービス層がある。ひとつはユーザが要求を実行可能かをチェックする部分で,データベースとの接続をまったく持たない。もうひとつは,基本的にデータベースとして機能する層である。"タスクのタイトル変更"といったような変更が発生すると,その内容と項目に関する情報を保持する変更レコードが生成される。このレコードがピックアップされて,そのイベントを対象とする第2層のすべてのサービスに展開される。この方法のリスクは,変更がさらに同じタイプの変更イベントを生成して,実質的なループを生成する可能性のあることだ。氏らはこれを,頻繁なモニタリングを使うことで回避している。

モニタリングはこの種のアーキテクチャでもっとも重要なものだ,と氏は考えている。マイクロサービスを使うことのメリットのひとつは,問題のある部分を正確に特定できることだ。モノシリックな構成では,問題の所在を切り分けることが難しい作業になる。

GOTO Berlin Conference 2014は,550人の参加者と80人の講演者によって行われる,ベルリンで2回目のGOTOカンファレンスである。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT