kakakakakku blog

Weekly Tech Blog: Keep on Learning!

多くの CircleCI ファンが集まった「CircleCI Japan User Community Kickoff」に参加した

12/3 (月) にサイボウズ様オフィスで開催された「CircleCI Japan User Community Kickoff」に参加した.今回は招待制のプライベートイベントで,CircleCI を日頃から圧倒的に活用している人たちが集まっていたので,有名人多すぎでは?という感じだった.僕は CircleCI 関連のブログを多く書いているということで招待して頂いた.ありがとうございます!

f:id:kakku22:20181203233933j:plain

(参加者に配られたノベルティ!)

CircleCI User Community @kemorimo & @kimhirokuni

  • CircleCI User Community
    • 「CircleCI ファンのためのコミュニティ」を作る
    • 今後使うハッシュタグ「#circlecijp」
  • 最近のリリース情報

サイボウズを支える CircleCI @miyajan

  • 今までは Jenkins + Drone を使っていた
  • CircleCI 導入開始
    • 1.0 → 2.0 になり,使えるようになった
  • CircleCI Server (Enterprise) 導入
  • 事例
    • 1日1回 CicleCI 経由で VPC を再構築する(常に自動化を試す)
  • Performance Pricing Plan
    • コンテナ数課金ではなく,必要なときに従量課金で使える
  • CircleCI Config 2.1
    • config.yml : 1462行 → 923行 に削減
    • Orbs 未導入

Workflow の並列度が高く,大規模に CircleCI を活用している事例だった.さらに Config 2.1 に移行して config.yml を削減できたとのこと.発表にもあった通り,Orbs を導入すればもっと削減できそう.VPC を1日1回再構築する運用も Infrastructure as Code のお手本として素晴らしかった.

www.slideshare.net

Mercari Frontend の CircleCI 活用事例 @urahiroshi

  • フロントエンドデプロイ
    • 今までは CircleCI でテストだけを実施して,サーバでビルドをしていた
    • CircleCI でビルドをして,Amazon S3 に保存するようにした
    • サーバで Amazon S3 から .tar をダウンロードすれば動くようになった
  • Storybook デプロイ
    • プルリクエスト単位に Storybook を見れるように
    • CircleCI で Amazon S3 に保存して,Amazon CloudFront からアクセスできるように
    • プルリクエスト番号を取得するために ${CIRCLE_PULL_REQUEST} を使う
  • 脆弱性検知

CircleCI と Amazon S3 を組み合わせてうまく CI / CD を実現している事例だった.場合によっては CircleCI Build Artifacts も使えるかも?と感じた.さらに npm audit を Orbs 化して公開されているのも素晴らしかった.npm を使ってるリポジトリにさっそく導入してみる予定!

How Quipper Works with CircleCI

monorepo だと全体的なビルド時間が長くなる点が大変そうだなと感じたけど,サブディレクトリごとに変更を検知する仕組みがあるのは良かった.CircleCI 関連ツールは興味深くて,さっそく circle-gh-tee を導入してみる.ここまで Infrastructure as Code 化できていると運用も安心してできそう.

CircleCI の Job 突然死と戦った話 @0gajun

  • Performance Pricing Plan 最高
  • 1ヶ月に 533,881分 = 1年 もビルドを実行している
  • resource_classmediumsmall に変更したら多くのジョブが落ちるようになった
    • 具体的には attach_workspace が落ちるようになった
    • 原因は OOM Killer
    • cgroup の memory.max_usage_in_bytes などを調査した
    • attach_workspace を実行しているときに page cache の増加が確認できた
    • コンテナだと page cache を削除する権限がなかった
  • 現在まだ根本解決になってなく medium を使っている

Performance Pricing Plan の resource_class を変更したときに発生したエラー調査報告だった.活用事例だけではなく,調査事例も非常に参考になる.CircleCI サポートと連携して原因特定に奮闘しているプロセスも素晴らしく,さらに page cache の増加が確認できた段階に至るステップバイステップの調査内容も参考になった.根本解決になることを期待している!

(資料公開待ち)

CircleCI Orbsの紹介 @ks888sk

  • Orbs 機能紹介
  • Explore Orbs で Orbs を検索できる
  • Good Practices
    • 1 : 実行時間を見積もる
      • 実行時間が長くなる場合に回避策を用意する
      • max-wait オプションを実装した
    • 2 : メッセージ部分を強調する
      • 文字色を付ける
      • 絵文字を付ける
    • 3 : CI / CD
      • Orbs を公開するためにも CircleCI を使う
      • テスト用設定ファイルを使う

そろそろ Orbs を使おうと思っていたため,Good Practices を聞けたのは良かった.特に OSS だから使う側のシチュエーションを想定して max-wait オプションを実装したという話は素晴らしい.紹介されていた h-matsuo/github-release はさっそく導入してみる.

CircleCI オンプレ版 Builder インスタンスのスケールインの話

  • CircleCI Server (Enterprise) では Builder インスタンスで Hashicorp Nomad が動いている
  • Builder インスタンスを Auto Scaling するときに「減らすテクニック」が必要になる
  • Auto Scaling Lifecycle Hooks / SQS / Lambda を組み合わせて,Builder インスタンスを安全に停止している

個人的に CircleCI Server (Enterprise) の経験がなく,運用関連の話を聞けて良かった.実行中のプロセスに影響なくスケールインするためにはドレイニング機能が必須で,Nomad の API を使って実現しているのは CircleCI に限らず参考になる.

(資料公開待ち)

まとめ

  • プライベートイベント「CircleCI Japan User Community Kickoff」に招待して頂いた
  • 圧倒的に活用している人たちが集まっていたので,どの発表も素晴らしかった
    • たまに「CircleCI Workflows ビューティフル選手権」に参加しているのかな?という気持ちになった(笑)
  • 今後 CircleCI Japan User Community を盛り上げていくとのことで,応援!僕もできる限り参加したいと思う

ポッドキャスト

CircleCI のアーキテクチャ / 開発プロセスの話が聞けるポッドキャストもある!オススメ!

fukabori.fm

CircleCI Orbs ミニハッカソン

12/15 に Orbs リリースを記念したイベントが開催される.まだ参加できるので Orbs に興味がある人は参加すると良いのでは!

circleci.connpass.com

関連資料

builderscon 2018 の資料を見ると CircleCI / Nomad の詳細を知ることができる.合わせて読むと良さそう!