Skip to content

Instantly share code, notes, and snippets.

@jupemara
Last active August 29, 2015 14:06
Show Gist options
  • Save jupemara/853b44df201714ffb8ce to your computer and use it in GitHub Desktop.
Save jupemara/853b44df201714ffb8ce to your computer and use it in GitHub Desktop.
AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day 2014 AWS Cloud Storage & DB Day …

AWSストレージ関連サービスの正しい理解と使い方講座

  • speaker: 榎並 利晃
  • agenda
    1. クラウドストレージ利用する意義
    2. ストレージサービスの紹介
    3. 聞き逃しましたサーセン
    4. 聞き逃しましたサーセン

ストレージの用途

  • ファイルサーバ
  • データベース
  • ログデータ
  • バックアップ&アーカイブ
  • ビッグデータ(分析器番)
  • メディアコンテンツ
    • 動画
    • 音楽

重労働なストレージ管理

  • ハードウェアの導入コストも大変

    • 買ってくるのもやけど、そもそも承認とかが...
  • ファームのアップデートなどの運用管理のだるさ

  • 各システムごとの運用管理、調達が重労働

  • ストレージ管理に忙殺されるせいで、実際のデータを分析する暇がない\(^o^)/

そこでクラウドストレージである

  • データの箱の管理はすべてクラウドでやってみましょう

コンピュータの成長速度について

  • CPU: Mooreの法則
  • ストレージ: Kryderの法則
  • ネットワーク: 上記に比べて成長速度が遅い...

よって、ネットワークがボトルネックになるので、移動させづらい、入れる場所をよく考えましょう

クラウドを軸としたデータ活用

S3をデータソースとして、Redshift、DynamoDBなど他のDBに突っ込むことで、生データをぐるぐるとまわしていく。これを** Contents Gravity **

S3とGlacier

  • S3

    • 99.999999999%の堅牢性
    • 大量のアクセスを考慮した設計
  • Glacier

    • 取り出すのに3~4時間かかる
    • 監査データのような普段使用しないものを使いましょう

Amazon Storage Gateway

  • オンプレと連携したバックアップ&クラウド・ストレージサービス
  • バックエンドにS3
  • Gatewary経由で保存したデータはS3に転送される

zocalo

  • クラウドストレージを基板とした文書補完共有システム
  • Full-Managed
  • コラボ関係機能
    • web画面上で編集、注釈が可能
  • Multi Device対応

ユースケース

  • ファイルサーバストレージ
  • バックアップストレージ
  • アーカイブデータHUBストレージ
  • コンテンツ配信ストレージ

ファイルサーバストレージ

  • EC2上にEBSを作成し、ファイルサーバとして作成
    • バックアップはEBSのスナップショットでS3へ
  • EBSのサイズ上限は1TB

より大規模に...

Storage Gateway
  • EC2がiScasiターゲットになり、iScasiターゲットに保存したファイルは自動でS3へ
  • 1Storage Gateway辺り、最大150TB
  • Storage Gateway自体は、AWS上にも置けるし、オンプレ側にも置くことが可能
    • Localのセグメントに存在するサーバをStorage Gatewayにしちゃう

S3にデータ保存ができるアプライアンスを使うという選択肢

バックアップストレージ

選択肢としては...

  • S3をバックアップ用途のデータストアとし、Storage Gatewayを使う

