Diary

@ssig33

Docker を用いてソフトウェアをデプロイするとソフトウェアの品質が上がる

http://b.hatena.ne.jp/entry/bonotake.hatenablog.com/entry/2018/09/06/072800 ここをながめていて思ったことなんですが。

Docker はデプロイにのみ関連するツールであって、ソフトウェア開発の本質には一切関係ないものだ、という考えの人をたまに、いや、よく見る。これは全く間違っていて、 Docker を用いて継続的にソフトウェアをデプロイしているだけでソフトウェアの品質は上がります。ソフトウェアの品質のような問題について考えている人は Docker とそのメンタルモデルに興味をもつべきです。

本来こうした問題について僕がなにかを言う必要はなくて The Twelve-Factor App という文章を読めば十分です。あるいは 大切なことはだいたいHerokuで学んだ というこの文章も非常に有用だと思います。いやこれ Heroku の話じゃんとか思わないでください。 Docker はもともと Heroku クローンである dotCloud の実行エンジンとして開発されたものであり、 Heroku は Docker とそのエコシステムが目指すもの、そして乗り越えるべきものだったのです(部分的には乗り越えていますが、 Heroku は未だに有力なプラットフォームです)。

ところで Docker を使っているだけで何故ソフトウェアの品質が上がるかということを簡潔にまとめたものを改めて書いておくのは悪いことではないと思ったので書いておきます。

  • サーバーのファイルシステムなどの「状態」に依存することが出来ないので、ソフトウェアの可用性が上がる
    • よりスケーラブルになる
    • メンテナンス性が上昇する
  • 本番環境、検証環境、 CI 環境、開発環境などで同じコード、同じ環境を使用することが出来るので、不具合が早期に発見される
  • ログの集約が簡単なので、不具合の発見がはかどる
  • いざとなれば簡単にロールバックできるという環境では、大胆な変更も許容されるから、最終的に得られる品質は高くなる

ほかにもいろいろあるとは思いますが、すぐに思いつくこととしてはこんな感じですかね。

19 Sep 2018 Wed 05:06 (UTC)