「Redshift」パフォーマンスチューニングのポイント
3つ目は「Redshift」に関するセッション。某並列DBベンダーのコンサルからクックパッドに移り、現在はRedshiftを扱っているという青木峰郎氏がRedshiftの基本的な部分の説明を踏まえつつ、Redshiftでパフォーマンスチューニングを行う上でのポイントとなる部分を解説しました。
まずは基本的な部分の説明から。Redshiftは並列RDBMSであり、普通にSQLを使用できます。リーダーノードとコンピュートノードの2種類のノードで構成され、並列処理の単位は「ノードスライス」となり、最小単位となるノード構成でも1ノード/2スライスの構成です。Redshiftでの典型的なシステムの例として下図の構成を挙げ、扱うデータとしてはトランザクションデータ(大規模、億単位のデータ)とマスタ系データ(小規模)の2種類があります。データを参照する経路としてはBIツール・人間(SQLを直叩き)・バッチ処理など、多岐に渡ります。
Redshiftに対する処理としてもいくつか場合分けをした上で、それぞれの特性について青木氏は語ります。通常のWebシステムに求められるような、マイクロ秒単位で更新が求められるもの、秒間2桁以上を求められるようなリクエストの並列度が高いものについては、「Redshiftでは無理」と断言。小さいテーブルに対する少量のデータ取得であればRedshiftでも対応は可能だろう、としています。オンライン処理については、事前に行を特定フィールドであらかじめソートしておく、圧縮エンコードの設定を実測してサイズを見極める点が重要と解説。
また、一番処理が重くなるであろうバッチ処理、または数分間掛かるようなオンライン処理については、「データを移動したら負けである」と強調。「Redshiftの環境外にデータを移動して処理するのはまず問題外だし、Redshift内部の話としても、ノード間移動が行われるような分散キーの設定も避けるべきである。Redshiftで一番ボトルネックとなりやすいのはノード間のネットワークなので、まずはここをチューニングすべき。設定によるデータの再分散を避けることでネットワーク負荷も節約でき、結果としてパフォーマンス向上が見込める」とその理由を説明しました。
2014年に追加されたAWSの新機能
4つ目のセッションでは、アマゾンデータサービスジャパンから荒木 靖宏氏が登壇(発表スライド)。
AWSでは日々新しい機能やサービスが更新されていますが、2013年の更新告知が280個であったのに対し、2014年ではイベント当日の4月18日時点ですでに100件超となっていると、荒木氏はまず報告しました。更新内容の大小規模はそれぞれですが、サービス・機能追加のリリース速度はさらに勢いを増していることが伺えます。
2014年、現時点までに追加されたネットワーク系の機能拡張について、以下の項目群を列挙しつつ、個別の内容について荒木氏は解説を加えていきます。「ELBのロギング機能」「ELB PFS(Perfect Forward Secrecy)対応」「CloudFrontのSNI(Server Name Identification)対応」の3点を「ぜひともすぐに、このイベントが終わって帰宅したら試してみて欲しい」と強調。これら3点に加えて主だったものをピックアップしてみました。
- ELBのロギング対応……S3に保存可能。各プロセスの処理時間も記録されることで、どこで時間が掛かっているのかも分かるように。
- ELB PFS(Perfect Forward Secrecy)対応……暗号化通信のセキュリティを高めるための仕組み。一時的な情報であるセッションキーを暗号化通信に利用し、通信内容が復元される可能性を低減。
- VPC Peering……AWS同一リージョン内のVPC間に、ピアリング接続を作成することが可能に。Inviteという処理を行い、相手側が承認することでVPC間接続が実現できる。
- CloudFrontのSNI(Server Name Identification)対応……HTTPSをユーザーが独自仕様書なしで利用可能に。これまでは同じ対応をする場合、別途設定作業が必要となり、また利用料金も追加で払わなければならなかった。
- CloudFront EDNS-Client-Subnetサポート……遠いエッジロケーションにコンテンツのリクエストがルーティングされる可能性があったのが、これに対して追加の情報を返すことでより良い対応が行えるようになった。
実際に参加した印象では、このセッションが「細かすぎて伝わらない」度合いで行くと一番その傾向が強かったような気がしています。しかし、紹介された要素はどれも非常に重要なものばかり。イベント開催の数日前に「HeartBleed」騒動が世間を賑わせたことを受け、当日は星氏を含め言及している方々が数名おりました。ネットワーク、セキュリティ周りはシステム構築を行う上で重要なポイントです。今回の更新内容についても可能な限りキャッチアップを行い、強化を図るべきではないでしょうか。
ライトニングトークも本編同様「カジュアル」だった
本編終了後はLTも4本発表がありました。「EC2 Spot Instance+Spark+MLlib」「Elastic Beanstalk用のCLI:ebfly」「.NET Framework+Redshift+Data Pipeline」「CloudSearch」と、こちらの内容も本編セッション同様内容の濃いものばかり。5分の尺では正直もったいないな、もっとじっくり聞いてみたいなというものばかりでした。
本編4本+LT4本、都合8本の「カジュアル」なAWSテーマに登壇者・参加者も満足な表情だったような気がします(そしてそのカジュアルさに若干ゲッソリした感も?(笑))。
主催者である@con_mame氏が「カジュアルにAWSとかその周辺の普段はあまり出てこない深い(深淵な)ことを話す会」を作ろうと思い立ち始まったこの「AWS Casual Talks」シリーズ。次回第3回の開催も楽しみです。
なお、イベントの詳細なメモも記録した速報レポートをDevelopers.IOのエントリーでも紹介していますので、ぜひ併せて参考にしてください。
