Upgrade to Pro — share decks privately, control downloads, hide ads and more …

さくらのクラウドと Docker Swarm Modeで 誰でもわかる簡単デプロイ @ さくらの聖夜2019 / Simple Deployment with SAKURA Cloud and Docker Swarm

chibiegg
December 23, 2019

さくらのクラウドと Docker Swarm Modeで 誰でもわかる簡単デプロイ @ さくらの聖夜2019 / Simple Deployment with SAKURA Cloud and Docker Swarm

chibiegg

December 23, 2019
Tweet

More Decks by chibiegg

Other Decks in Technology

Transcript

  1. さくらのクラウドと
    Docker Swarm Modeで
    誰でもわかる簡単デプロイ
    2019-12-23
    @さくらの聖夜2019
    ©SAKURA internet Inc.
    さくらインターネット株式会社
    執行役員 技術推進統括担当 兼 CISO
    江草 陽太

    View Slide

  2. ⾃⼰紹介
    2
    【所属等】
    さくらインターネット株式会社 新卒入社
    執行役員 技術推進統括担当 兼 CISO
    【開発】
    • さくらのVPS
    API/DB/制御システム担当
    • sakura.io
    ハードウエア仕様、ファームウエア開発
    システム設計、開発、インフラ設計、構築
    • 社内システム/データセンター自動化
    • さくらのエンジニアリングラボ
    【その他】
    • CSAJ U22プログラミングコンテスト審査員
    • Home NOC Operators’ Group (AS59105)
    @chibiegg

    View Slide

  3. ⾃⼰紹介
    3
    【経歴】
    • ロボカップジュニア (中学・高校) / NHK大学ロボコン
    • 大阪大学工学部電子情報工学科情報通信工学専攻
    • 個人事業主
    • 大阪大学大学院工学研究科中退
    • SECCON CTF 2014 国内4位
    • ISUCON5/ISUSON7/ISUCON8本戦、ISUCON9問題作成
    • ICTSC7 大人チーム
    【専門】
    • ソフトウエアエンジニア
    • NW/SC/DBスペシャリスト
    • 回路設計/組み込みソフトウエア
    【趣味】
    旅行/温泉/写真/電子工作/プログラミング/かわいい服
    @chibiegg

    View Slide

  4. よくあるアプリケーション
    4
    Nginx
    django
    Redis
    PostgreSQL

    View Slide

  5. よく使うミドルウエア
    5
    • Nginx
    • リバースプロキシと静的ファイル配信
    • Django
    • Webアプリケーション本体
    • Redis/Memcached
    • グラフデータ等のキャッシュ
    • PostgreSQL/MariaDB
    • データベース

    View Slide

  6. 古典的な⽅法でのデプロイ
    6
    • パッケージのインストール
    • posrgresql-10, python3-pip, redis, nginx
    • ソースコードを持って来る
    • Pythonパッケージをインストールする
    • 各種設定ファイルを書く
    • データベースをセットアップする
    • サービス登録する

    View Slide

  7. 2019/12/23 ©SAKURA internet Inc. 7
    開発にDocker Composeを使う

    View Slide

  8. 開発にDocker Composeを使う
    8
    • 開発環境は⼿元のmacOSなど
    • いろんな開発を並⾏して⾏うため、環境構築が⼤変
    • データベース、Redis、Pythonのバージョン、etc…
    • Docker Composeを使うことで簡単に
    • コンテナを使うため独⽴した環境が⽤意できる
    • 他の環境に影響しない、壊さない
    • 初めて実⾏する⼈もコマンド2つ
    • `docker-compose build` `docker-compose up` のみ
    • docker-compose.ymlに全て書いてある
    • 削除も⼀⾏ `docker-compose rm`

    View Slide

  9. 開発にDocker Composeを使う
    9
    • git clone [email protected]:isucon/isucon9-
    portal.git
    • cd isucon9-portal
    • docker-compose build
    • docker-compose up
    • http://localhost:8000/ を開く

    View Slide

  10. 2019/12/23 ©SAKURA internet Inc. 10
    Docker Composeでのデプロイ
    〜1台だけで動かす〜

    View Slide

  11. Docker Composeでのデプロイ
    11
    Docker ComposeとSystemdを使う
    • パッケージのインストール
    • docker, docker-compose
    • ソースコードを持って来る
    • docker-compose.yml が含まれている
    • Systemdにサービス登録する

    View Slide

  12. 1台によるDocker Composeでの課題
    12
    • ソースコード更新の時に、ダウンタイムが発⽣する
    • イメージビルドや起動にかかる時間による

    ローリングアップデート
    あるいは
    ブルー・グリーンデプロイが欲しい

    View Slide

  13. 2019/12/23 ©SAKURA internet Inc. 13
    Docker Swarm Modeでのデプロイ
    〜複数台で動かす〜

    View Slide

  14. Docker Swarm Mode
    14
    サーバ
    OS
    Docker
    Engine
    App App
    一台でのDocker Compose
    サーバ サーバ サーバ
    OS OS OS
    Docker
    Engine
    Docker
    Engine
    Docker
    Engine
    App App App App App App
    Docker Cluster 管理レイヤ
    Docker Swarm Mode
    オーケストレーション
    サービス検出・クラスタ管理
    Dockerのコンテナ管理

    View Slide

  15. Docker Swarm Modeでのデプロイ
    15
    • Docker Swarmのインストール
    • ⼿作業でも簡単
    • Ansibleで⾃動化も簡単
    • ソースコードを持って来る
    • docker stack deploy コマンドで設定を反映
    • イメージのバージョンを変えると
    ローリングアップデートされる!

    View Slide

  16. 注意点
    16
    • 永続化データがあるアプリケーションはコンテナ
    で実⾏しない
    • データベースはDocker外で起動する
    • NFSなどを利⽤する⽅法もある

    View Slide

  17. Docker Swarm ⾃体の使い⽅は…
    17
    https://www.slideshare.net/zembutsu/introduction-to-docker-swarm

    View Slide

  18. さくらのクラウドで実環境でも使える構成を紹介
    18
    エンハンスドLB
    Nginx
    Swarm Worker
    Swarm Manager
    DBアプライアンス
    スイッチ 192.168.0.0/24
    https://www.example.com/
    ポート番号毎にアプリケーションをデプロイし、Nginxでリバースプロキシするといい感じ
    SSLはLet’s Encryptで自動更新!
    HTTP/2にも対応!

    View Slide

  19. さくらのクラウドで実環境でも使える構成を紹介
    19
    エンハンスドLB
    Swarm Worker Swarm Manager
    DBアプライアンス
    スイッチ 192.168.0.0/24
    https://www.example.com/
    ポート番号毎にアプリケーションをデプロイし、ELBのルール機能でリバースプロキシ
    ルールベースロードバランスに対応!

    View Slide

  20. 2019/12/23 ©SAKURA internet Inc. 20
    One more thing ...

    View Slide

  21. 2019/12/23 ©SAKURA internet Inc. 21
    たしかに!

    View Slide

  22. 2019/12/23 ©SAKURA internet Inc. 22
    さくらのエンジニアリングラボ

    View Slide

  23. 2019/12/23 ©SAKURA internet Inc. 23
    どんどん新しいサービスをプロトタイピングし
    早期のタイミングでお客様にも直接使っていただく

    View Slide

  24. 2019/12/23 ©SAKURA internet Inc. 24
    わたしも作るか…

    View Slide

  25. 2019/12/23 ©SAKURA internet Inc. 25
    金曜日

    View Slide

  26. 2019/12/23 ©SAKURA internet Inc. 27
    土曜日

    View Slide

  27. 2019/12/23 ©SAKURA internet Inc. 28
    日曜日

    View Slide

  28. 2019/12/23 ©SAKURA internet Inc. 29
    火曜日

    View Slide

  29. 2019/12/23 ©SAKURA internet Inc. 30
    先週

    View Slide

  30. 2019/12/23 ©SAKURA internet Inc. 31
    先週水曜日

    View Slide

  31. 2019/12/23 ©SAKURA internet Inc. 32
    今日

    View Slide

  32. 2019/12/23 ©SAKURA internet Inc. 33
    ということは

    View Slide

  33. 2019/12/23 ©SAKURA internet Inc. 34
    今⽇からさくらのクラウドでご利⽤いただけます

    View Slide

  34. 2019/12/23 ©SAKURA internet Inc. 35
    今⽇からさくらのクラウドでご利⽤いただけます

    View Slide

  35. 2019/12/23 ©SAKURA internet Inc. 36
    今⽇のAdvent Calendarで仕組みを紹介しています
    Private Docker Container Registryサービスを作った話
    https://qiita.com/chibiegg/private/746e0825c602f947ab1c

    View Slide