オライリーの「マイクロサービスアーキテクチャ」の発売を記念したイベント、Microservices Casual Talksにマイクロソフトまで行ってきた。
マイクロソフトがマイクロサービスのイベントをやる。マイクロつながりだなと思った(雑)。
以下感想とかメモ。
マイクロサービスの事例
マイクロサービスの原則や、事例などを知ることができておもしろかった。Giltのマイクロサービスの例では最初はRialsのモノリシックなアプリケーションが、今ではPlayFrameworkによる数百個単位のマイクロサービスになっているというのが衝撃的だった。AWSのt2.microのインスタンスを大量に立てているというのがおもしろかった。
Giltについては以下のページが参考になる。
SoundCloudの例では大きなマザーシップなアプリケーションはそのままにして新しい機能をマイクロサービス化していく手法が紹介されていた。はじめはパブリックなAPIをマイクロサービス化したサービスがたたきに行く手法をとり、次にイベントを通知する仕組みを入れ、パブリックなAPIだとパブリックな情報しかとれなくなるから内部にのみ公開するAPIを作りそこから情報をとるようにすると、いろいろ段階を踏んで失敗をしながらマイクロサービスかを進めているようだった。
SoundCloudについては以下のブログがわかりやすい。
AWSの例ではかなり細かい単位でマイクロサービス化されており、公開されているサービスはそれらの組み合わせで提供されているとのことだった。API経由で全ての情報を取得し、JSONの情報でのみやりとりをするというかなり重API主義で作られているようだった。
事例を聞いているとすんなりとマイクロサービスに移行できているものもあればそうでないものもあるというのがわかった。Giltは割とすんなりとマイクロサービス化できているようだけど、こううまくいくパターンはあまりないような気がする。SoundCloudの例は割とよくありがちな移行の仕方のように思えて、まずモノリシックなサービスはそのままおいておいて新しいサービスはマイクロサービス化していき、問題が起きたら各個撃破していく。それが現実的なのかななんて思えた。流行それなりに労力はかかりそうだけど。
クックパッドの事例
クックパッドの事例も紹介されていて内容は主にここに書かれていることを中心に紹介されていた。
デプロイの方法がおもしろく以下のような手順で行っているようであった。
- アプリケーションのCIが通るのを確認
- Dockerのイメージの作成。この中でprecompile済みのものを入れる。
- Stagingに自動デプロイ。ここで最終的に確認をする
- Productionにデプロイ。chat opsでデプロイする
全てお膳立てされたDockerイメージができるので、負荷テストをしたいとかの要望があればすぐにできるというのがいい感じだと思った。
クックパッドの事例も何となくSoundCloudのと似ていて、大きなアプリケーションはそのままにしておいて新しいサービスはマイクロサービス化するという手法をとっている。大きくなってしまってすぐに細かくできないときはそうするしかないのかもしれない。
認証問題について
認証について質問した(というか質問しろと同僚からせっつかれた)。
MicrosoftやAWSの認証サービスは中央集権的な一つのサービスに依存しており、それを担当する人はそれ専属でやる人が頑張っている模様。ここは結構難しいところでまだベストプラクティスが見つかっていない。クックパッドは各サービスごとにデリゲートされた認証システムを現在考案中。ここも技術基盤を中心に行う人が考えている。
認証は難しい課題でどこも苦労しているという印象。それ故に技術基盤とかの専門のチームが請け負ってかなり頑張る必要がありそう。アーキテクト職の人がめちゃくちゃ頑張るのかも知れない。
まとめ
いろいろな事例を知ることができておもしろいイベントだった。マイクロサービスアーキテクチャは一度通読したのだけど、このイベントをうけてもう少し理解を深められそうな気がするのでまた読み直そうと思う。
自分の理解ではマイクロサービスの大事なところはレジリエンス性の確保で、システムが止まらないようにサービスの開発や障害対応ができるようになることだと思っている。なので中途半端に導入してより事態が悪化するのは避けたいところ。他に方法があるかは知らないけれど、障害に強くなるのであればマイクロサービスでなくてもいいのかもしれない。
いろいろ刺激を受けたイベントだった。
- 作者: Sam Newman,佐藤直生,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/02/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る