Slide 1

Slide 1 text

Drupal開発環境構築 インフラCI/CD編 2019.8.27 Drupal Meetup 豊⽥ #7 @豊⽥中央研究所 ことラボ 代表 ⼩松⾼廣

Slide 2

Slide 2 text

撮影・シェアOKです
 スライドは後ほど
 https://kotolab.jp にて掲載します

Slide 3

Slide 3 text

⾃⼰紹介 - ⼩松⾼廣(こまつたかひろ) - ことラボ 代表 - フリーランスエンジニア
 (ハードウェア/ソフトウェア) - 修⼠:公⽴はこだて未来⼤学⼤学院
 システム情報科学研究科 複雑系情報科学領域

Slide 4

Slide 4 text

前回話したこと

Slide 5

Slide 5 text

アプリCI/CD

Slide 6

Slide 6 text

CI/CDのステージ ビルド 結合テスト コーディング デプロイ パッケージ ユニットテスト リリース CI CD

Slide 7

Slide 7 text

CI 継続的インテグレーション - Continuous Integration - 丁寧に時間をかけて作ったもの同⼠を組み合わせ て1つにして本当に⼤丈夫かどうか?を確かめる (テストをする)のはすごく⼤変 - たくさんの⼩さなパーツ(Webサイトの場合は外 観パーツ・機能パーツ)を常に新しく作ってどんど ん組み込んでいけるよう統合作業を⾃動化したい

Slide 8

Slide 8 text

CD 継続的デリバリー/デプロイ - Continuous Delivery - Continuous Deploy - ユーザへ常に新しいものをどうやっ て届けるか?を⾃動化

Slide 9

Slide 9 text

CI/CDを実現するために - 情報管理
 履歴情報を辿れるgit - ⾃動化
 宣⾔的・冪等性を確保するCI/CDツール - 可搬性
 コンテナ化するDocker

Slide 10

Slide 10 text

GitHub Actions - CI/CDツール - 現在はbeta期間中 - 2019/11/13
 ⼀般公開予定 - 公開リポジトリなら無料

Slide 11

Slide 11 text

Dockerによるコンテナ化 開発⽤PC サーバ ハードウェア macOS Apache Drupal MySQL ハードウェア CentOS Apache Drupal MySQL 開発コード+ミドルウェア を
 パッケージング(コンテナ化)して持ち運ぶ

Slide 12

Slide 12 text

Pets vs Cattle - 番号で管理 - 他の家畜と等価 - 病気になったら
 他の家畜と⼊れ替える - 名前をつける - ⼿塩にかけて育てる - 病気になったら
 必死に看病する

Slide 13

Slide 13 text

アプリやインフラがペット化 するとCI/CDはすごく⼤変

Slide 14

Slide 14 text

アプリCI/CD インフラCI/CD

Slide 15

Slide 15 text

同じサーバ環境を
 何個も作るのはしんどい…

Slide 16

Slide 16 text

インフラ(サーバ環境)も CI/CDで構築・管理したい

Slide 17

Slide 17 text

サーバを宣⾔的コードで ⾃動構成するツールはある

Slide 18

Slide 18 text

構成管理ツール OSインストール後から使えるように なるまでの設定を⾃動的に⾏うソフト - Ansible - Chef - Puppet

Slide 19

Slide 19 text

クラウド環境 - Google Cloud Platform - Amazon Web Services - Microsoft Azure - IBM Cloud

Slide 20

Slide 20 text

サーバ能⼒の差異 オンプレミス クラウド ハードウェア Ubuntu Apache Drupal MySQL ハードウェア RHEL Apache Drupal MySQL OS環境より上位の差異はDockerが吸収
 OS以下の差異は⾃分で考慮してコンテナ配置

Slide 21

Slide 21 text

どこにどのコンテナを うまく配置するか…

Slide 22

Slide 22 text

インフラ構築で考えること - オンプレミスvsクラウドではない - クラウドベンダーのロックインを可 能な限り回避したい - 本質的にはDockerコンテナが動か せる環境があればよい

Slide 23

Slide 23 text

Kubernetes

Slide 24

Slide 24 text

Kubernetes(k8s) - 「くーばねてぇす」と呼んでる - 各サーバ上のコンテナをまとめて管理 - 異なるサーバでコンテナ間通信を実現 - ユーザにサービスのエンドポイントを提供 - サーバ群のリソースをコンテナ⽤に仮想化する ためのコンテナオーケストレーション・ツール

Slide 25

Slide 25 text

エンドポイントの提供 node サーバ Apache Apache node サーバ Apache master サーバ node サーバ DB コンテナの配分 node サーバ Apache コンテナ間通信

Slide 26

Slide 26 text

Kubernetesによる仮想化 - Pod(コンテナをまとめたもの)を最 ⼩単位として管理 - k8sが各Podへリソースを配分 - サーバ群を抽象化するOSのような役 割

Slide 27

Slide 27 text

サーバ群を仮想化する 意味では広義のOS

Slide 28

Slide 28 text

仮想化 リソースを何らかの制約に囚われない で効率よく利⽤するためにいったん抽 象化してから配分するためのしくみ - OS: プロセスに対してハードを抽象化 - k8s: Podに対してサーバ群を抽象化

Slide 29

Slide 29 text

Kubernetesマネージドサービス - Google Kubernetes Engine - Amazon Elastic Kubernetes Service - Azure Kubernetes Service - IBM Cloud Kubernetes Services

Slide 30

Slide 30 text

Kubernetesで マルチクラウドな構成も可能

Slide 31

Slide 31 text

AWSでも⽌まるときは⽌まる - 2019/8/23 12:36 - 空調管理システムが⼀部故障 - オーバーヒートしてハード ウェア障害に発展 - EC2/EBSサービスに影響 - 上記のAWSサービスを利⽤し て構築していたゲームアプリ や決済サービスに影響 IUUQTBXTBNB[PODPNKQNFTTBHF

Slide 32

Slide 32 text

Single-AZで 障害起きるとつらい

Slide 33

Slide 33 text

Multi-AZも当然ながら選択肢
 でもクラウドベンダーのロックインは
 やっぱり避けたい

Slide 34

Slide 34 text

k3s - k8sの各コンポートを統合してより軽量化 したディストリビューション - KVS: etcd → sqlite3 - ランタイム: docker → containerd - 安価なVPSや複数のRaspberry Pi上で 遊んでみるとおもしろいかも

Slide 35

Slide 35 text

Kubernetesで クラウドベンダーに依存しない 安定で⾃由なDrupal構築環境!

Slide 36

Slide 36 text

ご清聴ありがとう
 ございました

Slide 37

Slide 37 text

https://kotolab.jp ことラボ