2013/12/27

盲導犬候補として巣立った三男(犬)が繁殖犬となって帰宅した

おかえり!


これまでのあらすじ: [-*煙猴*-]パピーウォーカーとして過ごした日々について

盲導犬候補として生まれ、1歳になるまで我が家で育てた三男(犬)。今度は盲導犬の親犬となる繁殖犬として、我が家に帰ってきました!

実は我が家で預かっている間に、盲導犬候補としてだけで無く、繁殖犬候補にもなっていました。そこで委託終了後、まずは盲導犬としての訓練を受けたのですが、繁殖犬候補であるため去勢していないことも関係し、落ち着きが無く落第。しかし無事繁殖犬となり、そして我が家は繁殖犬飼育ボランティアとなり、こうして帰ってきたわけです。

彼が我が家を出てって三ヶ月間。三日に一回は「元気かなぁ」「ちゃんと繁殖犬になれるのかなぁ」「戻ってこないのかなぁ」と言い続けて妻に「ウザい」と言われまくってたのですが、こうして再会出来て本当に良かった。何度も夢に見るくらい会いたかったのでマジ嬉しいです。

母犬の場合は子犬のお世話もする必要があるのですが、三男は父となるため、子犬のお世話は無し。ちょっと残念。でも子犬に会いにはいけるそうで、僕は既に初孫が待ち遠しい祖父の気分です。

今後は繁殖犬としての役割を終えるまで我が家で預かることになり、そしてその後は引退犬としてぜひ我が家にずっといて欲しいなぁと思います。

とにかく君にまた会えて僕は本当に嬉しいよ!

2013/12/18

「カンバン・リーン・スタートダッシュ!」に参加してきた

・併せて読みたい:[-*煙猴*-]: 読了:[アジャイルサムライ]、[リーン開発の現場]

「リーン開発の現場」の訳者である藤原さんと監訳者である角谷さんがリーンやアジャイルについてお話頂けるイベント、「カンバン・リーン・スタートダッシュ!」に参加してきました!

リーン開発の現場 カンバンによる大規模プロジェクトの運営リーン開発の現場 カンバンによる大規模プロジェクトの運営
Henrik Kniberg,角谷 信太郎,市谷 聡啓,藤原 大

オーム社
売り上げランキング : 14347

Amazonで詳しく見る by AZlink

イベントの雰囲気については「2013/12/18 カンバン・リーン・スタートダッシュ! #agilesapporo - Togetterまとめ」をご参照下さい。

カンバン・リーン・スタートダッシュ! - 藤原大氏
「リーン開発の現場」はヘンリック氏の経験が書かれた本ですが、このセッションでは藤原氏が自らカンバンを導入し、試行錯誤した経緯についてお話頂きました。
冒頭で「理論では無く経験だ」というヘンリック氏の言葉が引用されましたが、まさにその言葉の実践としてのセッションだったと思います。書籍と同様に、こうやってみた、こんな結果が出た或は出なかった、だからこうした、という実体験に基づくお話はとても貴重であり、そして楽しいものでした。事例はあくまで事例であって答えではありませんが、試行錯誤の過程や他の人の経験則はとても勉強になります。
僕の感覚的には、カンバンはマネージメントというよりもコミュニケーション改善手法の一つのようにと思えました。

ぼくらはeXtreme Programmingのかけら - 角谷信太郎氏
「リーン開発の現場」がどういう経緯で発刊されたのかというお話を軸に、アジャイルという考え方が日本の中でどう浸透していったのか、そしてそのベースであるXPについて改めて振り返る、というお話でした。
「プラクティスという言葉はあくまで『習慣』なので日本での用法に違和感がある」と仰っていて、確かに僕自身その言葉を「方式」や「手法」のような意味で使っていたなーと再認識しました。
Uncle Bob Martinの「Extreme Programming, a Reflection | 8th Light」というBlog記事について「XPの考え方や手法は現在では別の名前になるなどして使われ続けている」というお話があって、僕はソフトウェア開発に携わっていない為リーンのようなマネージメントやコミュニケーションに近い話のほうがしっくりくるので、今までXPについてはあまり勉強してこなかったんだけど、一度ちゃんと勉強したいと思いました。しかし既に標準的な手法として一般的になっているならextremeでは無くbasicだよなぁ。

まとめ
久しぶりに勉強会らしい勉強会に参加したのですが、すっげー面白かったです。またしばらく札幌でこういうイベントに参加する機会は無くなってしまうけど、次の機会を楽しみにしています!


悪のカリスマに学ぶ「人に好かれる六原則」 - [ジョジョの奇妙な冒険 Advent Calendar 2013]

これはジョジョの奇妙な冒険 Advent Calendar 2013の参加エントリです。
真の失敗とは開拓の心を忘れ困難に挑戦する事に無縁のところにいる者たちの事を言うので、僕は勇気を出してこのAdvent Calendarというレースに参加します。

「ジョジョの奇妙な冒険」という作品の魅力は様々ですが、その大きな一つが「悪」であることは万人が否定しえないものでしょう。そしてそんな魅力的な「悪」の中で、カリスマと呼ばれるべきは誰か?そう、もちろんディオ・ブランドーです。

ある時は殺人鬼や過去の英雄を含めた吸血鬼軍団を従え、そしてまたある時はスタンド使いを集めた組織を作り、死してなお聖人...いや魔人となりて世界中に影響を与え続ける。そんな彼がどのように人々に敬愛され、盲信者たちを作り上げたのか。

そのカリスマ性を、デール・カーネギーの名著「人を動かす」から考えたいと思います。


2013/12/17

読了:[アジャイルサムライ]、[リーン開発の現場]

有り余る余暇(有給休暇)を使って買ったまま読んで無かった本の消化をした。

アジャイルサムライ−達人開発者への道−アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson,西村 直人,角谷 信太郎,近藤 修平,角掛 拓未

オーム社
売り上げランキング : 3827

Amazonで詳しく見る by AZlink

今更ながらアジャイルソフトウェア開発について一から学びたいと考えたとき、何を読んだら良いのかと何人かの人に聞いたが、皆「アジャイルサムライ」を挙げた。そして読み終わったときその理由が良く分かった。「アジャイル」の考え方から進め方、手法まで、広く理解出来る。かといって入門書のように概要だけで終わることなく、本質に繋がる言葉できちんとまとめられている。一度だけでなく、手元に置いて何度も読み返すようなタイプの本。僕のようにソフトウェア開発に携わった経験の少ない人にも分かりやすい、良い本だった。
僕個人としては第四章であるプロジェクト運営に関する章が一番身近で読んでいて面白かった。また第五章のアジャイルソフトウェア開発のプラクティスについてもキーワードとしてしか認識していなかった部分なので、例を挙げた記述によってざっくりとだけど理解出来たように思う。

リーン開発の現場 カンバンによる大規模プロジェクトの運営リーン開発の現場 カンバンによる大規模プロジェクトの運営
Henrik Kniberg,角谷 信太郎,市谷 聡啓,藤原 大

オーム社
売り上げランキング : 19318

Amazonで詳しく見る by AZlink
リーンソフトウェア開発を実際の開発現場に適用したときの具体例を中心に、どのような手法を用いたのか(その中心がカンバン)、そしてどんな結果が出たのか、もしくは出なかったのか、がとても分かりやすく語られた本。「アジャイルサムライ」で考え方を学んだ後に読んだから、とてもしっくり入ることが出来た。
特に「この方法は『このプロジェクトでは』うまく良い結果が出なかった」というストーリーが真摯に語られているのはとても価値があることだと思う。まさに「事例としての物語」であり、同じようにアジャイルやリーンといった考え方を自分たちのプロジェクトに適用したいと考えたときに、そのプロジェクトにあった形で改善を行えば良いのだ、という指針になるものだから。
特に第一章は引き込まれることが多く、結局一日で読了したが、これも何度か読み返したいと思う。


と、いうことで明日は「カンバン・リーン・スタートダッシュ!」に参加してきます。楽しみにしています!

2013/12/11

[小ネタ]cfn-initでsudoする方法

fluentdのインストールスクリプトはスクリプト内でsudoコマンドを使用しているが、これをcfn-initで実行しようとすると以下のエラーが出る。
sudo: sorry, you must have a tty to run sudo
これは/etc/sudoersに
Defaults requiretty
という記載があり、tty以外からのsudoコマンドの使用が制限されているため。

「じゃあ、cfn-initはいったいどんな環境で実行されているんだろう?」と思って、
"commands" : {
  "env" : {
    "command" : "env > /tmp/cfn-init.env"
  }
}
こんな感じでCloudFormationのStackを作ってみた。
結果は以下の通り。
$ cat /tmp/cfn-init.env
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
_=/bin/env
runlevel=3
RUNLEVEL=3
LANGSH_SOURCED=1
PWD=/
LANG=en_US.UTF-8
previous=N
PREVLEVEL=N
CONSOLETYPE=serial
SHLVL=5
UPSTART_INSTANCE=
UPSTART_EVENTS=runlevel
UPSTART_JOB=rc 
serialでした。

