DB DB etc. AWS ストアド ストアド ストアド IIS (API) API Gateway ・URLのパスによって、各サービスにルーティングする ・認証 ・IP制限 ・タイムアウト ・リトライ ・加重ルーティング などをGo言語で実装したGateway ZOZOTOWN modernization
DB DB etc. AWS ストアド ストアド ストアド IIS (API) ID認証API DB(RW) API Gateway 更新系ワークロードのリプレイス第一弾として、ID認証APIのリプレイスを達成 これをZOZOTOWNの1つのマイクロサービスの型として、さらなるリプレイス・マイクロサービス化を加速 ZOZOTOWN modernization
DB DB etc. AWS ストアド ストアド ストアド IIS (API) ID認証API DB(RW) API Gateway ZOZOTOWN modernization 検索サービスも リプレイスしよう! カート決済も リプレイスしたいね BFF(Backends for Frontends) レイヤーもマイクロサービス化したい で、本番導入って何を準 備したら良いんだっけ?
パーソナライズ API モジュールAPI DB DB etc. AWS GCP ストアド ストアド ストアド IIS (API) API Gateway Aggregation API(BFF) 商品情報API 検索API DB (RO) Elastic search DB (RW) カート決済 API Kinesis DB (RW) ZOZOTOWN modernization
新しいアプリケーションをリリースする際に、最初からすべてのユー ザに公開するのではなく、一部のユーザに限定公開して、各種メトリ クスやサービス状況をモニタリングし、一定の基準をパスしたら、す べてのユーザにリリースする手法 20 New App Old App Old App Old App New App New App 90% 10% New App New App New App 100%
(コンテナの起動時間、postStartを考慮し、適切に小さい値を指定する) ➢ つまり、Podを安全に起動させる 34 Failure Testing Pod Schedule (optional) postStart readinessProbe OK initialDelaySeconds minReadySeconds livenessProbe readinessProbe Pod Available
✓ AZ障害があった場合に障害AZが切り離されシステムとして正常な状態 に回復する ✓ AZ障害が復旧した場合に元に戻る ➢ Pod Topology Spread Constraintsを利用して実現 ref. Kubernetes Novice Tokyo#16 「PodのAZ分散を実現する Pod Topology Spread ConstraintsとDescheduler」 Pod AZ障害 AZ 1 AZ 2 AZ 3 AZ復旧 Pod AZ 3 Pod Pod Pod Pod AZ 2 AZ 1 Pod Pod AZ 3 Pod Failure Testing
Breaker、早めのタイムアウトなど) App A App B App C App D App A App B App C App D App Dの障害によりApp Aに障害が波及しないように、以下のような対策をする • App A → App Dのリクエストを早めにタイムアウトさせる • Circuit BreakerによるApp Dの遮断 ref. Istioサーキットブレーカーで備えるマイクロサービスの連鎖障害 Failure Testing
ない、負荷が偏ったままにならないなど) App A App B App C App D App A App B App C App D App Dの復旧後、以下のようにApp Dへのリクエストが安全に再開される • Kubernetes ServiceによるL4レベルのラウンドロビンバランシングが行わ れ、App Dへのリクエストを再開させる • Istio OutlierDetection の機能でCircuit BreakerはApp Dの復旧を検知し、 リクエストを再開させる Failure Testing
limitを設定する 55 App A App B App C App D Sentry Quota App A App B App C App D App A App B App C App D Sentry Quota App A App B App C App D サービスごとに rate limit 平 常 時 B 大 規 模 障 害 BのQuota消費により A, C, Dもエラー通知で きない A, C, Dも引き続き エラー通知できる