読者です 読者をやめる 読者になる 読者になる

すずけんメモ

技術メモです

AWS re:Invent 2014 breakout session 2日目

aws reinvent

二日目もKeynoteとsessionがありました。メモを残しておきます。

参加したセッション

  • SPOT305 -- Event-Driven Computing on Change Logs in AWS
  • BDT401 -- Big Data Orchestra - Harmony within Data Analysis Tools
  • APP303 -- Lightning Fast Deploys with Docker Containers and AWS
  • GAM404 -- Gaming DevOps: Scopely's Continuous Deployment Pipeline
  • SDD424 - Simplifying Scalable Distributed Applications Using DynamoDB Streams

新サービス類

気になったものだけ。

ECS: EC2 Container Service

コンテナのマネジメントの仕組みを提供するもの。EC2インスタンスにあるものと同じように、containerに対してもIAM Roleやsecurity groupを適用したり、EBS volumeをできたりできる。apiではclusterの立ち上げと、taskとしてのcontainerの割り当てを行うことができ、高速にコンテナを扱うことができる。

Amazon Lambda

AWS Lambda - Run Code in the Cloud AWS Lambda

Lambdaはその名の通り、あのLambdaです。EC2インスタンスを自分で用意する必要もありません。手続きを定義して渡すのみ。そうするとそこに渡されたデータをよしなに扱うことができる。

所感

  • これが今回の発表の中ではもっともdisruptiveなものだと思います。まだまだ取り組みの種の段階では有りますが、いわゆるworker側を簡単に、しかもfull managedなものとして提供できるようになったのは大きい。
  • Kinesisが去年発表されたわけですが、Kinesis Applicationを自分で書いて、かつauto scalingの設定も自分でしないといけない。Kinesis Client Libraryにのっかると簡単にかけるものの、リソース管理をする必要はなくならない。それがこのLambdaだと、いわゆるLambdaを書けば動くわけです。
  • また、今回、S3 notificationやDynamoDB Streamが追加されたことによって、いわゆるEventを受け取れるsoruceが増えました。例えばs3の特定のpathにfileがuploadされた際にその内容をparseして一部をDynamoDBにinsertする・・・というようなことが、EC2でworkerを立てなくてもできるわけです。
  • fluentdからLambdaに渡してfilterとかexecっぽい処理はそっちに分離したいなぁと思ったり。

breakout session

SPOT305 -- Event-Driven Computing on Change Logs in AWS

it's all about timeliness and agility

最近のもろもろのupdateによってEvent-Drivenなcomputingが可能になってきたね!というセッション

  • 写真共有サービスで登録しているユーザが画像をuploadするケースを考える
    • S3に画像uploadする
    • そのタイミングでS3 notificationを受け取る
    • 操作を行う
      • GPS情報を取得する
      • 関連するアルバムに追加する
      • 友達を関連付ける
    • こうした操作をbatchであとからまとめてやるのではなく、uploadされた時点でeventとして渡すことができるようになった
      • 画像がuploadされた時点でSQSやSNS, Lambdaに渡したり
      • 例えば画像のindexをlambdaで生成してmeta-dataをDynamoDBに書き込む
        • すると、写真がuploadされた比較的すぐ検索可能になる
  • event-drivenのanti pattern
    • 全量をscanするような作りにはしないこと
      • 1つ1つのイベントで大きな処理をしない

所感

  • これは良い流れ、S3 notification便利っぽい
  • DynamoDB Stream, S3 notification, Kinesis, SQSといったreal-timeな通知をする側と、そのeventを受け取る側(lambda, SQS, SNSなど)が今後拡充されていくんじゃないかと期待
  • 例えばCloudTrailでs3に流れてきた
  • batchでs3 bucketをscanしてその中にある何かを探して1つの小さなoperationしかやらない、みたいなopsを排除していきたい

BDT401 -- Big Data Orchestra - Harmony within Data Analysis Tools

SQSとかKinesisとかCloudSearchとか連携させて使うにはどういうarchitectureになるか、っていう話

所感

  • 知ってる話ばっかりだったので割愛

APP303 -- Lightning Fast Deploys with Docker Containers and AWS

Dockerの中の人の発表

Dockerの基礎的な説明がメイン。今回のカンファレンスではコンテナに対する期待度が高かったようで、大人気のセッションだった。

デモ: nathanleclaire/awsapp

  • haproxy -> flask -> redisな構成をDockerでdeployするデモ
    • docker hostsが便利
    • どんなことをしているのかは awsapp/deploy.sh at master · nathanleclaire/awsapp みればわかる
    • imageでrollbackできるのは便利

      rollback) docker hosts active ${DOCKER_HOST_NAME} run_app_containers_from_image ${REMOTE_IMAGE}:$2 docker hosts active default

    • remote hostsでもdocker psで確認できる

所感

  • Docker自体の説明とデプロイ方法の説明だった
  • 内容はGitHubに載っているのであれだけど、デモが手際よくてエキサイティングだった
    • FlaskからTornadoに切り替えるデモとかなかなかおもしろかったというか、その発想はなかった

GAM404 -- Gaming DevOps: Scopely's Continuous Deployment Pipeline

Scopelyというモバイルのゲーム会社

  • ざっくりいうと、Blue/Green Deploymentはごりっとしてるから中間っぽい感じの方法でやってるよという話
  • blue/green deployment
    • 2つの完全なクラスタ
    • 完全な受け入れテストができること
  • 問題
    • 高いよね
    • acceptance testはクリティカル
    • cloudだと切り替えっていうのはDNSになる
      • 2つelb用意してがっとDNS切り替え
        • DNSクライアントの振る舞いに依存する
          • ttlを丁寧にチェックするクライアントなら切り替わるけどね
        • 新しいELBはまだwarmされてない
  • CYAN deployment
    • greenとblueを混ぜてみた
    • canary releaseみたいなもの
    • acceptance testsの知識は完全ではない
      • stagingで
    • 1つのelbをつかう
      • warm upいらない
      • dns変更しなくていい
    • 多くのものを動かさなくてもいい
  • ビルドへのアプローチ
    • golden ami approach
      • 全てのソフトウェアをamiにいれておく
    • 起動時にデプロイ
      • base amiを用意するものの、起動後のインスタンスにprovisionする方式

所感

  • ゲーム企業とかだとユーザ体験に直にかかわるので結構センシティブなんだろうなと思った

SDD424 - Simplifying Scalable Distributed Applications Using DynamoDB Streams

DynamoDB Streamの話がメイン

  • 話としては前のセッションにも出てたんで割愛

所感

  • cross region replicationしたい要望ってどれくらいあったんだろう
  • streamのインタフェースをKinesisに整えたのは素敵