これを回避してsudoを使えるようにするためには、以下のようにUserDataで/etc/sudoersに「Defaults !requiretty」をいう設定を追加する。
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
  "#! /bin/bash -v\n",
  "echo \"Defaults !requiretty\" >> /etc/sudoers\n",
  (以下略)
こうすると/etc/sudoersには「Defaults requiretty」と「Defaults !requiretty」の2つの設定が共存してしまうのだけど、後ろの設定が有効になるようなので、CONSOLETYPE=serialでもsudoが使えるようになる。

以上、小ネタでした。


2013/12/10

pathogen + vim-jsonで快適JSON生活 on vim

休暇を使ってちまちまとAWS CloudFormationのTemplateを書いてるんだけど、JSONのSyntaxハイライトがされていないと大変見づらい。


そこでvimのJSON Syntaxハイライトをしてくれるplugin「vim-json」を入れた。

pathogenのセットアップ

vim-jsonは「Pathogen-friendly.」だそうなので、まずはpathogenをセットアップする。

pathogenは
  • 通常だと.vim以下の各ディレクトリからpluginファイルを読み取るが、
  • .vim/bundle/プラグインディレクトリからもpluginファイルを読み取ってくれる
ためのplugin。これを使うことで各pluginがディレクトリ毎に管理されすっきりするのと、githubで公開されているpluginはgit cloneで丸ごとコピーしてしまうことで簡易にセットアップが可能になる。

pathogenのセットアップは以下の通り。必要なディレクトリを作成し、curlを使ってpathogen.vimを作成する。
$ mkdir -p ~/.vim/autoload ~/.vim/bundle 
$ curl 'www.vim.org/scripts/download_script.php?src_id=19375'  > ~/.vim/autoload/pathogen.vim
pathogenを有効にするために.vimrcを修正する。
$ vi ~/.vimrc
# 以下行を追加
call pathogen#infect() 
vim-jsonのセットアップ

上述の通り、git cloneでごそっと持ってくる。
$ cd ~/.vim/bundle
$ git clone https://github.com/elzr/vim-json.git
これだけ。試しに~/.vim/bundle/vim-json/json-test.json, jsonp-test.jsonpを開くと、ちゃんとSyntaxハイライトされている。

CloudFormationのTemplate用にファイルタイプを追加する

この状態だとJSONとして定義されたファイル名しかJSON Syntaxハイライトされないが、CloudFormationのTemplateファイルは*.templateという拡張子で作成することが多い。このため*.template拡張子もJSONとして見なすよう、ファイルタイプを追加する。

vimのファイルタイプの追加は~/.vim/filetype.vimに記述する。
$ vi ~/.vim/filetype.vim
if exists("did_load_filetypes")
  finish
endif
augroup filetypedetect
  au! BufRead,BufNewFile *.template         setfiletype json
augroup END
結果、*.template ファイルを開くとこんな感じに!


まとめ

pathogen便利。vimのプラグインはあんまり入れない派だったんだけど、ほかにも便利なの探してみよう...というプラギン沼。



Vimテクニックバイブル ~作業効率をカイゼンする150の技Vimテクニックバイブル ~作業効率をカイゼンする150の技
Vimサポーターズ

技術評論社
売り上げランキング : 214254

Amazonで詳しく見る by AZlink

2013/12/04

僕と砂川誠選手 - [コンサドーレ札幌 Advent Calendar 2013] #adventar #consadole

※この記事はコンサドーレ札幌 Advent Calendar 2013の参加記事です。


さて、Advent Calenderに参加するに当たって、年に4,5回ホームゲームを見に行く程度のちょいサポである僕が何を書けるだろう...とひとしきり考えたんだけど、特に思いつかなかったので、砂川誠選手について書きたいと思います。

俺達の砂川誠」こと砂川選手、背番号8のMF。市立船橋を経て1996年に柏レイソルに入団後、2003年よりコンサドーレに在籍しています。

元々僕が砂川選手を応援するようになったのは、僕の母が市立船橋時代からの砂川選手の大ファンで、一緒にコンサドーレのゲームを見に行くといつも砂川選手を応援しているからです。
また36歳と僕よりも年上の大ベテランなのにまだまだ現役で頑張ってる姿は素直にすごいと思います。2009年くらいまではイケメン風の長髪でしたがその後現在の短髪となり、より男前になりましたね。

そんな砂川選手、2010年には大きな事件がありました。腰痛による出場機会激減とチームの財政問題から、戦力外通告を受けました。



しかし主力選手がどんどんと他チームに移籍していきチーム編成もままならんという状況に陥り、砂川選手との再契約が発表されます。僕の母も大喜びでした!

そして2013年現在、今も砂川選手はコンサドーレ札幌で現役選手として活躍中です。2012年にはコンサドーレ史上初の在籍10年選手となり、2013年10月20日に行われたJ2第37節-山形戦で公式戦通算500試合出場を達成



最近のコンサドーレはユース上がりなど若い選手が元気ですが、砂川選手にはまだまだ頑張っていただき、コンサドーレ札幌を、そして北海道を元気にして頂きたいですね!


余談ですが、コンサドーレ札幌のWebサイトにはその年度年度の選手プロフィールが載ります(砂川選手:2011年2012年2013年)
砂川選手はなぜか毎年「憧れのサッカー選手」や「好きな食べ物」が変わるのですが、「好きな女性タレント」は一貫してジェシカ・アルバ。どんだけ好きなんだ。


ダーク・エンジェル シーズン1 (SEASONSコンパクト・ボックス) [DVD]ダーク・エンジェル シーズン1 (SEASONSコンパクト・ボックス) [DVD]
ジェシカ・アルバ,マイケル・ウェザリー

20世紀フォックス・ホーム・エンターテイメント・ジャパン
売り上げランキング : 23383

Amazonで詳しく見る by AZlink

2013/12/01

UQ WiMAXを契約した

退職に伴いモバイル回線を自前で調達する必要が出てきました。当初はXi契約しているGalaxy noteからテザリングで接続する方向で考えていたのですが、実際にテザリングしてみたところ1週間で7GB制限(※Xiデータプラン契約では当月利用データ料が7GBを超えると当月末まで通信速度が送受信最大128kbpsに制限される)が発生してしまいました。

128kbpsなんて全然早いじゃん...とテレホーダイ世代の僕は考えていたのですが、今のリッチなコンテンツにとって128kbpsは非常に細く、スマホ用のWebコンテンツでさえタイムアウトする始末。

これじゃ使い物にならんということで、UQ WiMAXと新規に契約しました。
購入したハードウェアはAtermWM3800R、契約したプランはUQ Flat 年間パスポート


UQ WiMAXを選択したのは以下の理由から。
・月額¥3,880と利用料金が安いこと。
・継続利用割引の縛りが1年と短期であること。
・速度制限が無いこと。
・モバイルルータが¥100と激安だったこと
最近はWiMAX 2+が話題になっているけれど、2年という継続利用縛りの長さから除外しました。 正直なところ僕の利用だと下り110Mbpsは必要無いですしね。

今このBlogもWiMAX経由で(裏でbrew動かしながら)繋いでいるけれど、速度的には問題なし。電波感度についてはこれから使い込んでどうなるかですけど、札幌近郊はエリア範囲なのでまぁほぼ大丈夫だろうと思ってます。後は地方での感度だけど、これは明日からの温泉旅行で試してみよう。

まずはこれでインターネット回線を確保したので一安心。


AWR-100TK ブラック 3G シムフリー WiFi ルーター SIM FreeAWR-100TK ブラック 3G シムフリー WiFi ルーター SIM Free


AVOX
売り上げランキング : 1074

Amazonで詳しく見る by AZlink

エゾシカ丼を食らう - [道民部 Advent Calendar 2013] #adventar #doumin

※この記事は道民部 Advent Calendar 2013の参加記事です。


はじめに

今日は
「人生は短く有限なので、そこでしか味わえなかったり今でしか食べられないようなものは、積極的に食べたほうが人生楽しいよ」
という話をします。


エゾシカについて

皆さん、エゾシカをご存知ですか?道民には馴染みの深い動物ですが、道外の方にとってはちょっと遠い存在なのでは無いでしょうか。

エゾシカは北海道全域に生息するシカの仲間です。道東や道北に特に多く生息していたのですが、最近は北海道西部でもよく見かけるようになりました。

かつて乱獲や豪雪、土地開発による生息地減少などに伴い、一時は絶滅寸前にまで至りましたが、1980年代以降個体数が爆発的に増加し、現在は65万頭程度が生息していると言われています。個体数の増加に伴って農業被害や交通事故も増加傾向にあり、また自然植生の破壊などが懸念されています。
なお交通事故は割と良くある話で、僕の知人が高速道路でエゾシカを轢いて車のフロントが大破したことがありました。本人が無事で何よりでしたが、おっかない話です。

そんなわけでエゾシカとの共生、駆除したエゾシカの有効活用という観点から、エゾシカの食用利用が近年活発になっています。鹿肉は高タンパク低脂肪、かつ鉄分が豊富と、非常に栄養価が高い食品です。
以前から一部のレストランや物産館などで取り扱われていたのですが、近年ではコープさっぽろのような大手から産直生鮮市場、スーパーエースなど、身近なスーパーでも取り扱われるようになりました。一般社団法人エゾシカ協会のWebサイトでは協会推奨の鹿肉が買えるお店のリストが公開されています。

