Slide 1

Slide 1 text

Copyright © ZOZO Technologies, Inc. All Right Reserved. 株式会社ZOZOテクノロジーズ 開発部 ZOZOリプレイスチーム リーダー 鶴見 純一 ZOZOTOWN システムリプレイス における Kubernetes 活用

Slide 2

Slide 2 text

アジェンダ  はじめに  ZOZOTOWN システムリプレイス  Kubernetes 利用  デプロイ手法  監視  まとめ Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 3

Slide 3 text

○ 日本最大級のファッションショッピングサイト/アプリ ○ 1,100以上のショップ、6,900以上のブランドの取り扱い (2018年9月末時点) ○ 常時65万点以上の商品アイテム数と毎日平均3,100点以上の新 着商品を掲載 ○ 即日配送サービス / ギフトラッピングサービス / ツケ払い な ど http://zozo.jp/

Slide 4

Slide 4 text

○ 日本最大級のファッションコーディネートアプリ ○ 1,200万ダウンロード突破、コーディネート投稿総数は800万件以 上(ともに2018年9月末時点) ○ 全世界(App Store / Google playが利用可能な全ての国)でダ ウンロードが可能 ○ 10万人以上のフォロワーを持つユーザー(WEARISTA)も誕生 https://wear.jp/

Slide 5

Slide 5 text

○ 当社が独自に開発した採寸用ボディースーツ ○ 全体に施されたドットマーカーをスマートフォンカメラで360度撮 影することで、体型データを計測 ○ 計測した体型データは、瞬時に3Dモデル化され、ZOZOTOWNア プリに保存。3Dモデルはあらゆる角度に動かすことができ、体型を 360度チェックすることが可能 http://zozo.jp/zozosuit/ Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 6

Slide 6 text

○「ZOZOSUIT」で計測した体型データをもとに、一人ひとりの体型 に合った「あなたサイズ」のアイテム ○「究極のフィット感」を実現したベーシックアイテムを提供 ○ グローバルサイト「ZOZO.com」で海外展開 ○ アイテム : Tシャツ、デニムパンツ、シャツ、ビジネススーツ、 ネクタイ、ボーダーTシャツ、長袖クルーネックTシャツ など http://zozo.jp/pb/ Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 7

Slide 7 text

はじめに ・ZOZOTOWN のシステムリプレイスを行い、 Kubernetes を採用した。 ⇒ Kubernetes を採用した経緯、利用方法を紹介。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 8

Slide 8 text

ZOZOTOWN システムリプレイス Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 9

Slide 9 text

ZOZOTOWN システムリプレイス経緯 ・長年の運用でレガシーなシステムとなっている。 更なる成長のためモダンな設計による柔軟なリソース確保 が必要と判断し、システムリプレイスを行った。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 10

Slide 10 text

ZOZOTOWN システムリプレイス経緯 ・長年の運用でレガシーなシステムとなっている。 更なる成長のためモダンな設計による柔軟なリソース確保 が必要と判断し、システムリプレイスを行った。 ⇒ リプレイス完了したのはまだ全体のうちの極僅かであり、 現在も引き続きシステムリプレイスを続けている。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 11

Slide 11 text

リプレイス前の問題点 ・オンプレミスのリソース確保は、 機器を購入する必要があるため数か月前から準備が必要。 ・アプリケーションがモノリシックであり、変更時の影響調査、 対応に時間が掛かる。 ・手作業の運用が多く、人手が必要。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 12

Slide 12 text

システムリプレイスの目的 ・柔軟で堅牢なシステムを作る! ⇒ インフラ、アプリケーション、運用を柔軟に行える システム構成や環境を整える。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 13

Slide 13 text

システムリプレイスにて行ったこと ・オンプレミスからパブリッククラウドへの移行。 ⇒ 柔軟なリソース確保 ・最先端サービス(技術)の積極的な採用。 ⇒ 手作業の部分を自動化させる。 システム変更に強くする。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 14

Slide 14 text

システム構成(リプレイス前) Copyright © ZOZO Technologies, Inc. All Right Reserved. Web / Application Server Database Server User オンプレミス

Slide 15

Slide 15 text

システム構成(リプレイス後) Copyright © ZOZO Technologies, Inc. All Right Reserved. Web / Application Server Database Server User オンプレミス API Database Server クラウド 専用線

Slide 16

Slide 16 text

