Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CircleCI in CyberAgent

CircleCI in CyberAgent

2016/06/10 CircleCI Meetup #circleci_meetup

stormcat24

June 10, 2016
Tweet

More Decks by stormcat24

Other Decks in Programming

Transcript

  1. CircleCI in
    CyberAgent
    2016.06.10 CircleCI Meetup
    @stormcat24

    View full-size slide

  2. stormcat24
    http://blog.stormcat.io
    CyberAgent, Inc.

    View full-size slide

  3. 2016.01.21 AmebaFRESH!
    2016.04.01 AbemaTV FRESH!
    2016.06.01 FRESH! by AbemaTV

    View full-size slide

  4. CircleCI and me

    View full-size slide

  5. その他書いた記事
    ‣ CircleCIアンチパターン 2015春
    ‣ CircleCIからサーバへのSSH接続確立時間を高速化する
    ‣ CircleCIでサクッとビルドチェーンを実現する
    ‣ CircleCIのキャッシュ(cache_directories)の挙動を解説するよ
    ‣ CircleCIで変更があった箇所だけに限定してビルドするテクニック
    ‣ 大規模な組織で新しいツールを導入するのにはかなりエネルギーがいる話 -
    CircleCI編 -

    View full-size slide

  6. CircleCI Advent Calendar 2015
    http://qiita.com/advent-calendar/2015/circleci

    View full-size slide

  7. CI in CyberAgent

    View full-size slide

  8. AmebaとCI
    ‣ Ameba(とその他メディア管轄)はGitHub Enterprise(GHE)を
    利用
    ‣ CIは基本Jenkins
    ‣ 職人が用意した共通Jenkins
    ‣ プロジェクトで用意したものや野良Jenkins等
    ‣ GHEだとCIの選択肢が限定されるのでツラい

    View full-size slide

  9. アドテクやグループ会社
    ‣ GitHub.com(プライベート)を利用
    ‣ TravisCIやCircleCIも利用✌( ◔౪◔)✌
    ‣ Ameba「ぐぬぬ」

    View full-size slide

  10. CircleCIとAmeba
    ‣ 2014夏
    ‣ @stormcat24がCircleCIの機能検証開始
    ‣ @stormcat24がEnterprise版の導入交渉開始
    ‣ 2014秋
    ‣ @stormcat24が社内的な説得を始める
    ‣ 2014冬
    ‣ Enterprise版お試し導入のGoサインが出る

    View full-size slide

  11. CircleCIとAmeba
    ‣ 2015/02
    ‣ Ameba管轄で(ひっそりと)CircleCI Enterprise(クラウド版)利用開始
    ‣ @stormcat24が新規事業(後のFRESH!)へ異動、事実上独占的に利用
    ‣ 2015/04
    ‣ 正式に導入。他のプロジェクトにじわじわと広まっていく
    ‣ 2016/04
    ‣ クラウド版からオンプレ版に変更

    View full-size slide

  12. 気をつけたこと(導入前)
    ‣ それ、Jenkinsでもできるよね?に屈しない
    ‣ 可用性に関する疑問への解答
    ‣ 大義名分を持とう
    ‣ CI環境の集約、ノウハウ・ナレッジの共有等
    ‣ 運用コスト削減、スタートアップの初速アップ
    ‣ 銀の弾丸では無いと素直に言う

    View full-size slide

  13. 気をつけたこと(導入後)
    ‣ 基本的にプロジェクト・チーム任せ
    ‣ 導入に尽力したけど、推進には尽力してない
    ‣ 各々のCIに対する意識を変えてもらうことが重要
    ‣ 誰か一人が頑張りすぎる⇒属人化Jenkinsと変わらない
    ‣ 本当に困ったときくらいのサポートでいい

    View full-size slide

  14. Projects
    ‣ Server Side
    ‣ Java/Scala/Node/Go
    ‣ Frontend
    ‣ Android(Java/Kotlin)

    View full-size slide

  15. Build / Test / Artifacts
    ‣ ユニットテスト
    ‣ MySQL, Redis通してのUTとかも
    ‣ E2Eテスト
    ‣ APIドキュメント
    ‣ Crashlyticsにapkアップロード

    View full-size slide

  16. Infrastructure & DevOps
    ‣ Hubot + Deploy
    ‣ DB Migration
    ‣ docker build / docker push
    ‣ Terraform
    ‣ Roadworker
    ‣ Mackerel

    View full-size slide

  17. ※運用イメージ(一例)

    View full-size slide

  18. 運用イメージ
    ‣ たいていどこも似たり寄ったりなはず
    ‣ ビルドトリガーをどうするか。やりやすいものを選べばよいかと
    ‣ あとはCircleCIに何の責務を担わせるか

    View full-size slide

  19. 導入した感想
    ‣ 新規プロジェクトこそ向いてる
    ‣ 組織として、CI環境が統一に向かうのは良いこと
    ‣ ノウハウの蓄積、野良Jenkinsの整理
    ‣ 継続的にJenkinsの面倒見るより楽、属人性DOWN
    ‣ Pull Request / Review / Testの文化の促進

    View full-size slide

  20. まとめ
    ‣ 導入戦略は重要です
    ‣ 導入後はなるべく職人を作らない方向で
    ‣ 使い倒してCircleCIにフィードバックしましょう
    ‣ あとはお値段をもう少しお安く
    ‣ CircleCI盛り上げていきましょう

    View full-size slide

  21. Let’s try CircleCI.

    View full-size slide