まぁここでは小難しい歴史的経緯の話とか動物愛護的観点での駆除の正当性なんかを話したいわけでは無く、せっかく近所で鹿肉売ってるんだから食ってみたぜ!という話をします。

2013年12月31日をもって退職します

2013年12月31日をもって、現在の会社を退職することになりました。
2001年より丸12年間、会社設立時からのメンバーとして、全エンジニアを統括するマネージャとして、そして一人のエンジニアとして、業務に従事させて頂きました。経営や、マネージメントや、リーダーの在り方や、エンジニアとしての働き方や、本当に多くのものを学ばせて頂きました。厚くお礼申し上げます。

こんなにもお世話になった会社を退職させて頂くことになったのは、一重に僕個人の危機感によるものです。

0.前提
僕は過去12年間、インフラエンジニアとして働いてきました。インフラというのはとても大きな括りのざっくりとした言葉ですが、地方におけるインフラエンジニアとしては有りがちな「環境何でも屋」に近い位置づけです。ネットワーク設計からネットワーク機器の設定・構築を中心として、ネットワークに関わるサーバやサービス、DB、フレームワーク、クライアントPCのセットアップまで、何でもやります。提案営業もやったし、運用や保守にも携わってきました。特化した技術が無い代わりに、何でも広く(浅く)対応出来る、というのが現在の僕の特性です。

1.僕の戦場が狭まっている
10年前の僕の仕事は、ネットワークを設計構築し、サーバを設計構築し、サービスを設計構築することでした。例えばWebシステムならApacheと関連するモジュールをセットアップするところまでが僕の仕事で、そしてアプリケーションを担当するエンジニアはその開発したアプリケーションをコンテンツフォルダに置くだけでした。環境は全てインフラ担当が、アプリケーション担当は開発をするだけ、そんな住み分けがありました。牧歌的な時代ですね。
しかし今ではアプリケーションエンジニアがWebサービスを立ち上げるのが当然のようになっているし、更にはフレームワークやDBのセットアップまで自分たちでやるようになっています。PaaSやIaaSのようなモデルが生まれたことで、クラウド上のネットワーク設計やロードバランサに至るまで、何でもアプリケーションエンジニアが自らするようになっています。
かつてハイレイヤーを戦場にしてきた人たちがどんどんと低いレイヤーにも攻め込んできている。そんな中で僕のようなローレイヤーエンジニアが、ずっとローレイヤーだけで戦っていけるんだろうか、いつかパイを食い潰され、僕が戦える戦場が無くなるのでは無いか。そんな強迫的な危機感を、この3年ほどずっと考えていました。

2.僕の仕事が減っている
これもまた昔話ですが、かつて大手ベンダやSIerが案件を受注したらエンジニアは全て下請けで賄っていた時代がありました。僕もその流れで大手ベンダに常駐し、ネットワーク案件に関わることでインフラエンジニアとして経験を積みました。しかし景気衰退に伴って大手ベンダやSIerでは「内製化」がキーワードとして飛び交うようになり、今では古くからいる極少数のエンジニアが抱え込まれたまま新たなエンジニアが参入することが難しくなってきました。また大手ベンダから外部に出る受託案件自体の数もどんどん減少していると感じています。僕のような中小企業に勤めるインフラエンジニアの食い扶持を安定的に確保するのはこれからどんどん難しくなるだろうと思います。

3.エンジニアとしての僕が死んでいってる
ここ数年はエンジニアとしてよりマネージャとしての立場で業務に従事することが多く、自分で手を動かしたり、新しい技術にチャレンジしたりする機会がどんどん減ってきました。もちろんマネージメントも大事なんだけど、このままエンジニアとしての僕がどんどん死んでいくのかなぁと思うのはとても辛いものでした。もっともっと勉強して、もっともっと出来ることを増やして、もっともっとエンジニアとして仕事をしたい。これは35歳の中堅会社員としては我侭なのかも知れないけれど、短い人生の中で出来るだけ楽しく生きたいと思う僕にとっては重要なことでした。

4.つまり
この先の生存競争に勝つために、僕が今持っている武器を磨くと共に、新しい武器を手にする必要がある。負けたら食っていけない。今のままのやり方では勝てない。その危機感こそが、今回退職することになった理由です。

5.これから
新しい武器を手にすること、その武器を上手く使えるようになること、その武器を後進に伝えること、そしてまた新しい武器を手にすること。このサイクルを上手く回せるようなエンジニアになりたいと思っています。

2013/11/28

tmuxを使うことにした

最近はGNU screenよりもtmuxのほうがモダンらしいのでMacBookにtmuxを入れた。

インストールはHomebrewでサクっと。
$ brew install tmux
.tmux.confは以下のようにした。
# PrefixはC−t set-option -g prefix C-t # Default prefixをunbind unbind C-b # tmux.confの再読み込み bind r source-file ~/.tmux.conf \; display-message "Reloaded config done." # Esc遅延を1msに変更 set -sg escape-time 1 # ペイン分割を変更 unbind-key % unbind-key '"' bind-key - split-window -v bind-key | split-window -h # ペイン移動をvi likeに bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # ペインのサイズ変更 bind -r H resize-pane -L 5 bind -r J resize-pane -D 5 bind -r K resize-pane -U 5 bind -r L resize-pane -R 5 # コピーモードをvi likeに setw -g mode-keys vi
ついでに、最近はdotfilesはgithubに置くのがモダンらしいので、僕も置いてみた。
smokeymonkey/dotfiles
なお、なんか最近は「モダンな○×△」って言うのがモダンらしいので、あえて本文中にモダンって連呼してみた。ちょっとアホっぽい。

2013/11/26

Ruby開発環境を作る on 初めてのMacBook

生まれて初めて触るMacBookに戸惑いつつ、開発環境についてFacebookで相談してみて、いろんな人のご意見を頂いた結果、
  • すぐに触れる環境としてOS Xの中でrbenv + ruby-build + gitの環境を作る
  • ミドルウェアのような環境丸ごと試したい場合はVagrant
にしてみようと思っています。

まずはrbenv + ruby-build1 + gitの環境を構築してみました。

2013/11/25

初めてMacを使ったWindowsユーザの俺がブチ切れた7つのこと

Windows95以来ずーっとWindowsユーザだった僕ですが、故あってMacBook Airを使うことになりました。


しかし、だがしかしだ。ここ数年ThinkPadかLet's Noteしか触ってなかった僕が初めてMacBook Airを触ったところ、もうわけわからん。イライラする。イライラする!そんなイライラの原因とその対策をまとめました。

後元々Macユーザの人にとって見れば標準こそ効率的で美しいんだと思いますが、これはあくまでWindowsユーザの僕にとってブチ切れるポイントなので、軽くスルーして下さい。


2013/11/22

Using elasticfox-ec2tag on Windows

はじめに

今日はとても良い記事がありました。


@mirakuiさんによるre:Inventの参加レポなのですが、
「サーバに名前をつけるという行為はもはや古い慣習であり、クラウドネイティブな思考を妨げる足かせになる」
という考え方はすごく良いと思いました。

で、この記事の中で紹介されていたelasticfox-ec2tagが興味深かったので使ってみました!

2013/11/21

Amazon EBSをコマンドで操作する

第2回読書会 - Amazon Web Services クラウドデザインパターン実装ガイドは業務上の都合で参加出来ませんでした。無念。次回第3回読書会は11/25(月)開催なので、なんとしても参加したいと思います!

で、第2回では第2章を読んだということで、僕は独習しないといけません。そこで今日は今日はAmazon Elastic Compute Cloud ユーザーガイドの「Amazon Elastic Block Store(Amazon EBS)」章を読みました。

2013/11/18

仕事用カバンをバックパックにした - NIXON LANDLOCK II

かれこれ6年間、仕事用のカバンとしてトートバッグであるJetSetBagを使っていた。これはとてもたくさんモノが入るしインナーポケットもたくさんあるしととても重宝していたのだけれど、トートバッグの特性上片方の肩にだけ加重がかかることからすっかり身体が歪んでしまい、荷物を持たずに普通に立っていても左肩が右肩より下がっているという体型になってしまった。右肩に持ち直すという方法もあるのだけど、僕の右肩はインピジメント症候群になっているため荷重を加えたくない。

そんなわけで仕事用のカバンをバックパックにした。バックパックだと両肩に荷重を分散できるため身体への負担が少ないというのが選んだ理由。スーツだとトートバッグやショルダーバッグのほうが合うんだけど、もうそんなこと言ってられん。楽なの優先。

購入したのはNIXONLANDLOCK II BACKPACKというモデル。妻様に買って頂きました。ありがとう妻様。



NIXONというブランド自体に深い思い入れは無かったんだけど、よく学生さんが持っているのを見ていて、サイズの大きさと黒に白のワンポイントというデザインが気に入ったので選択した。