システム構成(リプレイス後) Copyright © ZOZO Technologies, Inc. All Right Reserved. Web / Application Server Database Server User オンプレミス Database Server クラウド 専用線 API Kubernetes 利用

Slide 17

Slide 17 text

Kubernetes 利用 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 18

Slide 18 text

Kubernetes 導入前の課題 ・デプロイが手作業のため、人的ミスが起こりやすく、 時間が掛かっている。安全に素早くデプロイを行いたい。 ・柔軟にスケールさせたい。 ・運用負荷を減らしたい。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 19

Slide 19 text

Kubernetes 導入前の課題 ・デプロイが手作業のため、人的ミスが起こりやすく、 時間が掛かっている。安全に素早くデプロイを行いたい。 ⇒ Rolling Update で解決可能 ・柔軟にスケールさせたい。 ⇒ 水平Podオートスケーリングで解決可能 ・運用負荷を減らしたい。 ⇒ セルフヒーリング、Rolling Update で解決可能 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 20

Slide 20 text

Kubernetes 選定 コ ン テ ナ オ ー ケ ス ト レ ー シ ョ ン ツ ー ル が 多 々 あ る 中 、 Kubernetesを選んだ理由。 ・Kubernetes がコンテナオーケストレーションの デファクトスタンダードとなっている。 ・大手パブリッククラウドでマネージドサービスを提供している。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 21

Slide 21 text

Kubernetes マネージドサービス ・Azure ⇒ ACS / AKS / ACS Engine(OSS) ・GCP ⇒ Google Kubernetes Engine ・AWS ⇒ Amazon EKS Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 22

Slide 22 text

Kubernetes マネージドサービス ・Azure ⇒ ACS / AKS / ACS Engine(OSS) ・GCP ⇒ Google Kubernetes Engine ・AWS ⇒ Amazon EKS Copyright © ZOZO Technologies, Inc. All Right Reserved. Azure を選定 ・ZOZOオンプレミス環境と親和性が高い。 オンプレミスに近い環境に移行することで 移行コストや移行難易度を下げるのが狙い。

Slide 23

Slide 23 text

Azure マネージドサービス ・Azure Container Service(ACS) ⇒ Kubernetes、DC/OS、または Docker Swarmを サポートするマネージドサービス。 ・Azure Kubernetes Service(AKS) ⇒ Kubernetes に特化したマネージドサービス。 ・ACS Engine ⇒ ACS / AKS と同等の環境を構築できるOSS。 最新機能が優先的に導入される。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 24

Slide 24 text

Azure マネージドサービス ・Azure Container Service(ACS) ⇒ Kubernetes、DC/OS、または Docker Swarmを サポートするマネージドサービス。 ・Azure Kubernetes Service(AKS) ⇒ Kubernetes に特化したマネージドサービス。 ・ACS Engine ⇒ ACS / AKS と同等の環境を構築できるOSS。 最新機能が優先的に導入される。 Copyright © ZOZO Technologies, Inc. All Right Reserved. ACS Engine 利用 ・当初(2017年末)ACS、AKSを利用しようと 考えたが、VNETが使えないことがあり、 ACS Engineを選択。

Slide 25

Slide 25 text

Azure マネージドサービス ・Azure Container Service(ACS) ⇒ Kubernetes、DC/OS、または Docker Swarmを サポートするマネージドサービス ・Azure Kubernetes Service(AKS) ⇒ Kubernetes に特化したマネージドサービス。 ・ACS Engine ⇒ ACS / AKS と同等の環境を構築できるOSS。 最新機能が優先的に導入される。 Copyright © ZOZO Technologies, Inc. All Right Reserved. はじめて使う場合は、AKSがお勧め。 ・公式ドキュメントに使い方が載っている ・MSサポートへ問い合わせができる

Slide 26

Slide 26 text

システム構成(リプレイス後) Copyright © ZOZO Technologies, Inc. All Right Reserved. Web / Application Server Database Server User オンプレミス Database Server クラウド 専用線 API Kubernetes 利用

Slide 27

Slide 27 text

Kubernetes 設定 Copyright © ZOZO Technologies, Inc. All Right Reserved. API Database Server クラウド 線 Kubernetes(ACS Engine) Namespace: a Namespace: b Pod Pod Pod Pod Pod Pod

Slide 28

Slide 28 text

