Vagrantの機能を使って開発環境の効率をあげてみた。

     - 運用管理, 開発ツール ,  


プラットフォーム・ワンのシステムの運用・保守担当のエンジニアです。

保守の仕事に関わると、
ユーザからのお問い合わせだったり、監視アラートによる検知から
システムを調査することがあります。

ログとソースコードを見て、不具合を特定し改修する。
すぐできればカッコいいですが、

「本番環境に反映して別のエラーが発生して手戻りになる」

といったことが発生すると、非常にカッコ悪いです。

そういったことを防ぐにはどうすればよいか。
今回は、そこに重きをおいて、MacBookAirで開発環境を作成しました。

やりたいこと

構成は以下のとおりです。

スクリーンショット 2015-05-29 6.49.13

2つ、ポイントがあります。

1) 手戻りをなくすために、本番環境と同じ場所で動作確認テストを完結させたい。

クライアントPCに本番環境と同じ環境を構築できる
仮想環境サーバーのツール( Vagrant + VirtualBoxの構成)をインストールし、
ここにソースファイルをデプロイします。

2) テスト環境に反映させる時間を短縮したい。

改修作業の一般的な流れは、

  • ソースファイルの編集
  • 編集完了のソースファイルのコミット
  • コミットしたソースファイルをテスト環境へのデプロイ

となるかと思いますが、

自分の経験から、間違ったロジックのソースファイルをコミットしたり、
ソースファイルのテスト環境へのデプロイ漏れしたり、
といったことを発生させていたので、以下のように見直してみました。

  • ソースファイルの編集
  • Vagrantのrsync機能によるテスト環境へのデプロイ
  • テスト環境での確認作業後、gitへのコミット

といったフローになるよう構築しました。
デプロイ作業の工数削減と間違いソースファイルのコミットを予防できるので、
手間が減らせたのかなと思っています。

実際に動かす。

最後に、上のフローを実践します。

プラットフォーム・ワンの運用するMarketOneで、
タイトル画面の背景色が青くなっていたという不具合報告を受けたとします。
(※実際に発生したら、騒ぎになりますので、画面ではmy.marketone.jpとドメインを変えてます)

スクリーンショット 2015-05-20 15.42.35

 

ソースファイルを編集します。

スクリーンショット 2015-05-27 14.42.44

ソースファイルを保存して5秒ほど待ちます。

D, [2015-05-22T10:45:58.677904 #7878] DEBUG — : Adapter: considering TCP …
D, [2015-05-22T10:45:58.678084 #7878] DEBUG — : Adapter: considering polling …
D, [2015-05-22T10:45:58.678194 #7878] DEBUG — : Adapter: considering optimized backend…
==> default: Rsyncing folder: ローカルディレクトリ => 仮想環境ディレクトリ
==> default:   – Exclude: [“.vagrant/”, “ログディレクトリ”]

コンソールに上のように表示されていれば、すでにテスト環境にも反映されたため、
ブラウザから動作確認でき、FIXの確認ができたのでコミット→本番環境デプロイ
と作業します。

スクリーンショット 2015-05-20 13.59.30

 

少しでも手戻りをなくすアイデアとして、ひとつの参考になれば幸いです。


DACエンジニア採用情報

  関連記事

Qiita Team API と Google Spread Sheet でチーム日報を生成する

チーム日報を活用する MarketOne 開発チームでは複数拠点に分かれての開発を行っています。リモート開発が中心となると口頭でのコミュニケーションに限界があるため、テキストベースのコミュニケーションの比重が高い状態にあります。 チケットシステムやソースコード管理ツール上の議論はもちろんおこなってい …

no image
AWSにRailsアプリをデプロイする(公開編)

次にデプロイするため“aws rails デプロイ”でググってみるとunicorn、nginxというキーワードがでてくるので とりあえずこれを設定していきます。   アプリのsecret_key_baseの設定 [crayon-6153bc2976956183221 …

slack×Nagiosでアラートをプッシュ通知

DACではサーバ・NW機器のリソースの監視に「Nagios」を利用してます。 監視ホストも数百台規模で増え続けており、アラート検知が非常に重要な課題となってきています。 メールの通知では、各MLを通知先に設定して、フィルタ分けして…と何かと面倒ですね。 そこで「slackへアラート内容を …

全ファイルを検索
意外と知らないかも? Chrome DevTools の機能10選

みんな使っている Chrome DevTools。 Web開発やトラブルシューティングには必須ですが、便利な機能を知らないで使っている人がいたり、Web で使い方を調べても古い情報だったりすることがあるので、部内で Chrome DevTools についての勉強会を開催しました。 ここでは、その中か …

Rundeck&Win32-OpenSSHでWindowsのバッチをリモート実行させてみました

こんにちは。インフラ開発部の福本です。 Webサービスの提供を長く続けていると、どうしても継ぎ接ぎで改修が行われていくことも多く、それにあわせてスケジュール登録されるCronやTaskなども煩雑になってきますよね。 開発メンバーが異動でいなくなってしまうと、そもそもどこで何の処理が動いているのか探す …

x-callback-urlを使ってみた

x-callback-urlとは? iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを …

いまさらですが… GNU screen チートシート

最近はローカル環境で開発するようになってきたので、screen コマンドを使う機会も少なくなって来たような気がします。で、使ってないと忘れてしまうので、チートシートを作ってみました。 参照サイト GNU screen [quick_reference] 起動 コマンド 動作 screen -S &l …

Scala番外編「Boxに保存したファイルをBox APIを使ってダウンロードしよう!」

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 Box APIを使う背景・目的 DACはメディアレップです メディアレップとは、インタ …

ゼロからAngularでSPAを作ってみた(1) はじめてのアプリ編

はじめに Single Page Application (SPA)って知っていますか? Webサイトでコンテンツのリンクをクリックした時に妙に表示が早いな〜というとき、実はページを移動するのではなくてページの一部のみを書き換えていたりします。 こういったサイトの作り方を Single Page A …

GoogleスプレッドシートからTreasureDataへデータを取り込む

AudienceOneの開発を担当しています。skryoです。 またまたTreasureDataネタですが、今回はGoogleスプレッドシートからGoogleAppsScriptを使ってTreasureDataへデータを取り込む手順を紹介したいと思います。 なぜ? Googleスプレッドシート上でマ …