ストリートブランドらしく細かいポケットみたいなのはほぼ無くて、インナーにメッシュポケットが一つあるだけ。でも容量はさすがに大きくお弁当や水筒を入れても余裕があるし、サイドにジッパーが付いていてそこから取り出しが出来るようになっている。電車で本を取り出すときはこの口が便利。
僕の用途だとノートPC+ノート+手帳+本+水筒+弁当がメインなので、他の細かいのはポーチに入れて突っ込んでおけば充分。

さっそく今日から通勤で使ってみたけれど、やっぱ肩にかかる負担が段違い。とても楽。少し肩が良くなるといいなぁ。



[ニクソン] NIXON LANDLOCK II NC19531253-00 1253 (WOODLAND CAMO)[ニクソン] NIXON LANDLOCK II NC19531253-00 1253 (WOODLAND CAMO)


NIXON(ニクソン)

Amazonで詳しく見る by AZlink

2013/11/08

elasticsearch-headを使ってみる

今日はelasticsearch-headを使ってみました。

インストール
2台のEC2インスタンスを作成し、ElasticSearch + AWS Cloud Plugin for ElasticSearchでクラスタ構成にします。手順は「AWS Cloud Plugin for ElasticSearchを使う – AWSで始めるElasticSearch(3)」を参照して下さい。

elasticsearch-headはpluginコマンドでインストールします。
$ sudo /usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip...
Downloading .......................DONE
Installed mobz/elasticsearch-head into /usr/share/elasticsearch/plugins/head
Identified as a _site plugin, moving to _site structure ...
インストール後、elasticsearchのサービスを再起動し、「http://IPアドレス:9200/_plugin/head/」にWebブラウザでアクセスすると、elasticsearch-headのWebUI画面が表示されます。

2013/11/06

はじめてのCloudFormation

やろうやろうと思っていながら中々手が出ていなかったCloudFormation、ようやっと勉強始めました。

テンプレートを作る
まずはAWS-SDK for rubyがセットアップされたEC2を立ち上げるだけの簡単なtemplateを作成してみました。それぞれの項目の意味合いは以下の通り。
  • AWSTemplateFormatVersion ... テンプレートフォーマットのバージョン。AWS CloudFormation User Guideを見ると、現在は「2010-09-09」しか無いため、事実上固定値になっているようだ。
  • Parameters ... ここに記載したパラメータは、スタック作成時指定出来るようになる。この例だと、「KeyName」というパラメータ名で鍵ファイルを指定出来る。またパラメータはRef関数にて参照可能({ "Ref" : "KeyName" })。
  • Mappings ... マッピング定義。引数に対しての戻り値をリストで設定できる。マッピング定義はFn::FindInMap関数にて参照可能。例では{ "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}の部分。CloudFormationが自動的に設定したリージョン名が入っている擬似パラメータであるAWS::RegionをRef関数にて取り出して、Fn::FindInMap関数に渡している。なお各リージョンで使われているAmazon Linux AMIのIDはAWSのWebサイトで確認できる。
  • Resource ... 作成するリソースに対する定義。例ではセキュリティグループとEC2インスタンスを作成している。
  • Outputs ... スタックを作成した結果で出力したい項目を定義する。CloudFormationのOutputsタブにて参照できる。

2013/10/30

ElasticSearch + fluentdでログ分散管理

前々回前回と、ElasticSearchについて勉強をしました。繰り返しになりますが、ElasticSearchの特徴は「RESTfulで全てがJSON」です。そうするとJSONデータであれば何でも食わせて全文検索が出来るわけですね。またCluster機能によって保持データを分散させることで可用性も確保出来ます。

高い可用性が必要で、全文検索したいもの...ログだ!

そこでfluentdです
fluentdはイベントログ収集のためのオープンソースソフトウェアで、インプットされたイベントログをJSONに変換してアウトプットします。「Log everything in JSON」です。開発元であるTreasure Data, Inc.の古橋氏のBlogに詳細があります。

2013/10/29

ElasticSearchのCluster機能を試す

ElasticSearchとは、の修正
昨日僕はElasticSearchを「検索エンジン」と書きましたが、正確に言うと「全文検索エンジンであるLuceneを使用した、全文検索システム」です。

Luceneとは
Apache Software Foundationで開発されている全文検索エンジンで、Javaのクロスライブラリとして提供されています。

Solrとは
Apache Software Foundationで、Luceneのサブプロジェクトとして開発されている、全文検索システムです。Luceneを検索エンジンとして使用しており、もちろんJavaで書かれています。

ElasticSearchとSolrの比較
ものすごくざっくり言っちゃうと、ElasticSearchはRESTfulで全てがJSONです、ということ...なのかな
ElasticSearchにあるclustering機能はSolr4で採用されたSolrCloud機能でカバーされたようだし、細かいことは色々あるんだろうけど、簡易的な使い方に絞って言えばRESTfulなのはとても便利だと思います。

本題
今回はElasticSearchのCluster機能を試してみたいと思います。

2013/10/28

ElasticSearchとKuromojiで日本語全文検索してみる

北海道開発オフなどでご一緒させて頂いた方はご存知だと思いますが、元々インフラエンジニアとしてネットワーク機器の設定やサーバの構築ばかりしていた僕がプログラムを書くようになったのは、「形態素解析してマルコフ連鎖するTwitter botを作りたい!」というのがきっかけであり、日本語の分かち書きや全文検索というのは僕にとって興味深くそして好きな技術の一つです。

そこで今回はElasticSearchとそのプラグインであるelasticsearch-analysis-kuromojiについて調べてみました。

ElasticSearchとは
Apache v2ライセンスで公開されているオープンソースソフトウェアの検索エンジンです。特徴として
  • RESTfulなAPIが使える
  • InputもOutputもJSON
  • スキーマフリーなので面倒臭い定義無しにデータを突っ込める
等があります。

AlternativesでRubyのバージョンを切り替える

現在最新のAmazon Linux AMI(Amazon Linux AMI 2013.09)に初期導入されているRubyは1.8.7だ。
$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
しかしRuby 1.8.7は引退しました。互換性の問題で1.8.7なのかな?まぁとにかく新しいRubyを使いたいなぁと思って調べていたら、AMIのRelease Notes
You can switch between Ruby 1.8 and 1.9 with one command
って書いてあった。なのでやってみよう。

まずはyum全体を最新化する。
$ sudo yum check-update
$ sudo yum update
次にruby1.9をインストールする。
$ sudo yum install ruby19 
そしてalternativesでrubyというコマンドの向き先を1.9に変更する。
$ sudo alternatives --set ruby /usr/bin/ruby1.9
$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]
1.8に戻す場合。
$ sudo alternatives --set ruby /usr/bin/ruby1.8
$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
対話的にも切替が出来る。
$ sudo update-alternatives --config ruby
There are 2 programs which provide 'ruby'.
  Selection    Command
-----------------------------------------------
*+ 1           /usr/bin/ruby1.8
   2           /usr/bin/ruby1.9
Enter to keep the current selection[+], or type selection number: 2 
$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]
これは便利。なお先述のAMIのRelease Notesに
We expect Ruby 2.0 to land in our Amazon Linux AMI "preview" repository in advance of our 2014.03 release.
と書いてあったので、Ruby 2.0は2014年3月までお待ちくださいってことらしい。

2013/10/24

パピーウォーカーとして過ごした日々について

2012年8月25日から2013年9月16日までの一年間、北海道盲導犬協会よりパピーウォーカーとして委託を受け、盲導犬候補犬の飼育を行った。

ここに記録を残そうと思う。

パピーウォーカーについて
盲導犬候補犬の委託を受け飼育を行うボランティアである。盲導犬協会は全国各地に公益財団法人や社会福祉法人といった形であり、北海道の場合は「公益財団法人北海道盲導犬協会」になる。ちなみに場所は札幌市中央区、豊平川沿い。
パピーウォーカーになる条件は多くなく、室内で犬が飼えること、自家用車があること、長時間留守にしないこと、等。基本的に赤ちゃん犬なので長時間目を離すことは出来ないし屋外で飼うことも出来ない、自家用車はパピーを連れて盲導犬協会に来て研修を受ける必要があるため。
金銭的な負担もほぼ無く、餌代とおもちゃなどのみ。病気や怪我の場合は領収書を取得して盲導犬協会に提出することになる。なお、わんこの食費は一ヶ月で大体5000円くらい。家族での外食を1回控えると充分賄える。

2013/10/23

AWSを低いレイヤーから調べてみよう

AWSを低いレイヤーから調べてみようのコーナー!
今日はSNSとSQSの通信についてパケットキャプチャしてみました!

SNS
IAM roles for EC2でPowerUsersに設定したEC2から、AWS command line toolsでaws sns publishしたものをtcpdumpでキャプチャしてWiresharkに食わせました。

2013/10/22

AWS::ELBのHealth Checkについてのメモ

ELBのHealth Checkについて調べたのでメモ。


Ping Protocol
サーバの生存監視(ヘルスチェック)に使うプロトコルを指定します。HTTP、TCP、HTTPS、SSLから選択します。
HTTP、HTTPSの場合はPing Pathを設定することが出来ます。

■Ping Port
ヘルスチェックに使うポートを指定します。例えばHTTPなら80、HTTPSなら443などです(もちろん任意で指定可能です)