Kubernetes 設定 Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes(ACS Engine) Namespace: a Namespace: b Pod Pod Pod Pod Pod Pod Pod ⇒ 1個、または2個以上のコンテナの集まり 複数Pod ⇒ 違うPodを複数設置することが可能 ⇒ ReplicaSetという仕組みで、Podの複製を 作成し、冗長化することが可能

Slide 29

Slide 29 text

Kubernetes 設定 Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes(ACS Engine) Namespace: a Namespace: b Pod Pod Pod Pod Pod Pod Namespace ⇒ 仮想的なクラスタとして扱うことができる (任意の単位でPodをグループ化できる)

Slide 30

Slide 30 text

Kubernetes について 「安全にデプロイしたい」、「柔軟にスケールさせたい」、 「運用負荷を減らしたい」という課題を解決するための Kubernetes の機能を紹介。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 31

Slide 31 text

Kubernetes について ・Namespace ・セルフヒーリング ・水平Podオートスケーリング ・Azure 仮想マシンスケールセット Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 32

Slide 32 text

Kubernetes について ・Namespace ・セルフヒーリング ・水平Podオートスケーリング ・Azure 仮想マシンスケールセット Copyright © ZOZO Technologies, Inc. All Right Reserved. 安全にデプロイを行うために利用 システムを安定稼働 させるために利用 (スケール・運用負荷低減)

Slide 33

Slide 33 text

Namespace 利用 ・Namespace により仮想的なクラスタとして扱うことができる。 (任意の単位で Pod をグループ化できる) 例えば、Production 環境、Staging 環境などの切り分けを 行うことができる。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 34

Slide 34 text

Namespace 利用 Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Namespace : Staging Ver2.0 Pod Pod Pod Namespace : Production Ver1.0 Pod Pod Pod ・Namespace を利用し、Staging 環境、Production 環境と分けた場合、 Staging 環境だけにデプロイすることができる。 ・分離性を高めるためには、Network Policy や RBAC(Role Based Access Control)と呼ばれるロールを設定する。

Slide 35

Slide 35 text

セルフヒーリング Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Node Pod Pod ・ Replicas を設定し、Pod複製を作成する。 起動している Pod 数が Replicas に設定した数を下回った 場合、自動復旧する。 User Access 高負荷 設定値 Replicas:2 ※Kuberntes Node = Azure 仮想マシン

Slide 36

Slide 36 text

Kubernetes Node セルフヒーリング Copyright © ZOZO Technologies, Inc. All Right Reserved. Pod Pod ・ Replicas を設定し、Pod複製を作成する。 起動している Pod 数が Replicas に設定した数を下回った 場合、自動復旧する。 User Access Pod セルフヒーリング

Slide 37

Slide 37 text

水平podオートスケーリング Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Node Pod Pod ・minReplicas / maxReplicas に最小Pod数、最大Pod数を 設定することで、Podを自動スケールさせることが可能。 User Access 高負荷 設定値 minReplicas:2 maxReplicas:3

Slide 38

Slide 38 text

水平podオートスケーリング Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Node Pod Pod ・minReplicas / maxReplicas に最小Pod数、最大Pod数を 設定することで、Podを自動スケールさせることが可能。 User Access Pod スケールアウト

Slide 39

Slide 39 text

Azure 仮想マシンスケールセット ・Kubernetes は仮想マシン上で、動作している。 そのため、仮想マシンをスケールアウトさせることで、 負荷分散を行うことができる。 Kubernetes 1.12 にて Azure 仮想マシンスケールセット (VMSS)が安定版となった。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 40

Slide 40 text

Azure 仮想マシンスケールセット Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Node Kubernetes Node Pod Pod Pod Pod ・Kubernetes Node(仮想マシン)を自動スケールさせることが可能。 Access User 高負荷

Slide 41

Slide 41 text

Azure 仮想マシンスケールセット Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Node Kubernetes Node Pod Pod Pod Pod ・Kubernetes Node(仮想マシン)を自動スケールさせることが可能。 Access User Kubernetes Node Pod Pod スケール アウト

Slide 42

Slide 42 text

Kubernetes クラスタ分散 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 43

Slide 43 text

Kubernetes クラスタを分散 Copyright © ZOZO Technologies, Inc. All Right Reserved. ・システムを安定稼働させるために、複数リージョンで 冗長化させる。

Slide 44

Slide 44 text

