JAWS-UG KANSAI特別編

AWSのフルマネージドサービス活用による

ネイティブクラウドシステムへの誘い
サービス紹介編
Amazon Simple Queue Service (SQS)
2015年 2月7日
JAWS-UG沖縄 西島
@k_nishijima
@k_nishijima http://about.me/k15a
皆様はじめまして!
沖縄から来ました
西島と申します
@k_nishijima http://about.me/k15a
あんた誰?
西島 幸一郎 / にしじま こういちろう



JAWS−UG沖縄の副代表
AWS 認定ソリューションアーキテクト
AWSサムライ2014拝命
@k_nishijima http://about.me/k15a
さて
Amazon Simple Queue Service
(SQS)

とは?
@k_nishijima http://about.me/k15a
*知らない人
*知ってる人
*使ってる人
@k_nishijima http://about.me/k15a
このアンケートによって
内容変えないといけない
ですが・・・(^^ゞ
@k_nishijima http://about.me/k15a
勝手に想像・・・
裏がLambdaだし・・・
それでもSQSに来てる人って、
きっとマニアだよね?
@k_nishijima http://about.me/k15a
というわけでアジェンダ
✤ そもそもキューって何?
✤ SQSの概要
✤ 使いどころ
@k_nishijima http://about.me/k15a
そもそもキュー(Queue)とは?
アルゴリズムで習ったよね?
基本的にはFIFOなデータ構造
Enqueue Dequeue
@k_nishijima http://about.me/k15a
箱を縦にしたら・・・
これスタック
基本的にはLIFO / FILOなデータ構造
http://stackoverflow.com/
@k_nishijima http://about.me/k15a
複数のサーバがネットワーク
越しに使うと・・・?
データ構造からミドルウェアへ
頼むぞ 頼まれた
workersclient
キューを提供する

ミドルウェア/サービス
@k_nishijima http://about.me/k15a
キューの実装
Javaならjava.util.Queueインターフェイ
スの各実装クラス
分散環境やJavaEEならJMSの各実装
ActiveMQとかOpenJMSとか色々
@k_nishijima http://about.me/k15a
キューの実装
RubyならQueueクラス
分散環境ならRabbitMQとかZeroMQとか

(ZeroMQはミドルウェアではないけど・・・)
@k_nishijima http://about.me/k15a
Amazon SQSは

AWSが提供する

メッセージキューサービス
EC2/S3と並び
最古参サービスの1つ
@k_nishijima http://about.me/k15a
Amazon SQSの特徴
フルマネージド / スケーラブル / 高い信頼性
詳しくは

【[AWSマイスターシリーズ] Amazon SQS /
SNS】をチェック

http://www.slideshare.net/
AmazonWebServicesJapan/aws-31275003
@k_nishijima http://about.me/k15a
Amazon SQSの特徴
フルマネージド / スケーラブル / 高い信頼性
詳しくは

【[AWSマイスターシリーズ] Amazon SQS /
SNS】をチェック

http://www.slideshare.net/
AmazonWebServicesJapan/aws-31275003
っていうと
話が終わっちゃう!
@k_nishijima http://about.me/k15a
なので今日は
重要なポイントと
最近のアップデートを

追いかけてみます
@k_nishijima http://about.me/k15a
SQSの特徴:最重要2点
メッセージの順序は保証されない

(先ほどのFIFOとかFILOとかではない)
最低1度のメッセージ到達を保証

(同じメッセージを複数回受信するかも)
@k_nishijima http://about.me/k15a
2014年2月以降の
アップデート
@k_nishijima http://about.me/k15a
2014年5月アップデート/
Message Attributes
メッセージに型を指定した属性を付与できる
String/Number/Binary型(+独自型もOK)
http://docs.aws.amazon.com/ja_jp/
AWSSimpleQueueService/latest/
SQSDeveloperGuide/
SQSMessageAttributes.html
@k_nishijima http://about.me/k15a
2014年5月アップデート/
Message Attributes
本文にJSON使ってメタ情報加えれば
いいじゃない!
→否定はしませんが(^^;

本文を読む前に型安全な属性を読んで
処理できたほうが、読む側は楽になる
@k_nishijima http://about.me/k15a
2014年7月アップデート/
AWS CloudTrail対応
以下のアクションをロギング
AddPermission
CreateQueue
DeleteQueue
RemovePermission
SetQueueAttributes
@k_nishijima http://about.me/k15a
2014年12月アップデート/
PurgeQueue機能追加
キューのメッセージを全部削除
開発中などにとても便利に使える
本番環境のキューに投げないでね!

(Truncate Tableなみに死亡フラグ)
@k_nishijima http://about.me/k15a
2014年12月アップデート/
SQS Client Library for Java Messaging Service
やっと公式のブログネタに!
http://aws.typepad.com/aws_japan/2015/01/new-sqs-client-library-for-java-messaging-service-jms.html
@k_nishijima http://about.me/k15a
2014年12月アップデート/
SQS Client Library for Java Messaging Service
使い方は以下「Using JMS with Amazon SQS」

http://docs.aws.amazon.com/
AWSSimpleQueueService/latest/
SQSDeveloperGuide/jmsclient.html
メッセージが届いたらリスナーのonMessageが
呼ばれる = Message-Driven Beanライクに!
@k_nishijima http://about.me/k15a
で、どんな所に使える?
@k_nishijima http://about.me/k15a
http://aws.clouddesignpattern.org/
AWS Cloud Design Pattern
@k_nishijima http://about.me/k15a
SQSの使いどころ
CDP:Job Observerパターン
http://aws.clouddesignpattern.org/
@k_nishijima http://about.me/k15a
SQSの使いどころ
CDP:Priority Queueパターン
http://aws.clouddesignpattern.org/
@k_nishijima http://about.me/k15a
SQSを上手に活用して
コンポーネント間を

うまく疎結合にしましょう!
@k_nishijima http://about.me/k15a
ありがとうございました!

20150207 サービス紹介編 Amazon Simple Queue Service (SQS)