■Ping Path
Ping ProtocolをHTTP又はHTTPSとした場合に指定可能です。ヘルスチェックで該当PathがGET出来無いと異常と判断します。

■Response Timeout
ヘルスチェックのタイムアウト時間を秒で指定します。指定した秒だけ応答が無ければ異常と判断します。デフォルトだと5秒です。

■Health Check Interval
ヘルスチェックの間隔を分単位で指定します。デフォルトの0.5minutesは30秒です。

■Unhealty Threshold
ここで設定した回数だけヘルスチェックが失敗した場合、振り分け対象から除外します。デフォルトだと2回です。
Unhealty Thresholdが2回、Response Timeoutが5秒、Health Check Intervalが0.5minutesの場合、障害発生から切り離しまで最長30+5+30+5=70秒かかります。
[Check直後にFault]→30sec→[1st Check]→5sec→[1st Timeout]→30sec→[2nd Check]→5sec→[2nd Timeout]→[Cut Off!]
■Healthy Threshold
振り分け対象外となったインスタンスが、ここで指定した回数だけヘルスチェックに成功したら、振り分け対象に戻します。デフォルトだと10回です。
Healthy Thresholdが10回、Health Check Intervalが0.5minutesの場合、障害復旧から切り戻しまで最長300秒掛かります。
[Check直後にRestore]→30sec→[1st Check]→30sec→[2nd Check]→30sec→[3rd Check]→30sec→[4th Check]→30sec→[5th Check]→30sec→[6th Check]→30sec→[7th Check]→30sec→[8th Check]→30sec→[9th Check]→30sec→[10th Check]→[Cut On!]


2013/10/21

AWSでOSSECを導入する

前回の調査に引き続き、クラウドにおける侵入検知の一つの方式として、AWSにOSSECを導入してみました。

2013/10/18

AWSのSource/Dest. Checkについてのメモ

昨日「[AWS]VyattaでNATインスタンスを立ててみた」を試している中で、EC2のSource/Dest. Checkについて
「送受信するパケットの送信元あるいは送信先が自分であるかのチェック」
と書いたんだけど、これって結局Promiscuous modeの設定なんじゃないか?と思い、

  1. 同一Subnet内に二つのEC2を建てる
  2. 片方のEC2でtcpdumpする
  3. もう片方のEC2に通信する
という実験をしてみたが、全く通信が引っかからなかった。

何でだろうと思って調べていたところ、Amazon Web Services: Overview of Security Processesという文章を見つけた。以下抜粋。
It is not possible for a virtual instance running in promiscuous mode to receive or "sniff" traffic that is intended for a different virtual instance. While customers can place their interfaces into promiscuous mode, the hypervisor will not deliver any traffic to them that is not addressed to them. This includes two virtual instances that are owned by the same customer, even if they are located on the same physical host. 
つまり
  • EC2インスタンスでPromiscuous modeを有効にしても自分以外の通信を盗聴することは出来ない
  • 自分自身が所有する2つのEC2インスタンスを同一の物理ホスト上で動かしていても同様
ということですね。

AWSはXenをベースにカスタマイズしたハイパーバイザを採用しているそうで、XenはPromiscuous modeで動作可能(How to Configure a Promiscuous Virtual Machine in XenServer)なんだけど、クラウドプラットフォームサービスに特化したAWSでは全面禁止になっているようだ。

クラウドが主流となっていくとネットワークベースのIDS/IDPからホストベースのIDS/IDPに変わって行くのかなぁ。この辺のクラウド構成でのセキュリティ対策については今後も勉強していこう。






2013/10/17

[AWS]VyattaでNATインスタンスを立ててみた

きっかけはこの記事。

[Developers.IO]VYATTA USERS MEETING Autumn 2013(の前半)に参加しました

Vyattaは2年半前に触ったっきり情報を追ってなかったんだけど、AWSのような環境こそVyattaが活きるなぁと思い、AWSの中でNATインスタンスとして立ててみた。
なおAmazonのWebサイトにも記載してあるとおり、NATと言うよりPAT/NAPT/IP masqueradeの動作になる。

(1)準備
VPCの中にSubnetを2つ作り、1つをPublic、1つをPrivateとする。
VPCにInternet Gatewayを作成する。
PublicのRoute TableにVPC内の経路と、デフォルトゲートウェイとしてInternet Gatewayを設定する。
PrivateのRoute TableはVPC内の経路のみ持つ。

こんな感じ。

(2)Create Security Group for NAT Instance
今回はローカルネットワークからのHTTP/HTTPS通信を受け取り、外部に送信する。
なおInbound SSHをAnyにしてあるけど、本来はメンテナンスネットワークのIPアドレス帯をSourceに設定すべき。
Inbound - Local IP Network - 80(HTTP)
           - Local IP Network  - 443(HTTPS)
           - Any                    - 22(SSH)
Outbound - Any                 - 80(HTTP)
              - Any                 - 443(HTTPS)

(3)Launch NAT Instance
[Community AMIs]で「vyatta」で検索すると出てくる「Vyatta Core 6.6 R1 x86_64 rev1」を使う。なお本AMIは@j3tm0t0氏が作成しデプロイされたもので、ありがたく使わせて頂きます。なお当然ですがCommunity AMIは場合によっては悪意あるユーザーによってどんなバックドアが仕込まれてるかわかったもんじゃないので自己責任の利用となります。
VyattaはオフィシャルにVyatta Network OS AMI(有償)もリリースしています。

(4)Change Source/Dest. Check
NAT Instance設定のキモ。EC2ではデフォルトで実行されている「送受信するパケットの送信元あるいは送信先が自分であるかのチェック」を無効にすることで、他ノードからのあるいは他ノードへのIPパケットが自分を経由して通信することを可能にする。
設定場所はここ。

(5)最低限のアクセス認証設定
デフォルトだとUser:vyatta、Password:vyattaで、かつパスワード認証でログイン出来てしまうため、このまま外部から接続出来るようにするのは危険。まずは同一ネットワーク内の別のEC2からSCPで公開鍵を送りつけた後にSSHで接続し、最低限のアクセス認証設定だけ行う。
$ configure
# loadkey /home/vyatta/.ssh/"公開鍵"    ← 公開鍵をLoadする
# set service ssh disable-password-authentication   ← パスワード認証をDisableにする
# commit
# save

(6)Associate Elastic IP for NAT Instance
作成したNAT InstanceにElastic IPを割り当る。これが外部のアクセス先から見えるグローバルIPアドレスになる。

(7)Configure NAT Instance
まずは基本的なホスト名、ドメイン名、タイムゾーン、NTPサーバの設定。
$ configure
# set system host-name "ホスト名" 
# set system domain-name "ドメイン名" 
# set system time-zone Asia/Tokyo
# set system ntp server "NTPサーバ"
# commit

次にキモとなるNATの設定。同一VPCからの通信をmasqueradeでOutboundする。
# set nat source rule 10 outbound-interface eth0
# set nat source rule 10 source address 172.31.0.0/16
# set nat source rule 10 translation address masquerade
# commit  
# save

(8)Operation verification
PrivateのSubnetのRoute Tableに、デフォルトゲートウェイとしてNAT Boxを設定する。
Privateに属したEC2から、NAT Instanceを経由して外部通信してみる。

$ w3m http://www.google.com/


はいOK。

(9)感想
今回はNATインスタンスとして構築したけれど、AWSでだとVPN BOXとして使われることが多いようだ。次回はその辺にチャレンジしたい。



オープンソース・ソフトウェアルータVyatta入門 ――実践ルーティングから仮想化まで (Software Design plus)オープンソース・ソフトウェアルータVyatta入門 ――実践ルーティングから仮想化まで (Software Design plus)
近藤邦昭,松本直人,浅間正和,大久保修一,日本Vyattaユーザー会

技術評論社
売り上げランキング : 19102

Amazonで詳しく見る by AZlink

「妻は俺の嫁」を電子書籍にして出版してみた

Kindle paperwhite 3Gを買ったのと、Kindleダイレクト・パブリッシング(通称KDP)での出版が非常にお手軽になったという話を聞いたのをきっかけに、「僕もちょっと電子書籍作ってみたい」と思い、

「妻は俺の嫁」を電子書籍にして出版してみた。

妻は俺の嫁妻は俺の嫁


smokeymonkey

Amazonで詳しく見る by AZlink

以下、これの作り方。

(1)原稿を作る
原稿はまずePubファイルで作成し、その後KDPで出版可能なMobi形式に変換することになる。
ePubエディタは抜群に知名度が高いSigilを使用した。なおSigilはGPLv3ライセンスで公開されておりgithubでソースが公開されている。このアプリケーションはマルチプラットフォーム対応になっており、Windows、Mac、Linuxで実行可能。素晴らしい。
ePubの実体はXHTML+XMLで構成されているため、ePubエディタ上もワープロソフトのように文章を入力しつつ、HTMLやCSSをガシガシ使って体裁を整えるイメージ。なお表紙だけは画像取り込みで行った。
メニューなども日本語化されているし、CSSで縦書き構成にも出来るし、とても簡単に作れるなぁという感想。デザイナーの人でいれば綺麗な製版が出来るのだと思う。