Kubernetes クラスタを分散 Copyright © ZOZO Technologies, Inc. All Right Reserved. 西 日 本 Kubernetes 東 日 本 ・クラスタ分散させることでSPOF(単一障害点)を回避できる。 Kubernetes Namespace Pod Pod Pod Namespace Pod Pod Pod Kubernetes Namespace Pod Pod Pod Namespace Pod Pod Pod Kubernetes Namespace Pod Pod Pod Namespace Pod Pod Pod Namespace Pod Pod Pod Namespace Pod Pod Pod

Slide 45

Slide 45 text

デプロイについて Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 46

Slide 46 text

デプロイ システムリプレイス以前は、デプロイが手作業でありミスも起こりやすかった。 Kubernetes に変えてからは「canary リリース」「Rolling Update」を利用し、 安全に素早くデプロイを行えるようになった。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 47

Slide 47 text

Canaryリリース Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Namespace : a version : 2 Namespace : b version : 1 Pod Pod Pod Pod Pod Pod Namespace : c version : 1 Namespace : d version : 1 Pod Pod Pod Pod Pod Pod ・一部だけにリリースし、問題のないことを確認する。

Slide 48

Slide 48 text

Canaryリリース Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Namespace : a version : 2 Namespace : b version : 1 Pod Pod Pod Pod Pod Pod Namespace : c version : 1 Namespace : d version : 1 Pod Pod Pod Pod Pod Pod ・一部だけにリリースし、問題のないことを確認する。 ・Namespace を利用すると管理しやすくなる。 ・問題があった際は、すぐに切り戻すことで 影響を最小限に抑えられる。

Slide 49

Slide 49 text

Canaryリリース Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Namespace : a version : 2 Namespace : b version : 2 Pod Pod Pod Pod Pod Pod Namespace : c version : 2 Namespace : d version : 2 Pod Pod Pod Pod Pod Pod ・全台にリリースを行う。

Slide 50

Slide 50 text

Rolling Update ・稼働したまま安全にPodの入れ替えが行える。 Copyright © ZOZO Technologies, Inc. All Right Reserved. Kubernetes Node Pod Kubernetes Node Pod Pod Kubernetes Node Pod Pod 入れ替えのため新しい Pod が立ち上がる 古い Pod が削除される Rolling Update 開始

Slide 51

Slide 51 text

監視 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 52

Slide 52 text

Kubernetes 監視について Kubernetes はセルフヒーリング等である程度、自動運用に なっているが、監視しなくて良いわけではない。 CPU、メモリ、ディスク使用量や、アプリケーションが動作 しているかどうかを監視する必要がある。 監視することで日々の変化を観測し、問題発生時に逸早く 気づき、対処ができる仕組みを作ることが大切。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 53

Slide 53 text

Kubernetes 監視について ・システムが正常か、異常かを数値で表現する。 ・状態を可視化する。 ・問題発生時の伝達・共有・対処ができる環境を作る。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 54

Slide 54 text

Datadog Datadog を監視で主に利用している。 Monitoring SaaS であり、 メトリクスの収集・可視化・通知が行える。 閾値を決めアラートをSlackに通知することが可能。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 55

Slide 55 text

Datadog 例えば、以下のようなことを監視することが可能。 ・PodのCPU使用率 ・Podのメモリ使用率 ・Podのアクセス数 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 56

Slide 56 text

Datadog グラフの種類も豊富なため、取得した各メトリクスに適した グラフにて作成することが大切。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 57

Slide 57 text

その他 監視 Datadog の他にオンコールシステムのPagerDuty も利用している。 Kubernetes の情報を Datadog で取得し、 異常があれば、Slack にアラート通知を行う。 さらに、PagerDutyでオンコールという 仕組みにより、システム異常にすぐに気付ける。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 58

Slide 58 text

まとめ Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 59

Slide 59 text

まとめ サービス信頼性の向上 セルフヒーリング等で安定したサービスを提供できている。 また、Kubenertes×クラウドにより柔軟なリソース確保が可能となった。 運用負荷の低減 Kuberntes により手作業だった部分が自動化され運用負荷が低減した。 また、自動化されたことでミスが起こりにくくなった。 Copyright © ZOZO Technologies, Inc. All Right Reserved.

Slide 60

Slide 60 text

ご清聴ありがとうございました。 Copyright © ZOZO Technologies, Inc. All Right Reserved.