STEAM PLACE

エンジニアリングとマネジメント

『JAWS DAYS 2016』に参加してきた

f:id:dskst9:20160313144902j:plain

JAWS DAYS 2016 | Move Up the Next Cloud

JAWS DAYS 2016 に参加してきました。
今年もおもしろいセッションをたくさん聞けて素晴らしい一日でした。

諸事情で13時半ころからの参加になり、、聞きたかったセッションを逃してしまったのが残念。。

追記 3/17

資料一覧をまとめてくれている方を見つけました。
ありがとうございます。

これを聞ききたかったよ

はい、13時のセッションですが間に合いませんでした…。
今後資料が公開されたらリンクしておこうと思いますが、どなたか資料発見したらご連絡を貰えると嬉しいです。

スマートニュースにおけるストリーム処理の過去・現在・未来

坂本卓巳さん [スマートニュース株式会社]

聞きたかったですね、資料公開を待ちます。

Big DataとContainerとStreaming – AWSでのクラスタ構成とストリーミング処理

岩永亮介さん [AWSJ SA]

残り5分くらいきけました、 Kinesis のあたりを少しだけ。。
資料公開待ってます。

エンジニアのキャリアとアウトプットを意識した成長戦略

及川 卓也さん [Increments株式会社]

及川さんのセッションの時にちょうど SA に確認したいことがありあまり聞けず。。
これは生で聞きたかったなー。

これを聞いたよ

AWS IoTで家庭内IoTをやってみた

土持 昌志さん [JAWS-UG 大阪]

f:id:dskst9:20160313152924j:plain

ラズベリーパイに湿度計をつけて、AWS IoT を使って AWS に送信する仕組みを作ったというお話。
資料を見つけれないのですが、ここまで簡単にIoTを作れちゃうんだとびっくりしました。

あと、セッションとは全然関係ないですが、下記のハンズオンの記事も参考になります。
これならできる!AWS IoT ハンズオン 参加レポート | オブジェクトの広場

以下自分用メモ。

  • AWS IoT Device SDK AWS IoT Device SDK - AWS IoT
    • Node.js でブリッジプログラムを書いて Python での実装を行っていた
    • あとでAWS SAの方に確認したが、 Android, iOSSDKも最近出たらしい
  • Device Shadow とは
    • デバイスの仮想コピーをクラウド上に作成する
    • デバイスがオンラインになったらデバイスに情報を送信する
    • オンラインからデバイスを操作するのでデバイス側で対象処理を行うプログラムが必要なようだ

AWS IoT デザインパターン

福井 厚さん [AWSJ SA] / 下佐粉 昭さん [AWSJ SA]

AWS IoTと連携するAWSサービスの設計パターンについてのお話でした。
福井さんと下佐粉さんの掛け合いも面白かったですw

IoT に必要なもの

  • 迅速さ
  • スケーラビリティ
  • コスト
  • セキュリティ

PUB/SUBのパターン

MQTT プロトコルでの実装が主流になってきているようです。

  • ポイント to ポイント
    PUB 1: SUB:1
  • ブロードキャストパターン
    PUB 1:SUB n
  • ファンアウト通知パターン
    投げるトピックによって SUB を切り替える
  • 集約パターン
    PUB n: SUB 1
    ワイルドカードで必要なものだけを吸い上げる、URLに埋め込む事もできる

アーキテクチャ

f:id:dskst9:20160313154247j:plain

  • Batch Layer
  • Speed Layer

上記のようなレイヤー分けでパターンを分けていきます。
スピートが求められる場合、データの正確性が求められる場合で分けるといった場合です。
尚、 IoT はイベント駆動アーキテクチャになります。(SQS,SNS,Lambda などでイベント駆動)

DEMO

福井さんの椅子に椅子の動きと、照度を感知するIoTを取り付けたというデモがありました。オチが秀逸でしたw

