BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース マイクロサービスを使って学んだレッスン

マイクロサービスを使って学んだレッスン

原文(投稿日:2014/10/12)へのリンク

ここ2、3カ月の間、私たちはマイクロサービスに関して賛否両論を聞いてきた。マイクロサービスはただのSOAなのだろうか? 複雑なシステムを設計するのに本当に役立つだろうか? 議論で提案されることが何であれ、マイクロサービスベースのアプローチいくつかの企業はすでに移行しているか、今まさに移行しようとしている。マイクロサービスを使う企業から、肯定的、または、否定的な経験談を私たちが聞くのは当然のことだろう。最近、DropletのTom Livesey氏が、自分たちの経験を紹介した。 議論の背景を説明するために、Tom氏はDropletで必要だったことから話し始めた。

早く初期製品を出したい多くのスタートアップのように、私たちは、支払いから通知まで、すべてを扱う一体型のRailsアプリケーションに取り掛かりました。すぐに拡張する必要はありませんが、関心事を細かく分けて、機能を分割したほうが、多分やりやすいだろうと私たちは考えました。そして、徐々に、より小さな機能に分割し始め、今では、ほとんどSinatraかGoを使う20以上のサービスがあります。

Tom氏の記事は、自分たちの開発から学んだ7つのレッスンについて書かれている。

やりすぎないこと: マイクロサービスのマイクロは、本当にそのまま文字通りにとらえるべきです。サイズやコードの行数に関して厳しいルールがあるとは考えていませんが、自分のサービスが何をしているか、その責務が少なくて、うまく定義されているかどうか、かなり注意して考えければなりません。

これは興味深いことだ。人々がマイクロサービスという言葉によって、特定のコード量を決める必要があると考えることを私たちは聞いていた。それは、新しい言葉であるナノサービスも同じだ。そして、Tomのリストの中で、彼はすべてを公開することにしたと述べている。

メールを送って、通知を出すような非同期のイベントを扱うために、他のサービスが特定のイベントを聞いて、アクションを取れるようにする、ある種のメッセージングキューを利用するのは当然でしょう。 [...] 私たちのモットーはすべてを公開することですが、残りのシステムはつまらなく、無意味に見えるかもしれません。公開は非常に簡単で、特定のイベントに興味を持っているサービスが0でも1000でも、公開する側が知る必要はありません。ただ公開して、忘れます。これは、非常に強力で、マイクロサービスを信じられないほど素早くビルドして展開できるようにします。

マイクロサービスとデータに関して、Tom氏は次のように語っています。

私たちがDropletの新しいバージョンをビルドするとき、数週間のうちに10個の新しいサービスを追加しました。 [...] このサービスはアカウントのアップデートイベントを聞き、自分自身のバージョンのデータを適切にアップデートしました。各サービスはそれぞれデータストアを持つべきであり、サービス間でデータベースを共有するのは悪いプラクティスですが、仕組みとしてデータを最新にし続けられる限り、キャッシュしたデータを他のサービスと分けるのは、悪いことではありません。

何年もの間、私たちはSOAとコントラクトが非常に重要であることを話し合ってきた。コントラクト成熟モデルコントラクトバージョニング、または、SOAパターンの受け入れられた部分であっても、コントラクトはウェブサービスやREST、その他の実装アプローチにおいて、何年もの間SOA開発の重要な部分となっている。そのため、Tom氏はコントラクトの必要性についても述べている。

サービスのインターフェースを変更することは、そのインターフェースを使うすべてのサービスを変更しなければならないことを意味します。その数は1つかもしれないし、1000かもしれません。このことにより、将来のすべてのクライアントの要求を満たすように、事前に考え、APIを設計するようにしなければならず、実際には優れたAPIのプラクティスを作り出すようになります。APIのバージョンを追加したり、データ表現をバージョンで分けたりすることはできますが、作業を事前にやっておくほうがずっと簡単でしょう。

マイクロサービスを使うことに投資する価値があるとDropletが信じていることを、Tom氏の結論ははっきりと示す。

マイクロサービスインフラストラクチャの構築を選択するのは、投資であることを否定するものではありません。Droplet は最近やっと赤字がなくなり、ようやく利益が出始めたところです。サービスを立ち上げ、展開することは非常に素早く簡単に実行できます。仕事で最高のツールを簡単に使えたり、システムの他の部分への影響をもっとも少なくする、新しい技術を試せたりすることを知るのは素晴らしいことです。

ここ2、3年、SOAやREST等に対して他のアプローチで行ったように、マイクロサービスを使った経験について、これからもっと聞くことになるだろう。これらの経験は、人々に強い影響を与えるかもしれない。また、必要があれば、ベストプラクティスやパターンを使って、マイクロサービスを発展させていくだろう。

この記事に星をつける

おすすめ度
スタイル

BT