sometimes I laugh

高専卒WEBエンジニアがいろいろ残しておくブログ

AWS Data Pipelineで日次バッチ処理取得データをS3にポストする

f:id:watass:20141103203916j:plain

最近コードを書いてはいるものの、なかなかブログにできるネタがないため、またブログを書くとなれば結局AWSとかインフラ側の話になっちゃうんですね。
さてさて、今回はCDPで問題になりがちなバッチ処理、ジョブスケジューリングです。単純に実現するならばインスタンスを立ててcronで実行する、という形になりますが、実行保証もないし、インスタンス落ちたら終わりだし、AWSのベストプラクティス的にはありえないです。
ではどうするのかといえば、SQSやSWFで冗長性を確保することですが、どちらも実装するにはちょっと面倒臭い。単純にある時間になったらデータを取得してきて、S3に投げるだけのバッチ処理を実装するのに、そんな苦労はしたくないし・・・
と思っていたとき、思わぬサービスを見落としていました。そう、AWS Data Pipelineです。本記事ではAWS Data Pipelineを使って日次バッチ処理で取得したデータをS3にポストするまでをやってみたいと思います。

続きを読む

JAWS DAYS 2015に行ってきました

f:id:watass:20150323224751j:plain

JAWS DAYS 2015
http://jawsdays2015.jaws-ug.jp/

AWSユーザの祭典、JAWS DAYS 2015に参加してきました。
日本各地のJAWS-UG支部が東京に集まるということで、結構地方の方もいたみたいですね。とはいえ、やっぱり関東地区の黒い札の方が多いようでしたが・・・ちなみに僕はピンクの札でした。多少は目立ってたのかな?
さて、色々参考になる話を聞くことができたので、しっかりアウトプットしておきます。

続きを読む

AWS CLIでもっと快適に開発環境を起動する

f:id:watass:20141103203916j:plain

最近、時間がないことを理由に開発環境構築だけで、私的にプログラムを全然書いていないのですが、忙しさを理由に平日のコーディングをサボってはいけないなと思えてきました。では、仕事を終えてコードを書こうと決心すると、

  1. AWSマネージメントコンソールにログイン
  2. Authyでワンタイムパスワードを確認して入力
  3. EC2メニューにアクセスして、インスタンスを起動
  4. ステータスチェックを終えたらパブリックDNSを確認
  5. Route53メニューにアクセスして、対象レコードのCNAMEをパブリックDNSで更新

という流れになりますが、まぁ面倒臭い!
これでは平日に帰ってきてからコード書く気力も失ってしまいます。そこで、今回はこの手順をAWS CLIを使うことで、コマンド一発で済ませるようにしてみます。

続きを読む

Jenkinsの自動デプロイにAnsibleを使ってみた

f:id:watass:20150211233737p:plain

ありがたいことに、以前のJenkins自動デプロイ記事がそれなりに多くの反応をいただきまして、冷静に見直してみたのですが、ちょっとデプロイ処理が雑だなと。
最近ではデプロイをやるにも、Capistranoやfabricなどのツールがあり、多様化するデプロイ要件に柔軟に対応できるような工夫が施されています。これらのツールを用いることで、シェルスクリプトで記述されたぐちゃぐちゃなオレオレデプロイを回避できたり、デプロイ失敗時のロールバックなどがしやすくなるメリットがあります。

現在開発しているアプリでは、git pullだけでデプロイできるようにしてあるので、前回の記事のようにJenkinsのジョブにシェルスクリプト直書きでもいいのですが、

  • デプロイ先の変更やスケールアウトに対応しにくい
  • 認証鍵の場所をコマンドで直書きするのが、個人的にちょっと抵抗ある
  • 書き方がスマートじゃない ←重要

という問題があり、後々のことも考えてデプロイツールの導入を決心しました。
今回はAnsibleを使い、GitBucketで管理されているリポジトリへのプッシュをトリガにして、Jenkinsで自動デプロイするまでの流れをまとめてみます。なお、前回のシェルスクリプトによる自動デプロイは以下の記事です。

続きを読む

dots. Summit 2015に行ってきました

f:id:watass:20150208201831j:plain

dots. Summit 2015
http://eventdots.jp/promotion/dots_summit_2015

行ってきました。以前より勉強会の登録や情報収集で利用させていただいているdots.にて、運営元のインテリジェンスさんが企画するdots. Summitの情報が公開されていたので、早々に登録。昨日参加してきました。
本イベントではGoogleサイバーエージェントGunosyなどの今をときめくエンジニアさんがスピーカーとして登壇されたため、非常に有益なインプットを手に入れることができました。そこで、インプットを忘れないようにするため、ざっとレポートします。

続きを読む

Jenkins + GitBucketなインスタンスでFuelPHPをバージョン管理する環境構築してみた

f:id:watass:20150201153144p:plain

以前までの記事でデプロイ、テストの自動化ができたわけですから、これで後はゴリゴリコーディングするだけ、ということで、Route 53でドメイン購入までしたわけですが、いまさらになってGitHubリポジトリホストに使うのはちょっと厳しいなと。
できればAWSVPC内にGitサーバ立てて、プライベートなリポジトリホストを使用するつもりだったのですが、そのためにインスタンス立ち上げるのはもったいない、という理由からGitHubを採用していました。しかし、Jenkinsサーバを立てている現状、Jenkinsサーバにリポジトリホストとしての役割を兼任させればいいじゃんという結論に。
HTTP経由でリポジトリを参照するようにしようかなと思っていたところ、社内でGitBucketというGitHubのクローンでサーバ立てたという話を聞き、すごく良さそうだったので試してみることにしました。

続きを読む

JenkinsでFuelPHPのユニットテストを自動化してみた

f:id:watass:20150111232633p:plain

Jenkins、いいですよね。オペレーションの自動化には美があります。前回の記事ではGitによるデプロイ自動化を行いましたが、その時点で既にユニットテストの自動化は想定していたので、今回はそれを実現してみます。
これによって、機能を実装してプッシュする度に自動でデプロイされ、その過程でテストが自動で行われるので、特に通知がなければ動作が保証されるようになります。実際に本番環境への適用の際には、もう少ししっかりテストをする必要があるのかもしれませんが、開発環境レベルではテストを意識的に実施せずとも気兼ねなく開発を進めることができます。
ユニットテストにはおなじみのPHPUnitを使います。なお、前回のJenkins導入やデプロイ自動化の話はこちらの記事でまとめてありますのでよろしければどうぞ。

続きを読む