sometimes I laugh

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

Heroku Dropbox Syncでブラウザからデプロイする

f:id:watass:20150517164521j:plain

最近興味があり、Herokuを触り始めたのですが、今年の新人研修でクラウド関係の話を非エンジニア含めた場で話させてもらえる機会があるので、AWSに限らず、Herokuの話をしようかなと思っています。
個人的にはクラウドといえば、AWSのようなIaaSなのですが(GCPの方はすいません)非エンジニアの方にAWSのメリットを語るためには、いかにハードウェアを扱うことが面倒臭いか、インフラを自前で管理することがトラブルに繋がるかという部分を体感してもらえないといけないなぁと思いまして、そうなってしまうと、手っ取り早くクラウドの面白さ、便利さを体感するならばPaaSが一番だろうと考えました。
特に、黒い画面を見ることに抵抗がある人でも簡潔にやる方法として、HerokuのDropbox連携が一番簡単にできそうだったので、事前に手順を整理しておきます。

続きを読む

FuelPHPのMVCについてちゃんと考えてみた

f:id:watass:20141214211533p:plain

フレームワークというものを学びはじめてざっと5ヶ月くらいになるんですが、FuelPHPに限らず、CakePHPRuby on RailsなどのWebアプリケーションフレームでは必ず登場するキーワード「MVC」についてちょっと理解が浅かったので、改めて色々調べてみました。
ようやく自分なりに納得のいく答えができたのでメモとしてまとめておきます。なお、具体的なプラクティスに関する知識は皆無な身の上ですので、「俺はこうやったほうが好き」といったご意見は大歓迎です。ぜひコメントでもTwitterでもいいので一言いただけばと思います。

続きを読む

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などの今をときめくエンジニアさんがスピーカーとして登壇されたため、非常に有益なインプットを手に入れることができました。そこで、インプットを忘れないようにするため、ざっとレポートします。

続きを読む