13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「Microservices Meetup vol.2」行ってきたメモ。

Last updated at Posted at 2016-08-09

登壇者はFitbit装備が義務付けられる様子……。

「マイクロサービスとSREの役割」by 鈴木氏 @kenjiszk (株式会社FiNC)

SRE = Site Reliability Engineering

サービス増える→サーバー増える→サーバーごとの設定等の同期が大変←つらい

サービスごとにSRE担当貼り付けたい→リソース足りない→担当できる人増やしたい

Dev/SREでキレイに分けるんじゃなくて、垣根は低く担当業務はクロスオーバーする

とはいえ、分ける部分はあるよね。
DBのパスワードとか。

「SRECon 2016 Wrap Up」by 坂本氏 @takus (スマートニュース株式会社)

n億行を秒単位で返す druid.io

SmartNewsには海外カンファレンスのチケット、ホテル代を負担してくれる神福利厚生(自主渡航制度)がある。

マイクロサービスは当たり前
netflix, uber, ...

NetFlixの例

190ヶ国を5人のSREで担当している

Freedom & Resonsibility

開発者全員がシステムを壊せるくらいの権限を与えられている

誤操作で壊さないのか?
→SREがツールを提供、ミスしやすいツールは使えない

Spinnaker デプロイツール
デプロイ後に一定時間ロールバックできる仕組みを自分たちで作る

社内向けツールでもプロダクト開発のつもりで作る

SmartNewsの場合

社内PaaS

  • 社内の課題を見つける
  • ドッグフーディングする

自分が導入したxxxが使いやすいのか日々自問自答している

Uberの場合

udestroy
自分たちで自分たちのシステムを壊すツールを作る

めったに起きないことには時間を割きにくい

壊して止まるサービスにはしない

良い習慣を自然につくる

  • Chaos Engineering : 定期的に壊しにかかる
  • デプロイして問題があったらロールバック
    • どんどんデプロイして欲しい

Googleの場合

  • 50%ルール
    • 球拾い的な仕事を50%やらない、50%超えるなら働き方を変える

「マイクロにしすぎた結果がこれだよ!」by 榎本氏 @mosa_siru (株式会社Gunosy)

  • リソース単位でスタックを分ける
  • スタックをまたぐ通信はAPIで
    • ガチガチめにマイクロサービスな設計

マイクロサービスにした理由

writeタイミングを見合わせたり、バッチタイミングをずらさないと行けなかったり、手で変なデータ入れられてたりした。
DBディストピア

OpsWorksで管理されていたのでやりやすかった

でもやり過ぎた

  • 45個のリポジトリ
  • 30のワーカー
  • ピタゴラ装置も出来てしまった

デメリット

  • 全体構成が複雑になる
    • 機能追加で3レポジトリ更新したり
  • 開発速度が遅くなった
    • やらないといけないオーバーヘッド処理が多い
  • 障害児の調査範囲が広い(わかりにくい)
  • オーバーヘッドが大きい
    • スタックまたぎが増える
    • リソースの融通がしにくい
  • 共通部分の更新で10とか20デプロイ必要になる
  • APIのIF更新が辛い
  • 管理画面を作るのが辛い
    • DBアクセスのためにもAPI経由するべき
    • 管理画面のためにCRUD APIを作った

DBディストピアを防ぎたいだけならマイクロサービスではなく、アーキテクトが必要だった?

メリット

  • DBディストピア防止
  • 影響範囲が局所化
  • 制約のために学びがあった
  • メンバ追加が容易に
    • 全体把握しなくても参入できる
  • スケールしやすさを得た

デメリットが目立つが、スケールすることを考えると再評価が必要

まとめ

  • マイクロサービスは組織論
    • 大きくなった時に効いてくる
    • 新規事業ではオーバーヘッドが大きい
  • 状況に応じて分割粒度を見定める
    • (原理主義にならない)

「Microservicesの実際と対策」by 大谷氏 @shot6 (株式会社 ファーストリテイリング)

Bisiness Logicにまつわる6つの要素

Queue, View, REST, File, Notification(Email/Push), Database(RDB/NoSQL)

