Drupal開発環境構築 インフラCI/CD編

Drupal開発環境構築 インフラCI/CD編

2019年8月27日 Drupal Meetup 豊田 #7 「Drupal開発環境構築 アプリCI/CD編」での発表スライド

E0a89ea965a4ac4b5f091d6bd9e8d8ea?s=128

Takahiro Komatsu

August 27, 2019
Tweet

Transcript

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

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

  3. ⾃⼰紹介 - ⼩松⾼廣(こまつたかひろ) - ことラボ 代表 - フリーランスエンジニア
 (ハードウェア/ソフトウェア) -

    修⼠:公⽴はこだて未来⼤学⼤学院
 システム情報科学研究科 複雑系情報科学領域
  4. 前回話したこと

  5. アプリCI/CD

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

  7. CI 継続的インテグレーション - Continuous Integration - 丁寧に時間をかけて作ったもの同⼠を組み合わせ て1つにして本当に⼤丈夫かどうか?を確かめる (テストをする)のはすごく⼤変 -

    たくさんの⼩さなパーツ(Webサイトの場合は外 観パーツ・機能パーツ)を常に新しく作ってどんど ん組み込んでいけるよう統合作業を⾃動化したい
  8. CD 継続的デリバリー/デプロイ - Continuous Delivery - Continuous Deploy - ユーザへ常に新しいものをどうやっ

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

  10. GitHub Actions - CI/CDツール - 現在はbeta期間中 - 2019/11/13
 ⼀般公開予定 -

    公開リポジトリなら無料
  11. Dockerによるコンテナ化 開発⽤PC サーバ ハードウェア macOS Apache Drupal MySQL ハードウェア CentOS

    Apache Drupal MySQL 開発コード+ミドルウェア を
 パッケージング(コンテナ化)して持ち運ぶ
  12. Pets vs Cattle - 番号で管理 - 他の家畜と等価 - 病気になったら
 他の家畜と⼊れ替える

    - 名前をつける - ⼿塩にかけて育てる - 病気になったら
 必死に看病する
  13. アプリやインフラがペット化 するとCI/CDはすごく⼤変

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

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

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

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

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

  19. クラウド環境 - Google Cloud Platform - Amazon Web Services -

    Microsoft Azure - IBM Cloud
  20. サーバ能⼒の差異 オンプレミス クラウド ハードウェア Ubuntu Apache Drupal MySQL ハードウェア RHEL

    Apache Drupal MySQL OS環境より上位の差異はDockerが吸収
 OS以下の差異は⾃分で考慮してコンテナ配置
  21. どこにどのコンテナを うまく配置するか…

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

  23. Kubernetes

  24. Kubernetes(k8s) - 「くーばねてぇす」と呼んでる - 各サーバ上のコンテナをまとめて管理 - 異なるサーバでコンテナ間通信を実現 - ユーザにサービスのエンドポイントを提供 -

    サーバ群のリソースをコンテナ⽤に仮想化する ためのコンテナオーケストレーション・ツール
  25. エンドポイントの提供 node サーバ Apache Apache node サーバ Apache master サーバ

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

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

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

  29. Kubernetesマネージドサービス - Google Kubernetes Engine - Amazon Elastic Kubernetes Service

    - Azure Kubernetes Service - IBM Cloud Kubernetes Services
  30. Kubernetesで マルチクラウドな構成も可能

  31. AWSでも⽌まるときは⽌まる - 2019/8/23 12:36 - 空調管理システムが⼀部故障 - オーバーヒートしてハード ウェア障害に発展 -

    EC2/EBSサービスに影響 - 上記のAWSサービスを利⽤し て構築していたゲームアプリ や決済サービスに影響 IUUQTBXTBNB[PODPNKQNFTTBHF
  32. Single-AZで 障害起きるとつらい

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

  34. k3s - k8sの各コンポートを統合してより軽量化 したディストリビューション - KVS: etcd → sqlite3 -

    ランタイム: docker → containerd - 安価なVPSや複数のRaspberry Pi上で 遊んでみるとおもしろいかも
  35. Kubernetesで クラウドベンダーに依存しない 安定で⾃由なDrupal構築環境!

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

  37. https://kotolab.jp ことラボ