開発者観点で、Dockerを導入するメリットについての調査
よーし、ついにAWS環境(EC2)に自作Railsアプリをデプロイした!
— kppaz (@kpinput) 2019年3月21日
その名も「どや読書」
読んだ本の代金でドヤるという、
本好きに喧嘩売ってるアプリです。
ドメイン未設定という不安を掻き立てるスタイル。
&いつ落ちるか分からないので、アクセス出来た人はラッキー。
http://52.192.71.125/ pic.twitter.com/JqKtA2qXi0
という感じでAWS環境に自作Railsアプリをアップロードした。
次はこれにDockerを加えた構成でデプロイしたい。
Rails & AWS 環境にDockerを加えよう!
— kppaz (@kpinput) 2019年3月23日
と思っていたが、
そもそもDockerを入れるとどう嬉しいのか?
を理解していない。
Dockerいいらしいよ? -> へーじゃあやってみよ
というレベル。
まずはそのあたりの調査を始めるかな。
ただDockerに関しては、⬆️って感じの適当な理解なので、
そもそもどんなメリット?という事を調査する。
2018年なぜ私達はコンテナ/Dockerを使うのか
まずこのサイトが、Dockerの現状についてとても良い感じに説明してくれている。
2018.07.10の内容で最新という程でもないが、
根本的なメリットはほぼ変わらないだろう。
特に以下の文はDockerのメリットを端的に表しているのではないか?
と詳しくもないのに勝手に思っている。
Dockerの理解における最初の足場にできそう。
Git & GitHub がやったことをOSイメージ = 本当の意味でのランタイムで実現したのがDockerです。このDocker Imageの取り回しのしやすさが起爆剤となり
CI/CD
IaC
高速デプロイ
開発・本番の共通化
ローカル開発
という数えきれないメリットを生み出した。
開発環境にDockerを導入し開発を効率化する話〜開発本部・TechLunch〜
次はこちら info.medley.jp
以下メリットに関する引用
Dockerとは、ひとことでいうと「Linux上で動作するシンプルで使いやすい軽量コンテナ環境」です。 LinuxというOS上にコンテナという箱を用意し、そのコンテナの中に必要なソフトウェアやライブラリ(ツール)などをインストールしてひとつのまとまりとしてパッケージングすることができます。
これにより、
ウェブサービスなどが動作する環境をポータブルな環境にすることができ、開発環境や検証環境、本番環境でまったく同じ環境を作ることが容易になる これまでのような開発環境と本番環境の微妙な違いによる動作の不具合や、開発環境では動いていたのに本番にデプロイしたら動かなくなりましたといった問題から解放される エンジニアの精神的な不安も幾分か軽減される といったメリットを享受することができるようになります。
Docker を Production 投入するメリットを考える
ひとまずこの記事の最後
現場に近い感覚の記事でとてもいい感じ。
CircleCI 上実行された Request Spec で自動生成された API ドキュメントを GitHub にプッシュ
なんてこともできるらしい。すごいな。
しかしここまで行くと専門のインフラ屋が欲しいんだろう。
某テック系Youtuberさんはこういったことを生業にしているのだろうか?
あとこんな内容もあった。
自分としては結構頑張ったつもりだったんだけど、「それ ECS でやる意味あるの? というか Docker じゃなくて普通の EC2 インスタンスに Capistrano でデプロイするのでよくね?」というツッコミが入った。
なるほど、これは貴重な情報。
やはりCapistranoと比較されるような内容だったというわけだ。
( この記事は2017年の物。2019現在CapistranoがDocker置き換わりつつある?と聞いたので、
このブログの著者は先見の明があったのだろう)
まとめと今後の方針
まとめるとDockerのメリットはこんな感じだろうか?
- 開発環境&本番環境を共通化できる。
- 環境構築&デプロイの手順が自動化できて安定する&高速になる。
- 自動化にテスト等が引っ掛けられて嬉しい。
となると今後の方針としては、、、
- 自作Railsアプリを、Docker上での開発に移す(ローカル)
- そのDocker環境を用いて、再度AWS EC2 にデプロイ(その際、nginx等もDockerで実現する??)
- CI/CD環境を作る
という感じかな?
あまり迷ってもしょうがないので、行動に移すか。