CIにどこまで任せるのか?

 CIにどこまで任せるのか?

CircleCIを使ってサーバーへのデプロイをしてみた経験談。CIとCDの境目がどこにあるのか、どの時点で重要になるのかを考える。

444cce43051f5e17e935b4bc471a0b68?s=128

valerauko

May 28, 2019
Tweet

Transcript

  1. CIにどこまで任せるのか? CI と CD の境目を探ってみたお話

  2. introduction.yaml version: 2.1 executors: balint-erdos: environment: TECH: ["clojure", "kafka", "kubernetes"]

    links: - https://balint.erdos.tech - https://github.com/valerauko tags: ["craft beer", "alpinism", "music"] working_directory: /tokyo jobs: studist: executor: balint-erdos environment: LANG: ["ruby", "javascript", "clojure"] steps: - tech lead enjin: executor: balint-erdos environment: LANG: ["ruby", "javascript", "go"] steps: - founding member
  3. CircleCIとの出会い • スタディスト入社時( 2017 年) • ネイティブアプリのビルドに使用 • 当時ウェブの CI

    がなかった • 開発環境を Vagrant から Docker に したい動きがあった
  4. 最初の試み: docker-composeそのままで • 開発環境を Docker に移住 • docker-compose.yml をそのままで CI

    の環境として使う プラス • 自動テストができた マイナス • 遅い。とても。 • デプロイもやってもらいたい ... - run: name: Create test DB command: | docker-compose -f .circleci/compose.yml run teachme_web bundle exec rake db:create test docker-compose -f .circleci/compose.yml run teachme_web bundle exec rake db:migrate test docker-compose -f .circleci/compose.yml run teachme_web bundle exec rake db:seed test - run: name: Run rspec command: docker-compose -f .circleci/compose.yml run teachme_web bundle exec rspec
  5. 500倍 自動テストはいいぞ テストの量がまさかの

  6. デプロイやってみよう • AWS の EC2 へデプロイ • CodeDeploy とかは備わってない プラス

    • 自動デプロイできた! マイナス • ステージング 1 台のみ • すごく脆い 1. テスト走らせる 2. JS などのプリコンパイル走らせる 3. コミットして GitHub へ push 4. aws-cli でサーバーへ ssh 許可 5. ssh してサーバー上の deploy.sh 実行
  7. とりあえずはやく! • docker-compose から CircleCI の設定に切り替え プラス • キャッシュが効く •

    いくらでも平行できる マイナス • 設定の 2 重管理 主なポイント • YAML の alias をいっぱい使う • 並列化できる処理を全部 ◦ Rails のテスト ◦ Vue のテスト ◦ ドキュメントのコンパイル ◦ JS などのコンパイル • その中でもさらに並列 ◦ circleci tests glob ◦ circleci tests split
  8. やってみたこと workspace で加速 • うまく行かず • 容量が大きすぎて結局インストー ルをそれぞれで走らせるよりも遅 くなったり executor

    や command で共通化 • alias よりずっときれいになった
  9. CIはイメージのビルドま でにしましょう

  10. 結論 デプロイは専用ツールに任せたい CircleCI から SSH でできるのは • 1 台のサーバー •

    IP が決まっている やってもいいと思うのは • CD 入れるのもったいないぐら い小さなプロジェクト • とりあえずステージングの一台 だけでもやりたい時 CircleCD はいつかくるかな ... ?
  11. 仲間絶賛募集中! https://www.wantedly.com/companies/studist/ ご清聴ありがとうございました