Microservices2022/02/15
View Slide
What is Microservices● Microservicesとは?○ 一つのアプリケーションを小さなサービスの集合体として開発するアプローチ○ 1つのことに集中しそれらを組み合わせる○ 正確な定義はない● pros○ Independently Deployable○ Technology Diversity○ Owned by a small team● cons○ Complexity○ Complexity○ Complexity
Microservices Patterns● Patterns○ API Gateway○ Choreography○ Microservice Chassis○ Service Discovery
Microservices Patterns● API Gateway○ 外部クライアントからのすべての APIリクエストを受け付ける○ Backend serviceのAPIを合成して1つのAPIとして提供する○ Edge Functionの提供■ 流量制御■ キャッシング○ 課題■ パフォーマンス■ スケーラビリティ
Microservices Patterns● Choreography○ 非同期メッセージングパターンを使用してビジネス操作をコーディネートする○ サービスの数が増加しメッセージが増えると、サービス間のワークフローは複雑になる傾向がある○ ピタゴラスイッチ職人の誕生
Microservices Patterns● Microservice Chassis○ 各サービスで共通で必要な基盤を提供する○ サービスの新規作成が早く・簡単に○ 認証/認可, Observability, build設定など
Microservices Patterns● Service Discovery○ サービスのネットワークロケーションをクライアント( API Gateway や他のサービス)が、どうやって見つけるか?○ DNSも伝統的なService Discovery○ k8sが内部的に行っている
Real World Microservices● API Gateway @Uber○ https://eng.uber.com/architecture-api-gateway/
Real World Microservices● Orchestrator @Netflix○ https://netflixtechblog.com/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40
Real World Microservices● Microservice Chassis @Wantedly○ マイクロサービス共通ライブラリで “Governance through code” を実現する
Real World Microservices● Service Discovery @Netflix○ https://netflixtechblog.com/netflix-shares-cloud-load-balancing-and-failover-tool-eureka-c10647ef95e5
Real World Microservices● Microservicesは複数のServiceを協調させてひとつの系を成す
Real World Microservices● Microservicesは複数のServiceを協調させてひとつの系を成すソフトウェアの枠組みに収まる概念ではない
Real World `like` Microservices● 具体的に考えてみる○ 食器メーカー○ 食品メーカー○ 水道局○ 家具メーカー
The social division of labor● 社会的分業○ 労働が社会のさまざまな生産分野に専門化することによってつくりだされる社会経済的編成○ 現実社会もまた専門性を組み合わせるひとつの系である
CADDi as Microservices
CADDi as Microservices● Patterns○ API Gateway○ Choreography○ Microservice Chassis○ Service Discovery
CADDi as Microservices● API Gateway○ 顧客からの発注(Request)に対して、複数のSP(Service)に発注し製品を納品 (Response)する○ キャッシュはCADDiでかかえる在庫と置き換えることができる■ 似たようなリクエスト = リピート品?■ Cache Hit Ratio = 在庫引当率?○ 流量制御はSPの負荷を考慮して発注を行うことCADDiSPSPSP顧客顧客
CADDi as Microservices● Choreography○ メッセージを製品と置き換えることができる?○ 各SPで加工(Process)を行って次の工程を行う SP(Service)に発送(Publish)する○ Service数が増えてくると複雑度が増すということを考えると、 SC設計/運用はChoreographyよりもCADDiを中心にしたOrchestrationの方が良さそう
CADDi as Microservices● Microservice Chassis○ サプライチェーンを構成する全 SPに共通した機能 = SPP?○ AnchorをSPに配布することでSP側での在庫情報などの Observabilityを上げることを考えられるかもしれない
まとめ● Microservicesは1つの系である● Microservicesの考え方はソフトウェアの枠を超える● CADDiをMicroservicesと置く思考実験