Slide 1

Slide 1 text

Microservices 2022/02/15

Slide 2

Slide 2 text

What is Microservices ● Microservicesとは? ○ 一つのアプリケーションを小さなサービスの集合体として開発するアプローチ ○ 1つのことに集中しそれらを組み合わせる ○ 正確な定義はない ● pros ○ Independently Deployable ○ Technology Diversity ○ Owned by a small team ● cons ○ Complexity ○ Complexity ○ Complexity

Slide 3

Slide 3 text

Microservices Patterns ● Patterns ○ API Gateway ○ Choreography ○ Microservice Chassis ○ Service Discovery

Slide 4

Slide 4 text

Microservices Patterns ● API Gateway ○ 外部クライアントからのすべての APIリクエストを受け付ける ○ Backend serviceのAPIを合成して1つのAPIとして提供する ○ Edge Functionの提供 ■ 流量制御 ■ キャッシング ○ 課題 ■ パフォーマンス ■ スケーラビリティ

Slide 5

Slide 5 text

Microservices Patterns ● Choreography ○ 非同期メッセージングパターンを使用してビジネス操作をコーディネートする ○ サービスの数が増加しメッセージが増えると、サービス間のワークフローは複雑になる傾向がある ○ ピタゴラスイッチ職人の誕生

Slide 6

Slide 6 text

Microservices Patterns ● Microservice Chassis ○ 各サービスで共通で必要な基盤を提供する ○ サービスの新規作成が早く・簡単に ○ 認証/認可, Observability, build設定など

Slide 7

Slide 7 text

Microservices Patterns ● Service Discovery ○ サービスのネットワークロケーションをクライアント( API Gateway や他のサービス)が、どうやって見 つけるか? ○ DNSも伝統的なService Discovery ○ k8sが内部的に行っている

Slide 8

Slide 8 text

Real World Microservices ● API Gateway @Uber ○ https://eng.uber.com/architecture-api-gateway/

Slide 9

Slide 9 text

Real World Microservices ● Orchestrator @Netflix ○ https://netflixtechblog.com/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40

Slide 10

Slide 10 text

Real World Microservices ● Microservice Chassis @Wantedly ○ マイクロサービス共通ライブラリで “Governance through code” を実現する

Slide 11

Slide 11 text

Real World Microservices ● Service Discovery @Netflix ○ https://netflixtechblog.com/netflix-shares-cloud-load-balancing-and-failover-tool-eureka-c10647 ef95e5

Slide 12

Slide 12 text

Real World Microservices ● Microservicesは複数のServiceを協調させてひとつの系を成す

Slide 13

Slide 13 text

Real World Microservices ● Microservicesは複数のServiceを協調させてひとつの系を成す ソフトウェアの枠組みに収まる概念ではない

Slide 14

Slide 14 text

Real World `like` Microservices ● 具体的に考えてみる ○ 食器メーカー ○ 食品メーカー ○ 水道局 ○ 家具メーカー

Slide 15

Slide 15 text

The social division of labor ● 社会的分業 ○ 労働が社会のさまざまな生産分野に専門化することによってつくりだされる社会経済的編成 ○ 現実社会もまた専門性を組み合わせるひとつの系である

Slide 16

Slide 16 text

CADDi as Microservices

Slide 17

Slide 17 text

CADDi as Microservices

Slide 18

Slide 18 text

CADDi as Microservices ● Patterns ○ API Gateway ○ Choreography ○ Microservice Chassis ○ Service Discovery

Slide 19

Slide 19 text

CADDi as Microservices ● API Gateway ○ 顧客からの発注(Request)に対して、複数のSP(Service)に発注し製品を納品 (Response)する ○ キャッシュはCADDiでかかえる在庫と置き換えることができる ■ 似たようなリクエスト = リピート品? ■ Cache Hit Ratio = 在庫引当率? ○ 流量制御はSPの負荷を考慮して発注を行うこと CADDi SP SP SP 顧客 顧客

Slide 20

Slide 20 text

CADDi as Microservices ● Choreography ○ メッセージを製品と置き換えることができる? ○ 各SPで加工(Process)を行って次の工程を行う SP(Service)に発送(Publish)する ○ Service数が増えてくると複雑度が増すということを考えると、 SC設計/運用はChoreographyよりも CADDiを中心にしたOrchestrationの方が良さそう

Slide 21

Slide 21 text

CADDi as Microservices ● Microservice Chassis ○ サプライチェーンを構成する全 SPに共通した機能 = SPP? ○ AnchorをSPに配布することでSP側での在庫情報などの Observabilityを上げることを考えられるか もしれない

Slide 22

Slide 22 text

まとめ ● Microservicesは1つの系である ● Microservicesの考え方はソフトウェアの枠を超える ● CADDiをMicroservicesと置く思考実験