Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Rails on Dockerとの戦い

2,159 views

Published on

Rails Developer Meetup2017でのLTのスライドになります

Published in: Engineering
  • Be the first to comment

Rails on Dockerとの戦い

  1. 1. Rails on Dockerとの戦い
  2. 2. 自己紹介 植森 康友 株式会社Aiming 主な仕事 WebAPI開発 devops Dockerおじさん 普段のrailsdmでは大阪側のスタッフをしてます
  3. 3. 最初に LTに向けてスライドを調整していたら時間が全然なかったので 技術的な話をする時間はありません スライドの内容を削ってたらrailsの話がなくなりました というわけでrailsと全然関係ない話をします
  4. 4. Rails on Dockerとの戦い タイトルに偽りあり
  5. 5. Docker化のモチベーション
  6. 6. Docker化のモチベーション
  7. 7. Docker化のモチベーション 個人的に大きいのは「アプリケーション規格の統一化」 セットアップ方法 →  docker build  必要なミドルウェア → dockerのみ 起動方法 →  docker run  デプロイフロー → イメージのビルド、push、起動 コンポーネントの連携 → docker‑compose、kubernetes → その結果として環境の再構築や複数環境の立ち上げが楽に チームに複数のアプリケーションを開発している人がいると恩恵が大きい
  8. 8. とはいえ問題がなくなるわけではない dockerならではのトラブルや悩みが発生する 学習コスト、チームの習熟度・理解度 開発環境 コンテナならではのトラブル
  9. 9. 学習コスト、チームの習熟度・理解度 easy 出典:ふつうのRailsアプリケーション開発
  10. 10. 学習コスト、チームの習熟度・理解度 dockerの開発フローに乗っかると  docker-compose build でビルドする  docker-compose up で起動する  docker-compose run でコマンド実行する → easy
  11. 11. 学習コスト、チームの習熟度・理解度 慣れてない人はdocker自体がそもそもeasyではない 出典:ふつうのRailsアプリケーション開発
  12. 12. 学習コスト、チームの習熟度・理解度 例えば、ラップして使いやすくする 今のプロジェクトは歴史的経緯で「easy = シェルスクリプト」 今までとあまり変わらないフローにすることで導入障壁が減った
  13. 13. 開発でdockerを使うとき docker for mac volumeめっちゃ遅い macだと動くけどlinuxでは動かない linuxだと発生するvolumeのpermission denied network エディタとかとの親和性が微妙 gemへのタグジャンプとか gemのコードを見たい docker(for mac)と相性が悪いアプリケーションもある 普段の開発では不便な点も多々ある docker for macまじでつらい
  14. 14. 開発でdockerを使うとき Q. 我々はdocker化することで何がしたかったか? A.
  15. 15. 開発でdockerを使うとき Q. 我々はdocker化することで何がしたかったか? A.
  16. 16. 開発でdockerを使うとき docker化することでしんどくなったら本末転倒 dockerであることにこだわらない チームにとって楽な方に倒す だいじなこと→ 「できる」こと 本番とほぼおなじイメージを起動できる CIとほぼおなじテストを実行できる セットアップ、再構築がかんたんにできる
  17. 17. その他、いろんなトラブル 開発環境 dockerのイメージビルド時間 環境変数(≒グローバル変数)の増殖 CI環境(in jenkins slave) docker network作成数が上限に達して死ぬ イメージやボリュームがディスク圧迫して死ぬ docker‑composeのコンテナ名が被って死ぬ デプロイ環境 private registry dockerデーモンの意味不明なエラー ロギングどうする? 話し始めるとキリがない話題なので詳しくは懇親会で
  18. 18. dockerでの困り事:CI環境
  19. 19. dockerでの困り事:デプロイ環境 dockerホストを自前で管理するのはつらい
  20. 20. docker化で得たもの アプリケーション規格の統一化 docker化しておけばとりあえずなんとかなるし動かせる レビューのしやすい環境 ローカルでも複数の環境をさくっと立てれる git worktree → docker‑compose build & up ポータビリティ デプロイ・CIでもできることがローカルでもできる デプロイ・CIでも複数の環境をかんたんに立ち上げられる
  21. 21. まとめ: Dockerとの戦い dockerならではの苦労もあるが、docker化のメリットは大きい だいじなこと チームに合った方法を選ぶ easy 本質(docker化で解決したかったこと)を忘れない dockerでの導入でも、 「ふだんの開発で気をつけること」こそ重要でした
  22. 22. We are hiring! 株式会社Aimingではエンジニアを募集しています! Railsに興味がある Devopsに興味がある 懇親会でもお話しましょう

×