トレタ開発者ブログスマートフォン用の表示で見るトレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」を開発・提供するスタートアップ企業です。pushでサーバを構築する2018年あけましておめでとうございます。新年早々ひどい肩こりに悩まされていましたが、最近ようやく回復してきましたインフラの山田です。去年の振り返りさて、2017年の振り返りになりますが、おかげさまで昨年は99.996%のシステム稼働率を記録することが出来ました。今年も飲食店様を支えるインフラとして、この稼働率をキープしていきます。Codeに積極的に取り組んでいます。考えのもと仕組みを作っています。今回はサーバの構築に関して紹介します。使っているツール以前のブログでも紹介させて頂いていますが、サーバ周りを運用を回すのには以下のツールを使っています。CIを起点として実行しています。処理の流れについて順を追って書いてみます。最初にPakcerでサーバの種となるAMIを作ります。pushをして、あとは放っておけば単体テストまでが完了したAMIが自動で出来上がってきます。いわゆるゴールデンイメージです。nameにはtimestampを付与しているので、「あ。MW周りの設定を3日前の状態に戻したいなー」とかあれば戻しは楽です。AMIを作るだけというのはアレなので、以下の条件を満たすAMIは、削除をする仕組みを入れています。保存日数を超過している。保存世代数を超えている。実際のtemplateの中身はこんな感じです。},~~~~privisionersでの処理について、全部書くと大変な量になってしまうので1role分のみ書きます。1パッケージ周りの更新ここでは主にpackegeのupdate/upgradeの処理を実行します。全roleのサーバで共通して流します。Ansibleplaybookは汎用/専用の2種類を用意しています。全サーバに同じ処理を施すための汎用playbookを実行します。pyenvなどのインストール、ユーザ周りの整備などの処理を行います。ここで実行する内容は、全roleで共通して流す内容であることと、管理の二重化を避けるためにansible-galaxyで共通化しています。次にrole毎に処理内容の異なる専用playbookを流して、Ansibleの処理は完了です。3Serverspec仕上げに、Serverspecでテストを行います。事前に/tmpにserverspecをまるごと送り込んであるので、該当するspecファイルをシェルスクリプト経由で実行します。spec全てのspecを通過したら、AMIが完成します。ここで出来上がったAMIにはアプリケーションコード(Rails)は含ませていません。(Packerの中に特定時点のコードを含めること事故につながるため。次にTerraformでサーバをつくります。pushをするだけです。applyまで完了し、サーバが出来上がります。事前にPackerの中でテストも完了しているので、即サービスインできます。"${aws_security_group.xxxxxxxxxxxxxx.id}",~~~~変数周りはtfvarsファイルで別管理しています。applyしてやるだけです。使用してインスタンスを動的にスケールをさせているため、aws_launch_configurationを定義しています。)EC2が起動してきたら、Packerの中に含むことができなかったRailsアプリケーションを流し込みます。deployが正常に完了したことを確認したら、Mackerelの監視が有効化されます。Railsアプリケーションを流し込んでいない状態で監視を有効化すると、Rackサーバが未起動、workerが未起動状態など不完全な状態となるため、重大障害扱いとなってしまいます。サービスインが完了すると、slackに成功メッセージがpostされ、サーバ構築は完了です。まとめ今回はインフラのサーバの構築について紹介させて頂きました。考えのもと仕組みを作っているので、シンプルなオペレーションができています。今回は運用に関しては紹介をしていないんですが、運用についてもできるだけシンプルな運用なできるような仕組を作り心かげています。次回ご紹介させて頂ければと思います。それでは今年も一年、トレタの開発者ブログをよろしくお願いします。2019に参加してきました!こんにちは。Request発行時にそのコミットIDでデプロイされた環境を自動構築してレビュー時/マージ...インフラをアレしてる佐野です。1日目の記事になります...2016-09-13Rubyを2.0から2.3にバージョンアップした効果とかインフラをチョメチョメしている佐野です。»トレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」の開発メンバーによるブログです。Blogスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。