(2)原稿を確認する
ePubエディタで作成した原稿が実際にKindle上でどう見えるのかを確認するには、Amazon謹製のKindle Previewerが使用できる。このソフトウェアはビューワだけでなくKindleGenというMobi formatジェネレータが同梱されており、ePub形式のファイルを読み込むと自動的にMobi形式に変換して表示してくれる。
力入ってるなぁ。こういうツール類がオフィシャルに用意されてるのは強み。

(3)原稿を入稿する
前述のKindle Previewerで作成したMobi形式のファイルがそのまま入稿できる。なおePub形式でアップロードすると自動的にMobi形式に変換してくれるそうだが、今回はエラーになったため、ローカル環境でMobi形式に変換してからアップロードするほうが確実のようだ。

(4)ロイヤリティについて
今回は別に利益を得たいわけではないので適当に一番安いのを選んだんだけど、本当に利益を考えて出版するとなると、色々と面倒臭いことがあるようだ。
まず書籍の価格に対するロイヤリティは35%と70%から選択できる。70%の場合ファイルサイズによって「配信コスト」が引かれる。Amazon.co.jpの場合\1/MB。ファイルサイズが大きくなればなるほどコストが高くなるので、書籍のファイルサイズを可能な限り小さくする、といったテクニックが必要になるようだ。
次に支払いの問題。KDPのロイヤリティはAmazonUSから支払われるため、小切手か銀行振込になる。小切手の場合$100を越えると支払われる。ただし小切手は外貨建てで、日本円に換金するには銀行で手数料を払う必要がある。では銀行振込はどうかというと、1000円単位で自動的に振込してくれるが、1回の振込で2500円の手数料が掛かる。なんだそれ。
今回の場合は一番面倒くさく無さそうな30%のロイヤリティオプションで小切手支払いを設定した。

(5)入稿から出版まで
入稿後は手動チェックが入るので出版まで最大48時間程度掛かるそうなんだけど、コレみたいな小さいのは6時間で完了した。早い。

(6)全体的な感想
まず、出版への敷居が非常に低くなったと思う。電子書籍なんて無かった時代は自分でDTPして製本会社を探して販売してくれるところの伝手を辿って結構大きな自費出費があったり、あるいは同人誌即売会のようなイベントで手渡し販売するような状況だったんだろうけど、今は手間だけ掛ければほぼノーコストで出版まで出来る。もちろんちゃんとデザインや広告、商流まで考えると費用はかかるんだろうけど、個人が趣味で細々とやってる分にはすごくお手軽。

この電子書籍の潮流の中で、小説でも詩でも何でも、新しい才能、新しい文化が生まれてくると面白いなぁ。



Kindle Paperwhite 3G (2012年モデル)Kindle Paperwhite 3G (2012年モデル)

2013/10/14

Windows 7でVagrant + Sahara

今更感はあるけれど、Windows 7のノートPCにVagrantをセットアップしてみた。

(1)VirtualBoxをインストールする。
https://www.virtualbox.org/wiki/DownloadsからVirtualBox 4.2.18 for Windows hostsをダウンロードしインストール。


(2)Vagrantをインストールする。
http://downloads.vagrantup.com/からVagrant_1.3.4.msiをダウンロードしインストール。


(3)CentOSをインストールしたVagrantBoxを作成する。
> vagrant box add centos https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box
> vagrant init centos
> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period. This can
mean a number of things.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

怒られました。

Windows7にVirtualBoxとVagrantをインストールしたメモ
仮想化支援機能(VT-x/AMD-V)を有効化できません
を参考にしたところ、64bitのイメージを入れようとしているのに、仮想化支援機能(VT-x/AMD-V)が有効になっていなくてエラーで止まっているようだ。

BIOSで「Intel(R) Virtualization Technology」と「Intel(R) VT-d Feature」をEnabledにしてもう一度。
> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] The guest additions on this VM do not match the installed version of
VirtualBox! In most cases this is fine, but in rare cases it can
cause things such as shared folders to not work properly. If you see
shared folder errors, please update the guest additions within the
virtual machine and reload your VM.

Guest Additions Version: 4.1.18
VirtualBox Version: 4.2
[default] Mounting shared folders...
[default] -- /vagrant

OK。


