ZOZOTOWNリプレイスにおけるKubernetes活用 / zozotown replace kubernetes
by
tsurumi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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.