AWSクラウドデザインパターン(CDP) 2013年ふりかえり
メリークリスマス!今日の投稿はCDP Advent Calendar 2013 on Zusaarの 25日目 のエントリーです。
2013年も残すところあとわずかとなりました。本記事では、CDP関係イベントの2013年のふりかえりをしたいと思います。
- 2月: CDP本の実装編が発売
こちら前回の設計編に続けて実装編が発売されました。実際の設計手順まで書いてあるので、どちらかということこちらの本のほうが好評ですねw - 3/15: JAWS DaysでCDPハンズオン
東京での年に一度のJAWSのお祭り、JAWS Daysでハンズオンを実施しました。全て満席御礼で1日中缶詰でNinja of Threeで講師。ソリューションアーキテクト達も沢山助けてくれました。この場を借りて感謝です。 - 5/17 cloudpack night #6 「CDP2.0への野望」講演
CDP2.0にむけて新しいCDPの紹介を行いました。AWSの新機能、新サービスのリリースが今年だけでも250以上あったのですが、それにあわせてCDP自体も進化をしてきています。@c9katayamaも初日のCDP Advent Calendarで総点検を行ってくれています。
- 6/6: AWS Summit Tokyoで「AWSクラウドデザインパターンの実装ノウハウ」講演(資料)
このセッションは500人くらいの超満員で大変盛り上がりましたね。来年も、AWS SummitでCDPセッションはまたやりたいと思います!
- 7/19 CDP night開催 (@yoshidashingoまとめ記事)
CDP特化型の勉強会であるCDP nightを開催しました。ノリと勢いで、参加者全員で好きなCDPを選挙するCDP総選挙を実施しましたが、1位は「Cloud DIパターン」、2位が「DB Replicationパターン」、3位が「Scale Outパターン」となりある程度予想通りの結果となりました。
また沢山の方に新パターンをご発表頂きました。ありがとうございました! - 8月: CDP本設計編 韓国語翻訳版が発売
こちら我々も知らないところで韓国語版の話がとんとんと進んでおり、いつの間にか発売されましたね。英語版wikiに続いて、CDPの愛好家が世界にひろがっていくのは嬉しいことです。
- 8/23: cloudpack night #7 「CDP2.0」
CDP2.0のアップデートを行いました。沢山の新しいCDPが紹介されています。
- 9/28: JAWS Festa KansaiでCDP道場
@kawaji_scratch、 @tomyakunさんの強力な後押しもあり、JAWS Festa KansaiでCDP道場を実施しました。基本的にはハンズオンで、最終セッションではディスカッション形式でCDPを使ってアーキテクティングするというもの。京セラドームの上の空中回廊での独特の空気の中でのセッションが非常に楽しかったですね。 - 11月: CDP本実装編 韓国語翻訳版が発売
こちらもいつの間にか発売w ありがたいことです。 - 11/14: re:Invent 2013で@kaz_gotoが日本の事例を講演
私もサポート役として、事例の中で使われているCDPを解説しました。 - 12/2: ITアーキテクトカンファレンスで@suz_lab 講演
- 12/19: JEITA workshopで@KenTamagawa 講演
こうして見てみるとCDPという切り口だけでも2013年、沢山のことがありました。気がつくと日本発信のクラウドデザインパターンも、英語、韓国語と世界にひろがってきました。クラウドのインフラストラクチャはまだまだ進化を続けると思いますので、それにあわせてCDP自体も、着実にたゆむこと無く進化させ続けていきたいと思います。そういう意味では今年はCDP nightが1回しか出来なかったので、来年はもう少し定期的に実施できるようスケジュールしていきたいと思います。
最後になりましたが、新クラウドデザインパターンを多数提案頂いた、@tottokug、@winebarrel、@j3tm0t0、@memorycraft、@oko_chang、@ueki_kazuki、@thekentiest、@imai_factoryその他多数のアーキテクトの皆様、本当にありがとうございました!皆様のおかげでCDPは少しずつ成長して、多くの皆様に気付きやアイデアを与えることが出来ていると思います。またCDP協議会の@yoshidashingo, @bond_honey, @suz_lab, @c9katayama、今年もお世話になりました。この場を借りて御礼を申し上げます。
来年も皆様にとって良いことがありますように。メリークリスマス!
@KenTamagawa
Amazon Workspacesを触ってみた
AWS Advent Calendar 2013 の 6日目 のエントリーです。
さて先日のAWS re:Invent、沢山の新サービス発表、新機能の発表があり、非常に盛り上がりました。日本からも沢山のお客様に参加頂きまして誠にありがとうございます!
数ある発表の中でも、ひときわ注目を集めたのが、クラウド上でデスクトップコンピューティング(いわゆる、仮想デスクトップサービス)を実現するAmazon WorkSpacesです。初期費用のかからない従量課金モデルで(月額$35から)、簡単に管理が可能で、PC(Windows, Mac)のみならず、iPhone, iPad, Android, Kindle Fireなど多種多様なクライアントデバイスから用いることができます。現在は、限定プレビューということで申し込みを頂いたお客様に順次提供させて頂く形をとっておりますが、近いうちに皆様も使えるようになるでしょう。
さて、今回はこのWorkspacesを実際に触ってみたところを動画におさめましたので、楽しみにして頂いている皆様、是非ご覧ください。
- この仮想デスクトップは、米国西オレゴンリージョンで走らせています
- 私のMac Book Airから、スタバのWifiで接続しています
- その環境下でもスムーズに動いているのがお分かり頂けると思います
- YoutubeのHD表示でご覧ください
- 2分弱の短い動画です!
AWS Game Day Tokyo 2013 開催報告 - Part 2
引き続き、Game Dayの報告です。AWSを用いたクラウド版、ほこxたて対決!前回下記のようにPart 1と書いてしまったのでPart 2を書かざるをえない感じですw 疲れMAXですが、なんとか書き上げます!
AWS Game Day Tokyo 2013 開催報告 - Part 1
準備
さて、前回の記事で、3人ずつのチームを作った後は(今回は18チームできました)、戦うことになるチームの組み合わせを決めて、まず戦う準備を行いました。
- まず、指定した手順を参考に、AWSの幾つかのサービスを用いてバッチ処理を行うシステムを作りました。SQSのキューに画像のURLリストを貼付けるとワーカーであるEC2インスタンス群が合成して1枚の写真を作ってS3に吐き出してくれる画像処理バッチクラスターです。
- 次に、Power User権限を持つIAMユーザー(つまり、AWSのインフラを好きなように設定変更、削除、追加できる)を作成し、対戦相手を攻撃できるようにしました。
攻撃と修復
準備が整うと、制限時間の範囲で、お互いに対戦相手のクラスターが機能しなくなるように攻撃します。前回の記事ではこの攻撃がはじまったところでした。現場では、「いつ攻撃するの? by 玉川」「いまでしょ! by マイルズ」のかけ声で攻撃開始となりましたw すべってませんよ。
相手のインフラを好きなように30分間攻撃します。しかし、単純に全てのリソースを消したって面白くありません。相手が気づかないような、それでいてシステムとしては致命的、かつ修復が難しいか時間がかかるような攻撃をしかけます。皆さん、相手に対して嫌らしい攻撃をするのが本当に楽しそうでした。Security Groupの設定をこっそりと変えてアクセスできなくする、サイズの大きい画像をキューに大量に放り込む、SQSのキューのVisivility Timeoutを変える、EC2のサーバーの名前を「アホ」と変えて精神的ダメージを与える、などクリエイティブかつ陰湿な攻撃が沢山見られました。
攻撃が終わると、先ほど作ったIAMユーザーを使用できないようにします。そして、今度は30分間で修復を行います。システムへの攻撃を検知して、稼働状況に戻していきます。会場からは、こんな攻撃があったかと唸るような声がそこかしこから聞こえてきました。
下は、「あれおかしいな、どこも変わっていない、と唸る@sato_shi
どのように修復していったかも全て記録が取られていきました。
修復時間が終わると、どこからともなく拍手がわき起こりました。無事に修復を終えてシステムが再稼働したチームと、修復しきれなかったチーム、明暗が分かれました。修復を無事に終えたチームは、おもしろ画像を入れたネタの仕込みに必死でしたw
結果発表
3つの賞が下記のチームに送られました。入賞者の皆様、おめでとうございます!
Most EVIL break!賞
最も優れた攻撃を行ったチームzanbezi5 (@maroon1stさんとこ)に!もっとも意地悪な攻撃として評価されたものは、AutoScaling設定をスケジュールする仕組みを使い(put-scheduled-update-group-action)、毎分、サーバー台数が0台になる、という攻撃でした。
Most AWESOME fix!賞
最も優れた修復を行ったチームPRISM (@ijinさんとこ)に!SQSのキューの中に、無限ループして増殖していくメッセージが仕込まれていたのも難無くクリアし全て修復してシステムを稼働状態に見事に戻しました。
Funniest Imag賞
バッチ処理クラスターからの画像がが最も面白かったチーム Fujinomiyaに!
Game Dayからのラーニング
マイルが言ったGame Dayからのラーニングのまとめが非常に良かったので、箇条書きで残しておきます。
- システムは、作るよりも、壊す方が楽
- 全てを修復可能だが、多くの場合、予測できない量の時間がかかる
- CloudWatchなどの監視やアラーム、通知といった準備無しでは、攻撃に気づくのにどれくらい時間がかかるだろうか?
- システムが複雑でなかったとしても、どう壊れているかを把握するのは複雑になりえる。修正したり置き換えたりするのはどれくらい時間がかかるか?もし、CloudFormationのスクリプトがある場合はどうくらい助けになるか?
- じつは、最高のシステムとは、どう振る舞うべきか、どのような状態にあるべきか、という明確な定義を保存しているべき。そして、繰り返し現状を検査し、それを定義と比較することで、自動的にもとの定義に適合するように自己治癒し続ける。
- こうなると攻撃は無意味なものになる。システムは自己治癒可能であるから。HA設計の定義がどれだけ強固であるか、定義された状態に戻るまでの時間がどれくらいかかるか、が重要なものとなる。
- AWSでは、このようなデザインを達成するための沢山のツールがすでに用意されている。Autoscaling、CloudFormation、CloudWatchとAlarms、SWF、Elastic Beanstalk、Route 53。各サービスは、自己治癒可能で、定義可能で、高い可用性を持ったシステムである。
- これらのAWSのサービスは、常にGame Dayのための準備が整っているのです。それは、AWSサービスにとっては、毎日がGame Dayだから!
さて、駆け足でお送りしたAWS Game Dayでしたがいかがでしょうか?ご参加頂いた皆さん、本当にありがとうございました。Game Dayを日本でやろうと言い出してくれたMiles Ward、開催に尽力したAWSソリューションアーキテクト陣営、ナイスワークでした!
また近いうちに、AWS Game Day Tokyo Vol.2を開催したいと目論んでいますので、乞うご期待を!
AWS Game Day Tokyo 2013 開催報告 - Part 1
本日、日本初のAWS Game Dayを開催していますので、その実況報告をしていきたいと思います。
Game Dayの背景を簡単に説明しておきますと、、昨年11月、アメリカ大統領選挙において、オバマ候補陣営はAWSクラウドを利用して先進的・大規模かつ、極めて堅牢な選挙運動システムを構築し大成功を収めました。詳しくは下記の記事が参考になると思います。
これが来るべきネット選挙の未来の形、Amazonのクラウドのパワーがオバマ大統領再選を支えたことが目で見てわかる「Obama for America on AWS」
オバマ陣営は、堅牢なシステムをさらに洗練するために、「Game Day」という手法を用いました。選挙日の前の、ある一日の間、「Game Day」を作り、チームが敵味方に分かれ、一方は知恵を絞ってシステムを破壊し、もう一方は全力でそれを修復するというものです。そして、その過程をつぶさに観察し記録することで、脆弱性の発見、対応策の蓄積をおこなっていくのです!
こんな面白いことは日本でもやらない訳にはいかない、ということで、早速イベント開催告知をしたところ、すぐに満席となり、本日実際にGame Dayを行っているところです!
「AWS Game Day Tokyo 2013」 日本初!対戦型システム信頼性向上策を体感しよう!
ルール概要はこちらです。
講師陣は、Obama for AmericaチームのボランティアメンバーのMiles Wardをはじめ、AWSソリューションアーキテクトチームです!
参加者の皆さんも攻撃を控えて盛り上がっています!
さあ、いよいよ攻撃開始!さあ今日のHiroは誰になるでしょうか!
EclipseのAWS CloudFormationテンプレートエディタ
AWS温泉ハッカソンで疲れてきたところ、CloudFormationテンプレートを触っていて楽しそうな人もいたので、ちょっと息抜き。
CloudFormationのテンプレートを作成する際に、手で書くと大変なのですが、AWS Toolkit for EclipeseかVisual Studioには、CloudFormationのテンプレートエディタ(AWSブログはこちら)がついており、Validationや、リソースヘルパー、IDEからのスタック作成などが行えます。全般的には使えますが、まだまだ改善していく必要ありです。覚書まで。
AWS Toolkit for Eclipseのインストール
まずは、AWS Toolkit for Eclipseをインストールします。
・Javaをインストール
・Eclipse IDE for Java EE Developer 3.7をインストール
・AWS Toolit for Eclipseをインストール
CloudFormationテンプレートエディタの使い方
・Eclipseの中で、Javaプロジェクトか何かを作っておく
・そこに、何等かのCFテンプレートをドラッグアンドドロップする
例えば、ここに東京リージョンのCFテンプレートが揃っているので、そのうち一つ(例えば、SimpleにEC2を立てる例)をデスクトップにダウンロードする。
それをEclipse上に持ってくれば良い。
・そして、それをダブルクリックすると、テンプレートエディタが開きます。見栄えはこんな感じです。
新リソースを挿入する際のヘルパーもあります。Validation機能もついていますが、Eclipse版はそれほど強力ではありませんのであしからず(例えば、後ろの}を消してもValidationでは検知できなかったり)。
Eclipseから、このCFテンプレートをデプロイすることもできます。
デプロイしたスタックはここから、スタックエディターで見ることが可能です。
こんな形で見ることができます。
CloudFormationテンプレートエディタを使えば、少しは楽にCloudFormationが使えますね!
WordPress on EC2のAMIを公開
データベース名など必要な情報を入れます。このAMI場合の場合は、下記のように設定してください。
あとは、ブログ名、admin名等を入れていきます。
これで、簡単にWordPressが立ち上がりました!
EC-CUBE on EC2のAMIを公開
EC-CUBE 2.12.3をEC2(Amazon Linux)にインストールしてAMIを作成したので、テスト用に公開しました。
AMI ID: ami-fb1296fa
AMI Name: ec-cube_2.12.3_amazonlinux
このAMIを用いてEC2を立ち上げると、必要なソフトウェアはすでにインストールされているので、EC-CUBEの設定画面から開始することができます。CDP実践ガイド本の第4章のシナリオを実践する際に、EC-CUBEのインストールを省きたかればこのAMIを使ってみてください。
下記に、「このAMIを使ってEC-CUBEを立ち上げた際の初期設定」と、「AMI作成においてのEC-CUBEのインストール方法」を記しておきます。
このAMIから立ち上げた際のEC-CUBEの初期設定
AMIからEC2を立ち上げ、そのEC2のPublic URLにアクセスすると、初期設定画面が出てくるので、次に進むを押します。
アクセス権限のチェック、必要なファイルのコピー、の画面が出てくるので、こちらも次に進むを押します。そして、ECサイトの設定のために必要な情報を入れていきます。
データベースの設定のところでは、下記のようにDB名、DBユーザ名を入れます。DBパスワードは、eccubepasswdです。
この後、データベースの初期化の画面でも、次に進むを押します。これで、EC-CUBEのインストールは完成です!
管理画面にログインすると、様々な設定が可能です。
トップページはこのような初期画面になります。
というわけで、CDP実践ガイド本を実践する際に、EC-CUBEのインストールを省きたかればこのAMIを使ってみてください。
下記は、EC-CUBEのインストールの手順です。ご参考までに。
AMI作成においてのEC-CUBEのインストール方法
下記に今回のAMIの作成方法の流れを書いておきます(詳しくは、CDP実践ガイド本のAppendixBも是非ご覧になってください)。
EC2をAmazon Linuxから起動します。インストールに用いたAMIは、Amazon Linux AMI 2012.09です。
AMI ID: ami-4e6cd34f
AMI Name: amzn-ami-pv-2012.09.0.x86_64-ebs
SSHログインして、httpd, phpをはじめ必要なものをインストール。
sudo yum -y install httpd php php-gd freetype-devel php-mbstring php-xml libcurl-devel php-mcrypt mysql-server
DBとして今回はMySQLを選んでいます。
sudo yum -y install mysql-server php-mysql
EC-CUBEをダウンロードしインストール。
wget http://downloads.ec-cube.net/src/eccube-2.12.3.tar.gz tar xzvf eccube-2.12.3.tar.gz
HTMLディレクトリの場所など設定をします。
sudo cp -r eccube-2.12.3/html/* /var/www/html/ sudo chown -R apache:apache /var/www/html find /var/www/html -type d | sudo xargs chmod 775
データディレクトリの場所など設定をします。
sudo cp -r eccube-2.12.3/data /var/www/ sudo chown -R apache:apache /var/www/data find /var/www/data -type d | sudo xargs chmod 775
MySQLの設定を行います。
sudo service mysqld start mysqladmin -u root password mysql -u root -p
rootのパスワードは、rootrootにしておりますが、必要に応じて変更してください。
データベースを作成します。
mysql> CREATE DATABASE eccube DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> grant all on eccube.* to eccube@localhost identified by 'eccubepasswd'; mysql> flush privileges; mysql> exit
起動時にApacheとMySQLを起動するように設定します。
sudo /sbin/chkconfig mysqld on sudo /sbin/chkconfig httpd on
ここでAMI作成!
Amazon EC2上でAWS SDK for node.jsを使ってみる
とうとうAWS SDKのラインナップに、node.jsが加わりましたね。プレビュー版ですが、2013年1月3日時点で、Amazon EC2, Amazon S3, Amazon DynamoDB, Amazon SWFをサポートしています。
Amazon EC2上で環境作成
Amazon EC2上でAWS SDK for node.jsの環境を作りましょう。Amazon EC2を起動する際に、OSとしてAmazon Linuxを選択します(Amazon Linux AMI 2012.09を利用)。
EC2が起動すると、node.jsの環境を作ります。必要なパッケージをyumでインストールし、nodeをmakeしてインストール。ついでにバージョンマネージャnvm、パッケージマネージャnpmもインストールします。
ここで、AWS SDK for node.jsをnpmでインストールします!
AWS SDK for node.jsを使ってみる
環境ができたので、早速、使ってみましょう。まずは、DynamoDBのテーブルリストアップを試しました。下記のようなdynamo_example.jsを作成します。
実行してみると、無事にテーブルの一覧がリストアップされます。
次に、S3のバケットのリストアップです。
これで、Amazon EC2上にAWS SDK for node.jsの環境が整いました!色々と遊んでみてください!
【CDP Advent Calendar 2012】 これからのCDPの話をしよう
皆さま、メリークリスマス!12月1日から始まったAWSクラウドデザインパターン(CDP)の「CDP Advent Calendar」において最後の記事となる、12月25日分を担当させて頂く玉川です。ちなみに、私の好きなCDPはServer Swappingです。これまで24日分の皆様のCDPへの熱い想い、本当に有難うございます。CDPの発起人として、そして、Ninja of Threeの一員として、2012年は皆様への感謝が絶えない年となりました。
12月1日に、#ヤマン こと、K. Yamangこと、片山あきお氏が、「これまでのCDPの話をしよう」、で書いてありますように、2011年末に産声をあげたCDPは、2012年に目覚ましい進化を遂げました。CDPのwikiが作成されただけでなく、日経BP様から書籍も発行され、ラスベガスのAWSグローバルカンファレンスで英語発表させて頂いた上に、英語版CDPサイトまで作成されました。最近は、その英語版サイトを見たインド人やフィンランド人から、下記のようなコメントがくるたびに、じーーーんとムネアツになっております。
"Excellent work on the CDP! We have a common language to work with on AWS."
(CDP、ほんと良い仕事してくれたね!AWSをやっていく上での共通言語を持てたよ)
2011年からの年末年始を潰して作り上げて、本当に良かった、素敵な仲間がいてすごく良かった、としみじみ感じいっておる次第でございます。
さて、私の今回の記事は、「これからのCDPの話をしよう」ですが、漠然と方針を話しても面白くありません。そこで、今日はクリスマスプレゼントとなる2つの最新情報を皆様にお届けしたいと思います。二つとも初公開です。CDP48の系譜図とCDP実装ガイド本です!
【CDP発表】CDP48の系譜図を公開
CDPを作っていく上で、各パターンの相互の関係には非常に注意を払っていました。このパターンはこのAWSサービスに使用している。このパターンの進化版としてこのパターンがある。こういった関係性が系譜図として明示されていれば、よりCDPが分かりやすくなるのではと思い、クリスマス中に近場のスタバで書き上げました。お楽しみください。
より詳細図をじっくり見たい方はこちら(Cacooのリンク)。
【CDP発表】AWSクラウドデザインパターンの実装ガイド本を近日発売
日経BP様から出版されたAWSクラウドデザインパターンの設計編は、皆様のご愛顧のおかげさまで増刷も行われました。しかし、あくまでこの本は「CDP48個のカタログ」+「ハイレベルのシナリオ3種類」のみの構成になっております。そのため、AWSのビギナーかつ実際に手を動かして体験しようと思った方には、情報量としては物足りないものがあったと思います。そこで、AWSクラウドデザインパターンの実装ガイドを準備しました!
本ブログ記事を書いている時点では、まだ予約販売のみですが(なおかつAmazonのサイトがまだありませんがw でき次第リンク加えます)、今回の実装編は、設計編で説明した全3シナリオについて、AWSのWebコンソールの画面キャプチャも含め、実際に作っていく詳細手順まで記されておりますのでお勧めです。
最後に
CDPに込めた我々の夢は、まだまだ萎んでいく気配を見せません。2012年度においてもAWSは現時点で150以上の新サービス、新機能を出しておりますが、来年もこのイノベーションのスピードは落ちることは無いでしょう。それに伴い、新しいCDPも次々と産声をあげています。2013年には、CDP2.0を発表できるように仲間とともに切磋琢磨していきたいと考えています。wikiでは誰でも新パターンを書きこめるようになっているので、是非、新しいNinjaとして名乗りをあげてください!
CDPをやりはじめてから、何度となく逆風が吹き、よろけたり転びそうになったり、あきらめたりすることもありましたが、Ninja of Three (@suz_lab @c9katayama)をはじめ、CDPを支えてくださるサポーター(@bond_honey @hide69oz @shouhei)やアーキテクト(@oko_chang @kaz_goto @tottokug @ar1 @shot6 @horiuchi @understeer、その他大勢)の支えもあり、やっとここまできました。皆様、本当にありがとうございました。
では、メリークリスマス&良いお年を!
玉川 (@KenTamagawa, Facebook)