細かい営業所がたくさんあるような事業の場合でも、OO営業所はヨドバシで買ってきた1TBのNAS('A`)みたいなときも、統合バックアップとしてS3を使用する

インテリジェントバックアップ(単純なファイルバックアップではなく、イメージのバックアップ)

  • ArkServe
  • Symantech

上記ソフトウェアでバックアップイメージをS3に格納する

S3保存できるバックアップソフトを使ってないんだが...

  • Storage Gatewayをバックアップソフトの保存先として導入し、間接的にS3にデータを保存する
  • Storage GatewayはVirtual Tape Library機能を使えば、iScasiのテープライブラリとして見える
    • Virtual Tape Library上でテープの取り外しを行うと、Gracierに保存される

アーカイブストレージ

  • ログとか監査系とかみたいな、ファイルのサイズは大きくないけど、数がとにかくおおいいいい
  • Gracierに入れるのがいいとは思うんだが、Gracierには管理画面ないから、一旦S3に入れてからGracierに突っ込むのがオヌヌメ
  • S3のLife Cycle Policyを使うことで、自動的にS3からGracierへ

コンテンツ(映像系)のアーカイブ

ゴールはGracier

  • ボトルネックはネットワーク
    • アプライアンスを使って高速にデータ転送を行う
  • S3のMulti Part Uploadを使用して、並列でファイルを分割してデータを転送(** ぜひ持ち帰っていただければ **)

AWS Import

  • HDDをAWSに送付して、AWSに組み込んでもらう
    • 東京Regionは未サポート
    • パートナー会社がやってるので、そちらで頼んでみてね

データHUBストレージ

  • S3を中央集権データHUBとして、S3に入れたデータを他のComponentから使用する
    • EMRから分析、クリーニングし、S3に戻す
    • Redshiftへデータを突っ込んで、分析基板として使用する
    • Data pipeline

コンテンツ配信ストレージ

  • 静的なHTMLを配信する機能を持っている
    • Webサーバ兼コンテンツダウンロードサーバ
    • CloudFrontでCDNしてOriginにS3
    • EC2インスタンスがひとつもいらない\(^o^)/
    • ただし、動的なコンテンツに関してはEC2でアプリケーションが必要

動画配信

  • ElasticTranscorder
    • 動画フォーマットの変換

を使用して、デバイス最適化したコンテンツを配信することが可能


まとめ

  • 見えない未来を予測したサイジング設計
  • 実際問題、サイジングは失敗するので、S3のようにハードウェア、容量を気にしなくてもいいように
  • ハードウェアの管理ではなく、データの管理を行い、データを生かして逝きたいよね

  • Zocalの説明なかった\(^o^)/

IoTを支えるビックデータソリューション

  • Speaker: 榎並利晃
  • Agenda:
    • Iotがもたらす新たな価値
    • データフロー
    • Amazon Kinesis概要
    • データ入力のデザインパターン
    • データ出力のデザインパターン
  1. IoTがもたらす新たな価値

Iot = [Internet of Things]

VirtualなInternet Contentsをリアルなものにひもづける。

  • 実例
    • 風力発電
      • 逐一モニタリングを行い、タービンの効率化
    • Amazonがすでに取り組んでいる
      • Amazon Dlone
    • Amazon Dash
      • ものに対してかざすとそれを購入することができるbyバーコードを使う
    • ガリバー
      • Drive+ Lineインターフェイスを通して、車の位置情報を取得する(車からのセンサーデータを常に受け取る)
    • スシロー
      • 回転寿司のセンサーを用いて、来店状況、オペレーション状況を把握する

多種多様なデータ(センサーデータ、行動ログ、ソーシャルデータ、オープンデータ)を組み合わせることに寄って、データを意味のある形にする。さて、どのようにしてデータ基盤を作りましょうか??

典型的なデータフロー

一般的なデータフロー

Client/Server -> Ingest -> Processing -> Storage -> Visualize

Ingest Layerの重要性

構造の異なるデータソースに対する高速処理

  • スケールアウト
  • 高信頼性の維持
  • 順序性
    • データが入ってくる順序が重要
      • 通常と違う順序であれば異常系みたいな

ランダムに来るデータをまとめて、シーケンスストリームの形に変換

  • データをシーケンシャル化

Amazon Kinesis概要

  • ハイボリュームな連続したデータをリアルタイムで処理可能なフルマネージドサービス
  • Kinesisはじゅうじゅうマンのデータソースからの1時間辺り数TBのデータを処理することができ、且つ、複数のAZにデータを保存することができる。

Producer -> Kiniesis -> Consumer

Kinesis構成内容

  • ひとつのStreamの中に複数のShardが存在している
    • 1Shard辺り1000 QPSまで
    • 1shardで24時間データを複数のAZで保持する
  • お料金
    • シャード利用料
      • 1ヶ月辺り14$

データ入力

  • request
    • parition-keu
  • response
    • sequence number

Partition Key

  • Partition KeyをMD5でハッシュした値によってどのShardに入れるべきか判定される
  • 逆に固定のParition Keyを付与することで、常に同じShardに入る

Sequence Number

  • シーケンス番号を指定することで、その地点からのデータを担保することができる
    • 対障害性
    • Recommendロジック

既存ログ収集パターン

  • Fluentd Plugin
    • aws-fluent-plugin-kinesis(output plugin)を使って、Kinesisに送信できる

センサーログ収集

NQTT BrokerとMQTT-kinesis Bridgeを用いてメッセージをKinesisに入力することが可能

ELB - NQTT-kinesis Bridge - Kinesis - any DataBases

モバイルアプリデータ収集パターン

  • Cogniteを使用することで、KinesisへのTemporary Tokenをモバイル・アプリケーションから取得する古語が可能

データ取得方法デザインパターン

  • Kinesis Client Library
  • 起動時にDynamoDBにテーブルを作成し、ステータス情報(シーケンス処理とwaorkerをついにした)を格納
  • ひとつのストリームから複数のKCLをクライアントとできるので、複数種類のアプリケーションが稼働可能
  • シリアル番号とCheck Point

基本構成

  • Pub-Subアーキテクチャを使用しているため、動的にアプリケーションを追加することが可能
    • ということは、本番のKinesis Streamを使用して、開発用アプリケーションを作成OR追加することが可能

ETL/MapReduce処理パターン

Kinesis -> EMR -> S3
  • EMRからKinesisに対してデータを取得することが可能
  • EMR上でSparkを設置して、高速動作も可能(blogに書いてるよ)
  • Apache Stormを使用して、Kinesisから取り出して、Stormでboltをつないで順序性を担保しながら、高速化処理が可能

Filterパターン

Kinesis             ->             Filter layer ->  Kinesis
* ランダムキーでひたすら突っ込む   * 複数のKCL      * sequence numberを使って順序処理する

DEMO

センサーデータのデバイスを以上検知してアラートを通知

  • X, Y, Z軸の座標をスマートフォンから送り続けて、ELB配下のGatewayサーバからKinesisにデータを突っ込む
  • Kinesisに突っ込んだデータをダッシュボードへ反映させて、リアルタイム処理

AWSおおびパートナーサービスを使った、データの集約および活用設計パターン

  • Speaker: 荒木靖広

データの集約の基本方針

  • あらゆるデータの発生源に対応する
  • 既存のアセットを最大限に活かす
  • AWSのメリットを享受する

データがクラウドにあることで、既存のシステムを一新する際も、データソースをうまく活用できる

AWSデータの関連サービス

S3をデータソースの起点として、他のサービスでデータを加工、クリーニングを行う

EMR

S3からデータを取得し、EMRでバッチ処理を行い、中間データをS3に突っ込み直す

  • EMRの得意な点
    • 生データを構造化する(クリーニング)
    • 同じデータソース(S3)に対して複数のEMRを使用することができるので、データ操作のアルゴリズムを比較することができる

Redshift

  • Redshiftはデータがクリーニングされていることが前提
  • DWH

つまり、S3に生データを入れる、EMRでバッチ処理してクリーニング、S3に突っ込んでRedshiftに突っ込んでデータ解析

データ処理のながれ

  1. 自社サービスのRDBMS、logなどをS3につっこむ
  2. EMRを使用してS3の生データ(非構造化データ)を構造化データに整形する
  3. EMRによってS3に戻された構造化データをRedshiftへロードする

データロード

3rd partyなものを使用することも可能

  • FlyData
  • ATTUNITY
  • CloudBeam
  • DataSpider
  • talend

FlyData

MySQL内のデータをRedshiftへロードする機能を提供

  1. MySQLのbinlogを取得
  2. binlogをFlyDataのサービスを通して(FlyDataのDCを通して)、S3へアップロード
  3. S3からRedshiftへデータロード

BIツールとの連携

  • RedfhitはJDBC,ODBCのインターフェースを持ってるので、Redfhistに接続することがやりやすい
  • RedfhistのデータをBIツールで可視化

ビッグデータソリューション

蓄積されたデータへの処理

  • S3 + EMR + Redshift

Streamを使用して今のデータを使ってデータ処理(ニアリアルタイム処理)

  • Kinesis
  • Kinesis Endpointに対してデータを流す
Recommended by Amazon

Kinesisからデータを投入するバックエンドとしてはDynamoDBを使うことがオヌヌメ


VPC

  • クラウド内に専用ネットワークを構築
  • VPN説zぉくすることで、ハイブリッド環境が可能

ベストプラクティスby荒木

  • ログインする必要のないネットワークを大きめのCIDRで切り出す
    • RDSやElasticacheなど
  • 逆にログインする必要のあるものに関しては細かめにsubnetを切り出す

AWS Direct Connect

  • AWSとデータセンター、オフィス、コロケーション環境を専用線で接続

CloudHUbのHubとしてのVPC

  • 本社からVPCへはDirect Connect
    • 各拠点(支社)はVPCのVPN Gatewayに対してVPN Connect

ファイルコピー高速化

サーバへのファイル転送を高速化する

  • TSUNAMI-UDP
  • Aspera
  • Skeed

Block Deviceのコピー

  • AWS Strage Gatewayを使ってくだしあ
  • DRDB or DRDB Proxyもあるよ

CloudOpt

ネットワーク転送最適化

  • CloudOptがNATしつつ、最適化することで、クライアントは透過的にCloudOptを使用することが可能
e.x
MySQL Master dest port: 3306 -> listen 9001: CloudOpt Node -> Internet -> listen 9001: CloudOpt Node NAT:3306 -> MySQL Slave

Direct Connect体験ラボ

Direct Connectが体験できるよ\(^o^)/

Direct Connect体験ラボのためには、トレーニングが必要

  1. VPC Direct-Connect(DX)のディープトレーニング
    • +αでCloudFormation
  2. Cisco, JuniperのRouterを使った実機ハンズオン!

まとめ 👍

  • 発生した生データを安全に保存する(我々はぜひS3を!!)
    • 生データがあれば加工はいつでもできる
    • 検証環境
    • Direct Connect(低Ratencyな帯域)
    • Kinesis + DynamoDBでリアルタイム処理
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment