本気です
実際にサービスとして運用されているものを、SRE責任者としてコンテナ化してみました。
結果
ハッピーになりました!
なぜこの記事を書いたか
現在いろんな企業や個人の方々の中でAWSを利用している方が増えてきていると思います。私もそうです。で、今までサーバーでwebアプリケーションを構築してきたのに、急に「コンテナ」なるものが出てきて、どうすればいいのかって思っている人が多いのではないかと思って書きました。
本当にそれっていいのか?コンテナって?みたいな。
それで実際に、今働いでいる会社でコンテナで運用しちゃおうと思って、やっちゃって、良かったので記事にしました。
※弊社はAWS大好き(弊社ではなく自分かも…)なので、ECSに偏ります。
何をやったか
今までbeanstalkでアプリケーションを運用していました。その中で。「本当にbeanstalkでいいのか」「コンテナって実際どうなの?」などいろいろ疑問を持っていました。なので、直接AWSの中の人に「最近コンテナ流行ってるけど、やるべきなん?」「beanstalkもおたくの商品だけども、ECSに移行していいことあるん?」みたいなことを聞いてみて、結果良さそうなので今のプロダクトのリニューアルに乗っかってシステム構成の変更(beanstalk->ecs)をやっちゃいました。
何が良かったか
明確なのは、「EC2インスタンスが減った」「スポットフリートで運用することによるコスト削減」です。
めっちゃ安くなりました!
あとは環境差異がなくなりました!今までは、アプリケーションを開発して、サーバーにデプロイして、ローカルとデプロイしたサーバーに差分があって、よくわからないエラーが起きて…
みたいな感じが多かったと思います。
これを常にコンテナ化することにより、どこにデプロイされても同じ状況が作れることになり、結果、環境差異による無駄な工数が削減できました!(奇跡)
あとは、ECSだとメモリの利用状況が管理できます!
弊社はメイン言語がjavaなのですがメモリがネックになってきます。(VMはメモリをくう!)で、cloudwatchでは今までメモリの使用状況が管理できなかったのですが、ECSならできます!(やってみないとわからないと思うので、やってみてください!)
なのでサーバーが持っているメモリリソースをフルに活用できます!
※java以外にもGO言語を扱っているのですが、GO言語のアプリケーションに関してはもっと効率的にサーバー
リソースの消費ができます。そもそも軽くてメモリも食わないので、純粋に平均的にリソース消費が可能です。
終わりに
やってみて本当に良かったと思います。損はないですやってみてください!
※ここには細かいことはかけませんが、ご興味がある方はコメント等に書き込みください。