Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロサービス化に向けて

HIRA
May 30, 2019

 マイクロサービス化に向けて

2019.5.30 社内勉強会発表資料
2022.5.21 SlideShareから移行

HIRA

May 30, 2019
Tweet

More Decks by HIRA

Other Decks in Technology

Transcript

  1. メリット・デメリットのまとめ マイクロサービス モノリシック メリット ・運用後の開発が容易 ・サービスごとに適切な技術を採用できる ・必要に応じて一部のサービスの差し替え (作り直し)が可能 ・一部の障害が全体に影響しない ・開発の初期コストが低い

    ・技術が統一されており学習コストが低く、生産性が高 くなる ・ボトルネックを見つけやすい デメリット ・開発の初期コストが高い (特にインフラコスト) ・サービスをまたがる改修のコストが高い ・ボトルネックを見つけにくい ・技術的負債がたまりやすく、作り直しが困難 ・チームが大きいためコミュニケーションコストが高い ・運用後、開発速度が低下していく システム導入を目的とした場合モノリシックの方がメリットが大きい 一方、運用後のリリースサイクルの高速化を目的とした場合マイクロサービスのメリットが大きい
  2. マイクロサービス化へのアプローチ 機能 機能 DB DB ファイル データ共有/ETL連携 DB DB API連携

    機能 機能 http CSVなど 例えば、ファイル連携をAPIによる連携へ
  3. マイクロサービス化へのアプローチ フロント向けのバックエンドを用意した場合 各フロント向けのバックエンドを用意してサービス呼び出しを行う。 iOS バックエンド API API API Android バックエンド

    Webアプリ バックエンド IOS アプリ Android アプリ WEB アプリ フロント事情を各バックエンドが吸 収し、変更が他フロントに影響し ないようにする
  4. マイクロサービス化へのアプローチ モノリスの分割 データベースアクセス DB 受注 出荷 売上 請求 リポジトリ リポジトリ

    リポジトリ リポジトリ アプリケーションフレームのリポジトリレイヤを活用して、データベースアクセスを分割。 外部参照が必要な場合は、別リポジトリを経由して取得する。
  5. マイクロサービス化へのアプローチ モノリスの分割 データベースリファクタリング 段階的な分割 モノリシックサービス モノリシック スキーマ A B モノリシックサービス

    A B A スキーマ B スキーマ A サービス B サービス A スキーマ B スキーマ 単一スキーマ スキーマを分割 アプリをサービスに分割
  6. マイクロサービス化へのアプローチ モノリシックサービス A B A スキーマ B スキーマ モノリスの分割 複数のトランザクションへの対応

    個別のトランザクション境界 一貫性が必要となる処理で複数のトランザクションが発生し、 一方が失敗した場合の対処 リトライ 失敗した処理をリトライできるようMQ(キューイング)を利用。 リトライにより処理を完了させる。 結果整合性 不整合な状態から最終的に整合性がとれる状態にすること。 分散トランザクションの制御は非常に困難。結果整合性を受け入れる必要がある。
  7. マイクロサービス化へのアプローチ チームを小さくして権限を委譲した場合の利点 • チームが小さいとコミュニケーションコスト(オーバヘッド)が小さくなり、コミュニケーション 頻度が向上する • サービスを所有すると責任感が生まれ自律性とデリバリの速度が向上する • チーム構造が技術境界に沿わない。メンバー全員が全てのレイヤを担当 チームがデプロイ・保守の責任を負うとデプロイしやすいサービスを作ろうとするため、結果サービスの保

    守性が向上する。DevOpsの文化が生まれる。 アプリ・DB・インフラというような技術ドメインでなくビジネスドメインに合わせてチームができると顧客中 心の姿勢を維持でき、サービスに関連するすべての技術を全体的に理解して所有するため、より多く の機能開発をやり遂げることができる。 コンウェイの法則