技術的な話

  • AWS + Azure (マルチクラウド→しんどい)
  • Jenkins
    • 100サーバ→トラフィック見て40サーバくらいに減らしてる
  • Node.js
  • elastic search (aws, elastic) + logstash -> kibana
  • mesosphere
    • 先行的に試している
  • KONG
    • API Gateway
  • Slack
    • fab

チーム的な話

技術的な面よりもチームの話が大事

  • デプロイをパラレルで行うような大規模チームでないと効果が上がらない 
  • リファクタリングはしやすい
  • 十分な複雑さがないとペイしない
    • ビジネスライン
    • ステークホルダー
    • 変化への追従スピードを求められる
    • 投資できる

マイクロサービスは体制が大事

  • 専門スモールチームが必要
  • ビジネス、開発、インフラ、アーキテクトが一体になってすすめるスタイル
  • バックアップメンターがいると良い

なぜマイクロサービスか

  • 技術力のある数名で最大限に見る

    • 頭数揃えてもダメ
    • 技術を徹底活用して多くを見る
  • アプリ開発からプラットフォーム開発

    • 意識を変える必要がある
  • 運用面の懸念はまだ払拭されていない

    • 既存システムとの連携とか
    • データ一貫性の問題
  • チーム編成に投資が必要

    • モノリシックの方がコストは安く上がる
    • アーキテクトの力が必要
    • 組織、カルチャーを変えられないならやめたほうがいい
  • ビジネスマターではない共通な課題をどうするか

    • SREチーム的なものが必要
  • 現時点で答えがあるわけではない

    • 海外では大手が人材獲得を進めている
      • Nike, Coca, GE, DowJones, ...

技術的な課題

  • マイクロサービス間の通信
    • 可視化しないとわからない
  • 依存関係の把握
  • マイクロサービスのテスト
    • Dockerにすりゃいいわけでもない
    • コンポーネント間テストが難しい

ウェルネスタイム (大好評、FiNCトレーナーによるストレッチタイム)

HIIT
タバタプロトコル
4分で1時間の運動効果

「より良いAPIを作るために」by 相川氏 @awakia (ウォンテッドリー株式会社)

綺麗なAPI速習会

インフラに求められること

  • どんどんサービスを提供していきたい
  • 新しい技術、Architechture使いたい

Wantedlyの現状

  • Dockerは1年半前から導入
    • Herokuからの移行
  • OSはCoreOS

マイクロサービスとは

2002年のAmazon社長が出した司令がわかりやすい

APIで全てを行えばよいっぽい

wantedlyの仕組み

APIGatewayにKONGを使って集約している(KONGが必須パターン?)

BFF(Backends for Frontends)
シンプルなAPIサーバ(Go)をバックエンドにおいて、フロントエンドとの間にビジネスロジックを含むBFF APIサーバ(Rails, Node.js)をもう1段用意するのが良さそう

?fieldクエリ

  • Facebookは?fieldクエリでだけ結果を返す
    • 通信量を減らしたいので必要なフィールドだけ返す

?preloadsクエリ

  • 通常のAPIレスポンスはフラットなJSONで返す
    • 詳細情報が欲しい時に?preloads=acccountなどとして、ネストしたJSONを返す

バージョン、メタ情報

  • URLに/v1/とかするのではなく、Acceptsヘッダに持たせたり
  • ページング情報もJSONじゃなく、ヘッダに持たせるのが流行

サーバジェネレータ作りました
https://github.com/wantedly/apig

まとめ

発表や懇親会で話を聞いた私の印象。

  • (Microservicesは)ある程度規模が大きくないと旨味がない
  • 高スキルなエンジニアを要する / 知見のあるエンジニアのフォローがないとつらい
    • 徹底した技術の活用を行うため
  • 社内カルチャーから見直さないとうまくいかない(Microservicesは組織論)
  • ネットだと(特に原理主義的な)記事が多いが、プロダクトレベルで実践している人ってあまりいないんじゃ?
  • モノリシックとマイクロサービスの中間地点のどこかに最適解がありそう
  • 大きな流れとしてはマイクロサービス化していく
  • 外に出るAPIはKONGでまとめておく
13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?