terraformを半年ほど使った感想

前回はconsulの感想について書いたけど、今回はterraformについて書いておく。 terraformはインフラ環境を構築するためのツールで、terraformを使うことでインフラ環境の構築を、設定ファイルとしてバージョン管理できるようになる。 自分はAWSで使ってたが、GCPやHerokuなどさまざまなインフラ環境の構築に使える。 AWSならCloudFormationを使うと、似たようなことができるのかな?使ったことないのでよく分からないが、後輩はCloudFormationの方がいいかもと言っていた。 terraformを使ってよかったところ terraformを使うと、たとえばAWSでSecurityGroupを作って、RDSを立ち上げて、EC2を立ち上げるときに、前に設定したSecurityGroupを割り当てて、EC2内の環境変数にRDSのアドレスを設定して・・・みたいなことが比較的カンタンにできる。 設定方法は、日本語の記事だと以下が分かりやすいかな。 AWSでTerraformに入門 | Developers.IO あとは、terraform applyというコマンドで実際に構築するまえに、terraform planというコマンドで何が変わるか確認できるので、安心して実行できる。 依存関係も見てくれるので、EC2の設定の中でRDSのアドレスを参照していれば、その依存関係を考慮して実行してくれる。 terraformの設定ファイルをgitで管理していたので、インフラの構成の変化がバージョン管理できる点が一番よかったと思う。設定を変えたらプルリク出してレビューしたり、terraform planを見てレビューしたり、といったことができた点がよかった。 terraformを使うときに気をつけるところ terraformも万能ではないので、いろいろ気をつけるべきことがある。自分がハマったところを書いておく。 terraformでconfigurationをやらない方がいい terraformでインフラを作るまでは良いのだが、その後EC2サーバ内の、たとえばnginxのconfを設定したり、いろいろサービスを動かすための設定をサーバ内ですることになると思う。terraformにはProvisionerという仕組みがあり、remote-execを使えばいろいろ設定することができるので、…

consulを使って半年運用した感想

毎週書く予定だったのにすっかり間があいてしまった。細かいtipsはQiitaに書いたりしてるので、こっちに書くのはある程度まとまった話にしたいと思う。 ここ最近開発・運用していたサービスが落ち着いたので、一度感想を書いておこうと思う。一人でインフラの設計、開発、運用までやるのは初めてだったのでいろいろ勉強になった。 terraformとconsulを半年くらい使ってるので、感想を書いておく。今回はconsul。 サービスの要件 サービスはAWS上で動かす。 いわゆる普通のWebサービスと違うのは、Websocketサーバのようなコネクションを持つサーバがあり、単純にELBで負荷分散できない部分がいくつかあること。イメージとしては、ニコニコ生放送みたいな、動画のストリームを受けて配信するサーバ(サーバAとする)と、リアルタイムにコメントをブロードキャストするサーバ(サーバBとする)、のようなものに近い。 サーバAは配信するクライアントとコネクションをはるタイプのサーバだけど、サーバ側のCPU負荷が高くサーバ1台で5-10本くらいしか捌けない。 サーバBは、チャットルームのようなものが存在して、部屋に入っている人同士がWebsocketサーバ経由で大量のメッセージを送り合う。そのため、同じ部屋に入ったユーザは同じサーバに割り当てる必要があり、部屋ごとにユーザ数やメッセージ数が異なるので均等に負荷を割り振ることが難しい。 サーバA、Bともに負荷が上がると新たに増やす必要があるし、全てのコネクションが切れるまでサーバを落とすことはできない。 あとは、普通のAPIサーバやWebのフロントサーバがあるけど、それはELBがあれば問題ない感じ。 Consulを使う ユーザが新たに配信を始める際、どのサーバA・Bに接続させたらよいか判断するためには、それぞれのサーバのリストと負荷状況を知る必要がある。また、サーバ台数を増やしたり減らしたりすることがあるので、そのサーバに接続してもいいのかどうかも知る必要がある。 そこで、サーバの管理にconsulを利用することにした。 consulとは…

ビギナー編 AWS User Group - Japan 東京勉強会に参加してきたよ

第2回 ビギナー編 AWS User Group - Japan 東京勉強会 : ATND たまには勉強会にも行こうと思っていろいろと見ていた所で、AWS初心者の自分にちょうどよいのがあったので参加してみました。 あ、AWSというのは、Amazon Web Servicesっていって、Amazonが提供している、Webサービスを作るための、いろんなサービスです。今日の話を聞いて思ったのは、ほんとになんでも提供してる。 そしてスケーラビリティとか冗長性とか、従量課金とか、VMとか、まさにクラウドという感じ。 今日の内容 AWS概要 スライド:(4) はじめてのAWS - ビギナー編 - S3解説 EC2解説 スライド:(4) Amazon EC2解説当日用20120203 初心者といっても、ある程度使ったことがあるので、どんなサービスか、ということはだいたい分かっていました。そういう意味では知ってる話が多かったです。今回はビギナー向けなのでしょうがない。 今日行ってよかったのは、AWSの自分が知らない(名前は聞いてたことあるけど)いろいろなサービスがなんとなく分かったのと、なんとなく分かっていたS3、…