(4)起動したVagrantBoxに接続してみる。
> vagrant ssh
`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use the PuTTY SSH client with the following
authentication information shown below:

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/ユーザー/.vagrant.d/insecure_private_key

怒られました。なので上記の通りの情報でTeraTermから接続→OK。


(5)Saharaプラグインをインストールする。
> vagrant plugin install sahara
Installing the 'sahara' plugin. This can take a few minutes...
Installed the plugin 'sahara (0.0.15)'!


(6)Saharaプラグインを使ってみる。
# sandboxモードをON。
> vagrant sandbox on

# sandboxモードONにしたタイミングまでRollback。
> vagrant sandbox rollback

# sandboxモードONにしたタイミングからここまでの変更をcommit。
> vagrant sandbox commit



(7)感想
Saharaとかchef-soloとかと組み合わせることで開発環境をサクサク作れるようにしておく、というのはとても便利ですね。チーム開発で環境を横並びに揃えておくにも便利だし、イメージ展開と違って常に新しいバージョンを使えるのもメリットだと思いました。

Kindle Paperwhite 3G (2012年モデル)を買った

題記の通り。東京出張で丸一日空いたので朝から赤羽で飲んだくれて秋葉原のソフマップで触ったら良さそうでちょうどAmazonで旧モデル3000円オフ投売りだったのでポチった。

Kindle Paperwhite 3G (2012年モデル)Kindle Paperwhite 3G (2012年モデル)


Amazon.co.jp
売り上げランキング : 43

Amazonで詳しく見る by AZlink
重量は思ったより軽く片手で持つのにちょうど良い。本を1冊2冊持ち歩くことを考えると確実にこっちのほうが軽い。
前面を覆うカバーもあるけど、カバーを付けちゃうと「手軽に取り出して電源を入れたら使える」という優位性が失われると思うので付けていない。またこのスクリーンはちょっとザラザラしてるんだけど、その触感がとても良いので、保護フィルムも付けていない。
手軽さこそが命の製品だと思うので、付属品一切無しのほうが使いやすいと思う。

e-linksディスプレイは「紙に印刷された活字に慣れてると気になるかなぁ」と思っていたんだけど、ほとんど気にならない。スリープから復帰してパスワード入力するあたりがちょっとモタつくけど、画面を開いちゃったあとはサクサクページもめくれるし快適。

難点があるとすれば、電子書籍自体のラインナップが(僕にとっては)満足できるほどじゃない、というのと、Kindle自体から購入するときの検索UIの使いづらさかなぁ。購入自体は「PCのWebブラウザから買ってMy Kindleに保存→Kindle端末に同期」という手が使えるから良いとして、主にSFばかり読む僕が読みたい本がそれほど多くないというのがちょっと寂しい。今後の充実に期待したいところ。

とりあえず恩田陸さんの「ドミノ」を買ってみた。しばらく読み倒してみようと思う。

ドミノ (角川文庫)ドミノ (角川文庫)
恩田 陸

KADOKAWA / 角川書店
売り上げランキング : 480

Amazonで詳しく見る by AZlink

2013/10/12

AWS::ELBについてのメモ

先日、とある識者の方とお話しているときに、マルチAZ構成に組み込まれたELBが、複数のグローバルIPアドレスを所持していることを知りました。

以下、digの結果。

myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 60 IN SOA ns-944.amazon.com. root.amazon.com. 1381560172 3600 900 7776000 60
myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 600 IN NS ns-944.amazon.com.
myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 60 IN A 50.112.133.1XX
myelb-15XXXXXXXX.us-west-2.elb.amazonaws.com. 60 IN A 54.200.96.1XX


ELB & CloudWatch & AutoScaling - AWSマイスターシリーズにも書いてありました。

・マルチAZを用いていると、2つ以上のIPアドレスを持つ(最大8個まで)

つまりELB自体はAZ上にあるイメージで、AZが丸ごと落ちたときのために、それぞれのAZの範囲内のグローバルIPアドレスを持っている、ということなんですね。なおELBは「トラフィックに併せて自動的にキャパシティを増減」し、同時に数も増減するため、このIPアドレス数は=構成するAZの数では無く、最低IPアドレス数が構成するAZの数になるようです。

このAレコードの返却についてはAWSのDNSサーバが自動的にラウンドロビンしてくれているとのこと。この辺がELBのFQDNのTTLとminimumが60秒になっている理由のようです。今時のブロードバンド(死語か...)だと大した負荷じゃないのでしょうが、「TTLを60秒にして良いのはサーバ移設かISP移設のときだけ」のような教育をされてきた僕みたいなおっさんはちょっとドキドキします。

という、メモ。



Amazon Web Services クラウドデザインパターン実装ガイドAmazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink

2013/10/06

「妻は俺の嫁 4」をトゥギャってみた

妻は俺の嫁 4


■過去の経緯


Twitterという「媒体」に言葉を放つようになって7年が経ちました。その間に日々発生した妻との出来事ややり取りをちまちまとまとめていたのがコレです。
見出しに「愛妻家ってのは妻を愛してる人であって妻に愛されている人とは限らない」って書いたけど、僕は「愛妻家」という表現が好きじゃないです。夫が妻を愛しているのなんて当たり前じゃない。妻に愛されているなら素晴らしいことだと思う。僕?ま、まぁ...


さて、妻と出会って15年になるわけですが、恋人から夫婦に代わり、父母の立場になり、そして10年以上一緒に暮らしていると、良い意味で空気のようになります。あっても気にならないけど無いと死ぬ。だからやり取りも直接的な愛情表現が減っていく分、相手のツボを心得た返事が出来るようになり、毎日の会話がどんどん楽しくなるんですよね。それでも僕はめげずに愛してる愛してる言い続けてるんですけど!
こうやって毎日の妻との生活が楽しいと思えるのはほぼ100%妻のおかげです。ありがとう妻様。

これはただのログでしか無いし、誰かにとって役立つようなものでは無いけれど、こんな夫婦もいるんだなぁくらいの気持ちで見守って頂けると幸甚です。




中国嫁日記 一中国嫁日記 一
井上 純一

エンターブレイン

Amazonで詳しく見る by AZlink

2013/10/05

CloudInitを使ってみた

Amazon Linuxで何気なくchkconfig --listしたら、見たこと無いやつがあった。

$ chkconfig --list
cloud-init      0:off   1:off   2:on    3:on    4:on    5:on    6:off
cloud-init-user-scripts 0:off   1:off   2:on    3:on    4:on    5:on    6:off

cloud-init?なんだそれ?

CloudInit[cloud-init is the Ubuntu package that handles early initialization of a cloud instance.]とのことで、元々Ubuntuのパッケージだったそうなんだけど、要はEC2インスタンスの初期起動時のお決まりのセットアップをスクリプト化しちゃうものらしい。なるほど便利そう。

CloudInitのスクリプトは、EC2インスタンスをLaunchするときの以下の画面、User Data枠に記載する。


例えばこんな感じ。
パッケージ全部をyum upgradeして、指定したパッケージを追加で入れて、かつコマンド実行する。今回はAWS-SDKがセットアップされた状態にしたかった。

#cloud-config
repo_upgrade: all
packages:
- ruby-devel
- rubygems
- gcc
- make
- libxml2-devel
- libxslt-devel
runcmd:
- [gem, install, nokogiri]
- [gem, install, aws-sdk]
- [sed, -i, 's/en_US/ja_JP/', /etc/sysconfig/i18n]
- [cp, /usr/share/zoneinfo/Asia/Tokyo, /etc/localtime]


EC2インスタンス起動後、ログを確認し、エラーが無いことを確認する。
# cat /var/log/cloud-init.log

どれどれ...

$ gem list --local

*** LOCAL GEMS ***
aws-sdk (1.20.0)
json (1.8.0)
mini_portile (0.5.1)
nokogiri (1.5.10)
uuidtools (2.1.4)

おおーちゃんと最初からAWS-ASKがセットアップ済みだー!これは便利!
大量に同じノードを展開したいときはオリジナルAMI作ってばら撒くほうが良いんだろうけど、いつも必ず最初にやるようなことはCloudInitにお任せしちゃうと楽だね!

2013/10/04

AWS Command Line Interfaceを使ってみた

関連:初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し
関連:AWS SDKを使ってSNSにCPU使用率を送りつける

前回はAWS SDK for rubyを使ってSNSとSQSを操作(SNSにメッセージを送り、SQSから取り出す)を行っていたけれど、2013年9月3日に正式リリースされたAWS Command Line Interfaceを使えばもっと簡単に出来るんじゃないか?と思い、やってみた。


(1)AWS Command Line InterfaceはPythonのeasy_installでインストールする。
$ sudo yum -y install python-setuptools
 →Amazon Linuxには最初から入ってました
$ sudo easy_install awscli

(2)configファイルを作成する。
$ mkdir ~/.aws/
$ chmod 700 =~/.aws/
$ vi ~/.aws/config
---
[default]
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
region = リージョン
---
$ chmod 600 ~/.aws/config

(3)SNS TopicへPublishする。
$ aws sns publish --topic-arn arn:aws:sns:リージョン:1234567890:cpu-alert --message "`mpstat -P ALL`" --subject "alert"

(4)SQSからgetする。
$ aws sqs receive-message --queue-url https://sqs.リージョン.amazonaws.com/1234567890/alert

60秒おきにgetしたかったら while true; do コマンド; sleep 60; done とかしとけばいい。


簡単じゃないか...AWS SDKを使ってScriptに組み込むのとコマンドラインから操作するのは適材適所だろうけどけど、どっちも便利だなぁ。

Amazon Web Services クラウドデザインパターン実装ガイドAmazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink

2013/10/03

AWS SDKを使ってSNSにCPU使用率を送りつける

初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し」ではEC2のDetailed Monitringを使って「対象EC2のCPU使用率を1分に1回SNSに通知→SQSに分配→監視サーバからAWS SDKを使って取り出し」していたんだけど、普通にAWS-SDKを使って通知もしちゃえば良いことに気づき、Script書いてみた。

 (1)CPU使用率はmpstatを使って取得したいので、sysstatをinstallする。
 $ sudo yum -y install sysstat

 (2)通知スクリプト。mpstatで取得したCPU使用率をAWS-SDKを使ってSNSに送りつける。
  (※追記:IAM Roke for EC2を設定してればアクセスキーとシークレットキーはいらない)

#!/usr/bin/ruby

require 'rubygems'
require 'aws-sdk'

access_key = 'アクセスキー'
secret_key = 'シークレットキー'
sns_endpoint = 'sns.xxxxx.amazonaws.com'
topic_arn = 'arn:aws:sns:xxxxx:1234567890:cpu-alert'

AWS.config(:access_key_id => access_key,
           :secret_access_key => secret_key,
           :sns_endpoint => sns_endpoint)

topic = AWS::SNS::Topic.new(topic_arn)
message = `mpstat -P ALL`

while true
  topic.publish(message,'cpu usage.')
  sleep 60
end

(3)実行すると1分に1回mpstatの結果をSNSに送りつけるので、監視サーバ側でSQSから取り出せばOK。




Amazon Web Services クラウドデザインパターン実装ガイドAmazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink

Amazon CloudWatch Monitoring Scripts for Linuxを使う

(0)ACMS for Linuxを使いたいEC2をIAM role for EC2 PowerUsersにしておく。
(1)インストールする。
$ wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip
$ unzip CloudWatchMonitoringScripts-v1.1.0.zip
$ rm CloudWatchMonitoringScripts-v1.1.0.zip
$ cd aws-scripts-mon
(2)getの動作確認。
$ ./mon-get-instance-stats.pl
---
Instance i-ABCDEFG statistics for the last 1 hour.

CPU Utilization
    Average: 0.27%, Minimum: 0.00%, Maximum: 3.39%

Memory Utilization
    Average: N/A, Minimum: N/A, Maximum: N/A

Swap Utilization
    Average: N/A, Minimum: N/A, Maximum: N/A
---
(3)putの動作確認。
$ ./mon-put-instance-data.pl --mem-util --verify --verbose
---
MemoryUtilization: 8.40000262952031 (Percent)
No credential methods are specified. Trying default IAM role.
Using IAM role
---
EC2 PowerUsersのRoleを使ってることが確認できた。
(4)実際にSendしてみる。
$ ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail
(5)AWS consoleのCloudWatchから確認する。
 cronで回してCloudWatchのグラフで確認して...って感じかな。
 MRTG的な感じ。

2013/10/02

初めてのAWSメモ(2):CloudWatchからSNS→SQS、AWS SDK for RubyでQueue取り出し

■やりたいこと

■参考にしたURL
AWS CloudWatch と Alarm を試してみる
SQSってなんじゃ?(AWSコンソールにSQS登場)
Rubyを使ってAmazon SNSとSQSを操作する:fanoutパターン
AWS SDK for RubyでSQSを操作する

■やったこと
1.SQSの設定
  SNSから通知するためのSQSを、先に作っておく。
  -- SQS NavigationからCreate new Queueをクリック
   -- 適当に名前付けてQueueを作っておく
   -- Detail画面からARNをメモしておく
   -- PermissionからAdd a Permissionで追加
    -- Allow Everybody Sendmessage(送信元をSNSに縛れるか?確認)

2.SNSの設定
(1)SNS NavigationからSNSのTopicを作る
  -- Create New Topic
   -- Nameを付与して作る
(2)作成したTopicに対してSubscriptionを設定する
  -- Create Subscription
   -- ProtocolはEmail、Endpointはメールアドレス
   -- 登録したメール宛に認証メールが来るので対応する
  -- もいっちょCreate Subscription
   -- ProtocolはAmazon SQS、Endpointは1.で作ったSQSのARN。
      (後で気づいたんだけど、Queue側からSubscribe Queue to SNS Topicで紐つけが出来た)
  -- TopicからPublish to this Topicでテストメッセージが送信可能。

3.CPU監視される側のEC2立ち上げ
(1)EC2からSNSにアクセスするために、IAM roleの設定を行う。
  なお、Launch済のEC2のIAM Roleを変更することは出来ないみたい。
  -- IAM Dashboard
   -- Roles -> Create New Role
    -- Amazon EC2に対しPower Usersを付与。
(2)IAM roleを設定したEC2を立ち上げる。
  -- EC2 Dashboard
   -- Instances -> Launch New Instance
    -- ほぼDefault、IAM Roleだけ(1)で作ったRoleを設定する。
  -- Elastic IPsでGlobal IPも振っておく。
(3)CloudWatchの設定。今回は「1分に1回CPU使用率を通知」したいんだけど、
  基本モニタリングでは5分に1回しか出来ないため、Deailed Monitoringを使う。
  追加料金かかります。
  -- EC2 Dashboardで対象のEC2を選択、Monitorningタブを表示
   -- Enable Detailed Monitoringをクリック
   -- Create AlermからAverage of CPU Utilizationを1分単位で通知にする。
    -- 負荷はテストなので10%以上に。
    -- send a notification toは1.で作成したSNSを指定。
(4)試しに負荷を上げてみる。yum installとか。


4.CPU監視する側のEC2立ち上げ
(1)EC2 DashboardからLaunch EC2でもう1台立ち上げる。
 IAM Roleの設定だけ忘れずに。
(2)このEC2からSQSをPollingして、Queueがあったらコンソールに表示したい。
(3)AWS SDK for Rubyのセットアップ
  $ sudo yum install ruby-devel rubygems gcc make libxml2-devel libxslt-devel
  $ sudo gem install aws-sdk
(4)AWS SDK for Ruby経由でSQSからMessageを拾って表示。一度表示したらQueueから削除。
 Access_keyとSecret_keyはアカウントオプションのSecurityから取得できる。
  (※追記:IAM Roke for EC2を設定してればアクセスキーとシークレットキーはいらない)

  $ vi get_sqs.rb

#!/usr/bin/ruby

require 'rubygems'
require 'aws-sdk'

access_key = 'アクセスキー'
secret_key = 'シークレットキー'
sss_endpoint = 'SQSのURI'
queue_url = 'queueのURL'
queue_name = 'queueの名前'

sqs = AWS::SQS.new(:access_key_id => access_key,
                   :secret_access_key => secret_key,
                   :sss_endpoint => sss_endpoint,
                   :queue_url => queue_url  ).client

while true
  message = sqs.receive_message(:queue_url => queue_url)[:messages][0]
  if message
    puts message[:body]
    sqs.delete_message(:queue_url => queue_url, :receipt_handle => message[:receipt_handle])
    puts "Waiting"
  end
  sleep 5
end

(5)$ ruby ./get_sqs.rb で実行。
(6)SNSからPublish to this Topicsでテストメッセージを送って、コンソールにMessageが表示されることを確認。
(7)監視される側のサーバでyumとか使って負荷を上げて、SNS→SQS→コンソールにメッセージが表示されることを確認する。

■感想
・CloudWatchを使った監視はとてもお手軽。5分より短い間隔で監視したいほどシビアな案件なんてそんなに無いので、基本モニタリング充分使えると思う。
・SQSとAWS SDKを使ってイベント駆動のアプリ作るのもなかなか面白そう。
・AWS SDKはもっといろんなことできそうなのでもっと調べたい。


Amazon Web Services クラウドデザインパターン実装ガイドAmazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink

2013/10/01

初めてのAWSメモ:VPCでELBでMultiAZのRDS

■やりたいこと

■参考にしたURL。
Amazon VPCを使ったミニマム構成のサーバ環境を構築する
Amazon RDSで仮想DBインスタンスを作成する
RDSインスタンスにMulti-AZの設定をする

■やったこと
1.Network周りの設定
(1)Amazon無料枠で申し込みする。
(2)AWS Management Consoleを起動。
(3)VPC DashboardからVPCを作る。
  -- Your VPCs
   -- Create VPC
    -- CIDR Block = 10.0.0.0/16
    -- Tenancy = Default
(4)SubnetからAZ1にPublic(10.0.1.0/25)とPrivate(10.0.1.128/25)を作る。
 またAZ2にPublic(10.0.2.0/25)とPrivate(10.0.2.128/25)を作る。
(5)Internet GatewaysからInternet Gatewayを作成する。
  -- Internet Gateways
   -- Create Internet Gateway
    -- Attach to VPC
     -- VPCをアタッチ
(6)Route Tablesを設定する。AZ1-PrivateとAZ2-PrivateはLocalのみのTableを使う。
 AZ1-PublicとAZ2-PublicはLocalとDefault Gateway(=Internet Gateway)を設定する。
  -- Route Tables
   -- Create Route Table
    -- 新しいRouteを作成し、Localと0.0.0.0/0を設定する。
  -- Subnets
   -- Public
    -- 新規に作成した0.0.0.0/0のRouteを持つRoute TableにReplaceする。
   -- Private
    -- 0.0.0.0/0のRouteを持たないRoute TableにReplaceする。

2.RDS(DBサーバ)の設定
(1)RDS Dashboardの
  -- Subnet Groups
   -- Create DB Subnet Group
    -- AZ1-PrivateとAZ2-PrivateをGroupingする。
(2)RDSを構築する。
  -- Instances
   -- Launch DB Instance
    -- MySQLを選択
     -- Do you production...でNoを選択する
     -- Multi-AZ Deployment=Yesで作成する
     -- Additional ConfigでVPCとDB Subnet Groupを選択する
     -- Management OptionsはDefaultで。
(3)Security Groupを設定する。
  -- 対象RDSのSecurity Group設定箇所をクリックする。
   -- Security Groups画面が開くのでCreate Security Group
    -- [db-servers]という名前で、Port=MySQL、Source=10.0.0.0/16のルールを作成
  -- RDS画面に戻り、対象RDSを選択してModifyをクリックする。
   -- Security Groupをdb-serversに変更する。
(4)MultiAZの動作確認
  Instances画面から対象Instanceをクリックして、Availability Zoneを確認する。
  Instance ActionからRebootする。「Reboot With Failover?」をチェックする。
  Statusがrebootingからavailableになったことを確認して、Availabillity Zoneが切り替わったことを確認する。

3.EC2(Webサーバ)
(1)EC2を構築する。Web1とWeb2の2台構築する。
  -- EC2 Dashboard
   -- Instances
    -- Classic Wizzard
     -- Amazon Linux AMIを指定
      -- AZ1-Public or AZ2-Publicを指定
      -- あとはDefaultで
      -- Security Gruop では22と80をFrom anyであける(後で80はSLBからのみに絞れると思う)
(2)EC2にElastic IPを付与する
  -- Elastic IPs
   -- Associate Address
    -- Web1、Web2両方ともに設定する。
     →たぶんGIP1つでもNATすることで外部通信可能だと思うんだけど調査していない。
(3)EC2にSSHアクセス。ユーザーはec2-user。
(4)Web1からDBSにmysqlコマンドでアクセスしてみる。
   sudo yum -y install mysql
   mysql -h dbs.xxxxxxx.xxxxxxx.rds.amazonaws.com -u user -p
(5)httpdをインストールする。Web1、Web2両方で。
  $ sudo yum -y install httpd
  $ sudo chkconfig httpd on
  $ sudo service httpd start
(6)Elastic IPに外部からWebで接続して、接続できることを確認。
(7)後で作るELBのために、簡単なindex.htmlを作っておく
  $ vi /var/www/html/index.html
   -- Web1とWeb2でどちらにアクセスしているかわかりやすい内容にしておく。

4.ELBの構築
(1)EC2 DashboardのLoad BalancersからELBを作る
  -- VPCを指定、Portは80のみ、Internalではないのでチェック無し
  -- Health checkはデフォルトのまま。
  -- Add EC2 InstancesではAZ1-PublicとAZ2-Publicを選択
   -- Create a new Security GruopでELB用のSecurity Groupを作成する。Port 80 from anyのみ。
    -- Manually Add Instances... でWeb1とWeb2をSelectする。
  -- Createしたら、2つのECがIn Servicesになっていることを確認する。
(2)ブラウザからELBのHostnameにアクセスして、Web1とWeb2のHTTPDをそれぞれ落として、
 振り分けされることを確認する。

■感想
・立ち上げるだけならとにかく楽。難しい設定を考えなくても動く。
・MultiAZのあたりは同期のタイミングとかcommitとかLockのタイミングとかその辺調べるともっと面白そう。
・ELBも振り分けまでしかしてないけど、セッションの振り分けとか管理のあたりをもっと知りたい。
・Security Groupの設定は、物理みたいに経路とフィルタのセットで考えるんじゃなくて、1つの大きなFirewallで制御しているような感じ?この辺の感覚に慣れるのが難しそう。もっと細かく制御できそうな気がするんだけどな。
・とにかく最近新しいことにチャレンジする機会が全く無くて悶々と死んだように生きていたけど、こういうことやるのめちゃくちゃ楽しい。幸せ。
・まだ届いてないけどこの本買いました。

Amazon Web Services クラウドデザインパターン実装ガイドAmazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康

日経BP社
売り上げランキング : 17216

Amazonで詳しく見る by AZlink