Drupal開発環境構築 インフラCI/CD編
by
Takahiro Komatsu
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
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 ことラボ