11
Nodes
Mercari’s Microservice Architecture
Microservice B
Namespace B
Microservice B Microservice B Microservice B
Microservice C
Namespace C
Microservice C Microservice C
Microservice A
Namespace A
Service A Team
Service B Team
Service C Team
RBAC
RBAC
RBAC
Slide 12
Slide 12 text
12
Mercari’s Microservice Architecture
Project C
Project A
Service A Team
Service B Team
Service C Team
IAM
IAM
IAM
Project B
15
Application CI
Service A Team
Service B Team
Service C Team
Service A Repository
Service B Repository
Service C Repository
PR & Review
PR & Review
PR & Review
Circle CI
Cloud Build Container Registry
Project A
Cloud Build Container Registry
Project B
Cloud Build Container Registry
Project C
Slide 16
Slide 16 text
16
Kubernetes Resource
Repository
PR & Review
Service B Team
Service A Team
Service C Team
PR & Review
PR & Review
Kubernetes Manifest CI
19
Mercari’s CD
Service A Team
Service B Team
Service C Team Service C Application
Service A Application
Service B Application
Trigger
Trigger
Trigger
Microservice A
Namespace A
Microservice B
Namespace B
Microservice C
Namespace C
Deploy
Deploy
Deploy
Slide 20
Slide 20 text
20
Spinnaker
Slide 21
Slide 21 text
21
03 Problems with Microservices Architecture CI/CD
Slide 22
Slide 22 text
22
Problems with Microservices Architecture CI/CD
Microservice A
DB
Team A
マイクロサービスアーキテクチャは各マイクロサービスが
自律的に開発サイクルを回していく
という理念に根
ざしている。
+
24
Platform Team
Kubernetes Resource
Repository
PR & Review
Service B Team
Service A Team
Service C Team
PR & Review
PR & Review
Problems with Microservices Architecture CI/CD
Pull
Review
✅
✅
Slide 25
Slide 25 text
25
Problems with Microservices Architecture CI/CD
CPU limitsが
高い
latestタグを
使っている
記述的に間違っているわけではないので、このままでもApplyはできる
Namespaceが
サービスの名前に
合っていない
27
Problems with Microservices Architecture CI/CD
Item
Item
Listing
DB
Team C
User
DB
Team E
Item
DB
Team B
Shipping
DB
Team D
Timeline
DB
Team A
✅ カナリアデプロイ
✅ Blue-Greenデプロイ
✅ Blue-Greenデプロイ
❌ リリースフローに
沿わないデプロイ
❌ 雑なデプロイ
Slide 28
Slide 28 text
28
Problems with Microservices Architecture CI/CD
Item
Item
Listing
DB
Team C
User
DB
Team E
Item
DB
Team B
Shipping
DB
Team D
Timeline
DB
Team A
✅ カナリアデプロイ
✅ Blue-Greenデプロイ
✅ Blue-Greenデプロイ
❌ 雑なデプロイ
それぞれのマイクロサービスにデプロイ手法が委ねられていると
”デプロイの質” にも差が生じ、サービス全体の質へ影響する
❌ リリースフローに
沿わないデプロイ
38
Policies in CI/CD
Service A Team
Service B Team
Service C Team
Service A Application
Trigger
Deploy(kubectl)
Deploy
YAML
YAML
Deploy(kubectl)
Slide 39
Slide 39 text
39
Policies in CI/CD
Service A Team
Service B Team
Service C Team
Service A Application
Trigger
Deploy(kubectl)
Deploy
YAML
YAML
Deploy(kubectl)
Conftest Gatekeeper
41
Kubernetes Resource
Repository
PR & Review
Service B Team
Service A Team
Service C Team
PR & Review
PR & Review
Conftest in CI
Trigger
Circle CI
Policies(.Rego)
Platform Team
Maintain
✅
✅ Conftest validation
Slide 42
Slide 42 text
42
Kubernetes Resource
Repository
PR & Review
Service B Team
Service A Team
Service C Team
PR & Review
PR & Review
Conftest in CI
Trigger
Circle CI
Policies(.Rego)
Platform Team
Maintain
✗ Conftest validation
Slide 43
Slide 43 text
43
Kubernetes Resource
Repository
PR & Review
Service B Team
Service A Team
Service C Team
PR & Review
PR & Review
Conftest in CI
Trigger
Circle CI
Policies(.Rego)
Platform Team
Maintain
✗ Conftest Warning
✅
Best Pracitise is …
Please ...
Slide 44
Slide 44 text
44
Kubernetes Resource
Repository
PR & Review
Service B Team
Service A Team
Service C Team
PR & Review
PR & Review
Conftest in CI
Trigger
Circle CI
Policies(.Rego)
Platform Team
Maintain
✅
✅ Conftest validation
ローカル環境でも検証できるので素早く
フィードバックを得ることが出来る
50
Policies for Kubernetes Deployment
Service A Team
Service B Team
Service C Team
Service A Application
Trigger
Deploy(kubectl)
Deploy
YAML
YAML
Deploy(kubectl)
Conftest Gatekeeper
Slide 51
Slide 51 text
51
Policies for Kubernetes Deployment
Service A Team
Service B Team
Service C Team
Service A Application
Trigger
Deploy(kubectl)
Deploy
YAML
YAML
Feedbacks
(Area)
Bad(CD)
Deploy(kubectl)
Gatekeeper
Slide 52
Slide 52 text
52
Policies for Kubernetes Deployment
Service A Team
Service B Team
Service C Team
Service A Application
Trigger
Deploy(kubectl)
Deploy
YAML
YAML
Feedbacks
(Area)
Good
(CI)
Deploy(kubectl)
Conftest
Slide 53
Slide 53 text
53
Policies for Kubernetes Deployment
Service A Team
Service B Team
Service C Team
Service A Application
Trigger
Deploy(kubectl)
Deploy
YAML
YAML
Feedbacks
(Area)
Good
(CI)
Bad(CD)
Deploy(kubectl)
Conftest Gatekeeper
68
Service A Team
Service B Team
Service C Team
Configure
Configure
Configure
Managed Pipeline
Application A
Application B
Sync機能
Managed
Pipeline Template
Pipeline
Configurations
Pipeline
Configurations
Pipeline
Configurations
Spinnaker
Application C
Managed Pipeline
Managed Pipeline
Slide 69
Slide 69 text
69
Service A Team
Service B Team
Service C Team
Configure
Configure
Configure
Managed Pipeline
Application A
Application B
Sync機能
Managed
Pipeline Template
Pipeline
Configurations
Pipeline
Configurations
Pipeline
Configurations
Spinnaker
Application C
Managed Pipeline
Managed Pipeline
V2
Platform Team
デプロイ先を変更
Slide 70
Slide 70 text
70
Service A Team
Service B Team
Service C Team
Configure
Configure
Configure
Managed Pipeline
Application A
Application B
Sync機能
Managed
Pipeline Template
Pipeline
Configurations
Pipeline
Configurations
Pipeline
Configurations
Spinnaker
Application C
Managed Pipeline
Managed Pipeline
V2 V2
V2
V2
Platform Team
デプロイ先を変更
Slide 71
Slide 71 text
71
Service A Team
Service B Team
Service C Team
Configure
Configure
Configure
Managed Pipeline
Application A
Application B
Sync機能
Managed
Pipeline Template
Pipeline
Configurations
Pipeline
Configurations
Pipeline
Configurations
Spinnaker
Application C
Managed Pipeline
Managed Pipeline
Slide 72
Slide 72 text
72
Service A Team
Service B Team
Service C Team
Configure
Configure
Configure
Managed Pipeline
Application A
Application B
Sync機能
Managed
Pipeline Template
Pipeline
Configurations
Pipeline
Configurations
Pipeline
Configurations
Spinnaker
Application C
Managed Pipeline
Managed Pipeline
Platform Team
ベストプラクティスを追加
✅
Slide 73
Slide 73 text
73
Service A Team
Service B Team
Service C Team
Configure
Configure
Configure
Managed Pipeline
Application A
Application B
Sync機能
Managed
Pipeline Template
Pipeline
Configurations
Pipeline
Configurations
Pipeline
Configurations
Spinnaker
Application C
Managed Pipeline
Managed Pipeline
Platform Team
ベストプラクティスを追加
✅
✅
✅
✅