以下、メモ。

  • Kinesis Firehoseはプログラムレスでデータを送れる
  • Kinesis Firehose のモニタリングが可能
  • Redshift は5分間隔とかで登録していたりする
  • セキュリティはクライアント証明書、TLS1.2、サーバーと双方間で認証

オペ担当がAPI Gateway + Lambdaでチケット処理を自動化した話。

植木 和樹さん [JAWS-UG 上越妙高支部]

すでにクラスメソッドさんの記事にまとまって公開されていました。
(初心者向け)APIGatewayとLambdaの導入事例について話してきました #jawsug #jawsdays #jd2016_deep | Developers.IO

Lambda の話がメインでした。
最近 Lambda が便利すぎて衝撃を受けていて、いろいろ調べている最中なので勉強になりました。

AWS Lambda とは

  • コードを書く
  • 発火する
  • コードが実行される

Lambda の覚え方

  • AWSブループリント(サンプル)があるので見てみるといい
  • Qiita に Lambda の記事がいっぱいある
  • Lambda 連携時は 入力データをまず確認
    CloudLogs で入力データをまず確認した方が必要な値とか見やすいよね

Lambda の VPC 対応

VPC 対応がされたことにより以下にアクセスが可能となりました。

  • RDS
  • CloudWatch Events
  • AWS Config Rules

メモ

  • AWS APIでリソース操作
  • 外部APIと連携可能だが、VPCにするとNATインスタンス必要
  • データ変換、画像変換、SQLなどなんでもできちゃう
  • OpenSSLの脆弱性などライブラリのアップデートもAWSがやってくれる
  • Backlog Webhook が SNI に対応してなかった
    後日対応してくれたらしい

Amazon API Gateaway / AWS Lambda Deep Dive(の触りだけ)

西谷 圭介[AWSJ SA]

www.slideshare.net

勢いがすごかったですw
内容も豊富すぎてメモが追いつかない…!

パフォーマンス

  • Javaがイニシャライズが高い
    • Node.js の10倍くらい
    • 初期化が終わればJavaが早い
    • Pythonが両方の間くらいになる
  • Lambda はメモリサイズのみ指定できる
    • CPUは指定できないがメモリサイズに比例する
    • 課金はメモリサイズによるので注意

VPCアクセス関連

  • 設定したらインタネットアクセスが負荷となる
    必要な場合はNATインスタンスを用意する
  • AZごとにサブネットを指定しおくのがおすすめ

スケジュール実行

  • rate, cron で設定可能

Idempotency

  • 冪等性はコードで確保する
  • Lambda は最低一回実行する、何十万回に2回とか起きる場合がある
    DynamoとかはリクエストIDで制御とかするとか

リトライまとめ

  • ファンクションがエラーになるとリトライになる
  • エラーにした上で正常終了したければ、ログに吐いてCloudWatchとかで披露必要がある
  • Kinesis、DynamoDB はエラーになると成功するまでそのシャードは無効化される?

同時実行

  • 同時実行数を超えた場合はエラーになる
    • 同期の場合 429 が返却される
    • 非同期の場合6時間再思考される(S3は最大24時間)
  • Kinesis, Dynamoはまた特殊

API Gateway

FAQ

  • ファンクション内部からエイリアスを取得して環境変数のように使える
  • 新規コードがアップロードされたら混在する、ダウンタイムなし
  • VPCアクセス利用時、プライベートIPを固定することは可能
  • グローバルIPNATで固定化
  • VPCアクセス時のレイテンシは結構ある、ENIの作成がある場合は10〜60秒
  • 初期化をポーリングでやっておくのも手となる

Tips

  • Lambdaのブラウザエディタはからスキームが変更できる
  • Lambdaファンクションはコンテナ内で実行される
  • 利用がない場合はコンテナは一度破棄される
  • /tmp はいつ消えるかわからないので使わない方がいい

おわりに

去年はAWSの導入事例などが多かった気がするのですが、今年は各機能ごとにディープなセッションがあり、1年でこんなにも技術と世の中が変わっているいくことを感じました。
また来年楽しみにしています!