楽々運用!Supevsord+unicorn/gunicornで作る、Linux daemon 概要
最近、redmineやら、joruri gwやら、python,pyramidで作った自作アプリやら、trac(bloodhound)やら、色んなサービスを動かしています。
しかしながら、インフラ周りを触れる人の少ないこと少ないこと。
公開されていて、簡素なドキュメントのあるWebアプリですら、挫折してしまうこと有りますよね。
(私にも身に覚えが。。。
と言うのは、Webに求められている事が大変多くなっていることに原因があると思われます。
javascriptなどを用いたアーキテクチャの変異などアプリケーション層が複雑化してきている事
フレームワークの手厚いサポートにより、
開発者はアプリケーション層に専念できるようになっていること(その反面、インフラまで手が伸びない。
また、昔ほど長期間エンジニアを抱えてる現場も少なくなってきたように感じます。
一つの言語やフレームワークを使ってノウハウを築く事も難しくなってきたと思います。
(最もその前にフレームワークなど各所で変更が発生ので、結局勉強は余儀なくされます。
さて、そんな中で、上に上げたようなrailsアプリやら、自分で作ったpyramidアプリを運用してますが、サーバサイドのインフラ周りに対する理解が不足しているので、少し教育がてら、
daemon周りの便利なツールの紹介やら手段を3回位に分けて、共有したいと思います。
スライドには詳しくは書きませんでしたが、
最近はWebアプリのプロセスは、純粋なhttpサーバとはプロセスを分離する事で、
インターブリターのプロセス起動のオーバーヘッドを減らしています。
これにより、ユーザーのストレスを軽減すると言う狙いがあります。
そのためフレームワーク側でも、それに最適なdaemonを動かしています。
supervisordを用いることで、daemonの作成コストを減らし、
複雑なシェルスクリプトを管理する必要性を排除しました。運用者の学習コストを減らしました。
また、実行ユーザを明示する事で、セキュリティに対する意識を植え付ける事ができたと思います。
(rootで動かしてたら意味ないですが。
所でこのスライドまだ発表してないのですが、どこか発表場所ありませんかね?
概要類はご理解いただけたと思うので
細かい設定類は、別記事としてあげようと思います。