SlideShare una empresa de Scribd logo
1 de 23
#jawsdays #jd2017_a
#jawsdays #jd2017_a
自己紹介
氏名:金平晃尚
職業:フリーランス(2016年3月末~)
得意:インフラ、データベース、プログラミング
好きな言語: Java, Python
好きなAWSサービス:Lambda, EMR
JAWS:CLI専門支部、アーキテクチャ専門支部、ビッグデータ支部
AWS:2016/6から本格使用開始、2016/12 Re:Invent自費参加
資格:
Since 2017/03/09(木)
#jawsdays #jd2017_a
今日のお話の全体構成図
Office
Direct Connect
VPN
connection
Cloud Front Route 53
RDS DB
instance
RDS DB
instancestandby(multi-
AZ)
AWS Directory
Service
Amazon API
Gateway
Amazon
Cognito
AWS
Lambda
Amazon
DynamoDB
Amazon
S3
AMI
Auto Scaling
EC2
Amazon
Provided
DNS
EC2
Staging
server
Prod
server
Prod
server
Bastion
server
corporate data center
EC2
Elastic Load Balancing
EC2
DNS Server
#jawsdays #jd2017_a
マイクロサービスアーキテクチャ(1/2)
EC2, RDSで作る3層構成は
オンプレから比較的簡単に移行できるパターン
でも維持費はけっこうかかるので対策したい
1.リザーブド/スポットインスタンスを使ったり
処理のピークに合わせてスケールさせる
2.使った分だけ支払いのAWSマネージドサービスを活用する
EC2:1時間単位の料金設定
Lambda:100ミリ秒単位の料金設定
マイクロサービス
アーキテクチャと
相性がいい
#jawsdays #jd2017_a
マイクロサービスアーキテクチャ(2/2)
一枚岩(モノリシック)な大きなシステムを作りこむのでなく、
小さなサービスを組み合わせてシステムを作る
特徴 効果
サービス単位の組織 意思疎通しやすい規模
サービス間は疎結合で
外部インターフェース間でのみ通信
内部実装はチームごとに自由に作れる
バージョンアップも単独実施可能
サーバに状態を持たない
ステートレス、イミュータブル
環境の複製、再作成が簡単
必要なサービスだけスケールできる
各サービスの実装は比較的簡単 単体テストは易しい
総合テストは難しい
処理の自動化 コード修正後勝手にテストなど
早いリリースサイクルを実現
#jawsdays #jd2017_a
マネージドサービスの活用(1/2)
マネージドサービスへ
の置き換え
特徴と対応
EC2 ⇒ Lambda 最大メモリ1.5GB。最大処理時間5分。3回リトライ。
まれに発火しないときがある。
何度実行しても同じ結果を返すように実装すること。
EBS ⇒ S3 大容量のストレージ。結果整合性。安い。
データをローカルに持ってくるところからはじめる。
RDS ⇒ DynamoDB スループット保証のKVS。札束でたたくと強くなる。
トランザクションは自前での実装が必要。
監視 = CloudWatch 総合テストが難しいのは流れを見失いがちなため。
トランザクションIDを取りまわすなど工夫を。
新サービスX-Ray が解決してくれるかもしれない。
AWS X-Ray
#jawsdays #jd2017_a
マネージドサービスの活用(2/2)
• 最適に活用すれば維持/管理コストが下げられる
– 目的を達成する方法が複数ある
– サービスが多すぎて最適な設計がわからない
⇒最適解は用途と規模と時代で変わるので、
持っているスキル・開発期間・リスク・リターンを考慮して適宜見直していく。
効果が高い部分から順番に対応していく。
既存システムの置き換えをやる前に
簡単な新規サービスで使ってみてノウハウを貯めるなど。
疎結合な設計なら部分的に見直せる。
汎用性の高いものはCDPにしていきたい。
#jawsdays #jd2017_a
解決したい課題1
• サーバを使わずに動的なWebサービスを作りたい
• 独自ドメインを使いたい
• HTTP/2を使いたい
• 800GET/秒を超えるアクセスをさばきたい
• ユーザを管理したい
• コストを削減したい
#jawsdays #jd2017_a
Amazon
Route 53
AWS
Lambda
Amazon
DynamoDB
Amazon
CloudFront
Amazon API
Gateway
users
Amazon
Cognito
Amazon
S3
Cognito UserPoolsでユーザを管理
認証した人だけAPI Gatewayにアクセス可能
マルチデバイス/アカウント対応な実装も可能
静的なコンテンツはS3へ配置
動的な処理はjavascriptのライブラリで通信
APIGateway+cognito認証パターン(1/2)
とりあえず認証だけCognito使って
コンテンツはEC2というのも可能
サーバレスで会員専用サイトを作るパターン
①
②
③
④
ドメインはRoute53で管
理
#jawsdays #jd2017_a
APIGateway+cognito認証パターン(2/2)
利点
• ユーザ認証した人だけがAPIを実行できる
• Facebookやtwitterアカウントでのログオンも作れる
( Cognito Federated Identities )
• 各言語向けSDKがあるので
バックエンドはアプリと共通化できる
注意点
• CognitoのUserPoolsを直接使うときと
Federated Identitesを使うときで
認証の書き方が違うのでハマりやすい
#jawsdays #jd2017_a
解決したい課題2
• URLへの初回アクセス時にコンテンツを生成し、
2回目以降は同じ内容のコンテンツを返したい
例)
• 検索キーワードを元にコンテンツを生成するなど事前処理が難しい場合
• 対象データ量は膨大だけどアクセスされるURLが限定されているため
ディスク容量を節約したい場合
• コンテンツ生成処理にAPIスロットリング制限があって
生成の回数を減らしたい場合
#jawsdays #jd2017_a
Amazon
S3
Amazon
CloudFront
AWS
Lambda
users
Amazon
Route 53
Amazon API
Gateway
すべてのファイルをキャッシュしないカスタム設定
ファイルがないとき(404)は生成処理へのリ
ダイレクト(307)を返すリダイレクトルール
必要なら仮のファイルをS3に設置して
時間稼ぎ
コンテンツ遅延生成パターン(1/2)
URLへの初回アクセス時にコンテンツを生成し、
2回目以降は同じ内容のコンテンツを返したいときのパターン
① ②
③
本物のファイルはキャッシュ設定をつけ
た上で設置
#jawsdays #jd2017_a
コンテンツ遅延生成パターン(2/2)
利点
• 大きいキャッシュを持つより安い
注意点
• CloudFrontはデフォルトでは307 Temporary Redirectでさえも
キャッシュするのでカスタム設定が必要
• キャッシュが必要なファイルには明示的にS3タグを指定
• S3の低冗長化ストレージ(RRS)を使えばコスト削減?
2016年12月以降、東京リージョンはRRSの方が高くなった。
というかシンガポール・ムンバイ・サンパウロ以外全部高い!
Qiita記事: http://qiita.com/kyane/items/7e093ed5b4478181b491
#jawsdays #jd2017_a
解決したい課題3
• 時間のかかる重たいAPIの処理結果を受けて別の処理を走らせたい
≒処理が終わるのを数分間隔でポーリングしたい
例)
実店舗の在庫数とオンラインショップの在庫数を
合わせるために在庫ファイルをアップロードする
#jawsdays #jd2017_a
SQS
AWS
Lambda
AWS
Lambda
時間のかかる処理が終わるまでポーリングするパターン
何かのWebサービス
AWS
Lambda
①重たいリクエスト ③ステータス確認のポーリング
NG:遅延QUEUEに再度投入
OK:結果を取得して次の処理へ
API処理結果ポーリングパターン(1/4)
NG
OK
②遅延QUEUEで数分後
にポーリング
遅延はSQSで実現できそうだけど
SQSはプル型のサービスなのでLambdaは直接連携できない・・・・
?
#jawsdays #jd2017_a
SQS
AWS
Lambda
AWS
Lambda
CloudWatchEvent(linuxでいうところのcron)を使う
何かのWebサービス
AWS
Lambda
①重たいリクエスト ③ステータス確認のポーリング
NG:遅延QUEUEに再度投入
OK:結果を取得して次の処理へ
API処理結果ポーリングパターン(2/4)
NG
OK
②遅延QUEUEで数分後
にポーリング
CloudWatch
Event
(time-based)
⇒SQSはGetしてもQueueの内容を全部取れない。
CloudWatchイベントは最小1分間隔。思ったよりさばけない。
#jawsdays #jd2017_a
AWS Elastic
BeanstalkSQS
AWS
Lambda
AWS
Lambda
ElasticBeanstalkのWorkerを使う
何かのWebサービス
AWS
Lambda
①重たいリクエスト ③ステータス確認のポーリング
NG:遅延QUEUEに再度投入
OK:結果を取得して次の処理へ
API処理結果ポーリングパターン(3/4)
NG
OK
②遅延QUEUEで数分後
にポーリング
BeanstalkのWorkerはSQSのメッセージを処理するEC2上のWebサーバ
Lambdaを同期実行するだけの処理を書く
#jawsdays #jd2017_a
API処理結果ポーリングパターン(4/4)
利点
• ElasticBeanstalkはEC2で実装するより手間がかからない
(SQSメッセージの削除、サーバの再起動)
• Lambdaを呼ぶだけならWorkerはt2.nanoでバーストしないでいけた。
(東京オンデマンド $0.008/h ≒ $5.76/月、マルチAZ考慮なら2倍)
• Workerに直接処理を書いた場合はNWかCPUがネックになるはず
注意点
• SQSの遅延は最大15分なのでそれ以上は小細工が必要
#jawsdays #jd2017_a
AWS Step Functions
これStep Functionsでよくね?
#jawsdays #jd2017_a
Step Functionsとは(1/2)
• Re:Invent 2016で発表された新サービス
• Lambdaなどの処理を状態遷移図に従って動かせるようにしたもの
• SWFのフローをJSONで書けるようにした感じ?
• 料金は(実行回数でなく)状態遷移回数に依存
– $0.000025/状態遷移回数
• API実行回数はリージョン毎に制限されている
– 状況により緩和申請を検討
– 同時実行数は1,000,000までOK
Bucket Refill Rate/sec
新規実行 100 回 2 回/秒
Activity関連 1,000 回 10 回/秒
#jawsdays #jd2017_a
Step Functionsとは(2/2)
Type 説明
Task Lambda: プッシュ型実行
Activity: プル型実行
Parallel すべての処理が完了したら次の状態へ。
並列度は動的には変更できない
Choice 変数の値により次の状態を切り替える分岐
Wait 指定した時間 or 日時まで待つ(最大1年)
Pass 何もしない
Succeed 正常終了
Fail 異常終了
ステートマシン - 状態遷移図に従った動作(Amazon State Language(JSON))で定
義)
#jawsdays #jd2017_a
API処理結果
ポーリングパターン(Step Functions版)
1回リトライすると遷移回数は9回。
1,000ユーザのタスクを1時間に1回実行するケース
• API制限そのままだと全部実行するには1,800秒かかる
• 料金は
$0.000025 × 9回 × 24時間 × 30日 × 1,000人 = $162
⇒1,000人ずつ処理する方式にすると$0.162になるけど
– Lambdaのメモリ、処理時間の確認
– 全員分の処理が完了したあとに次のステータス
– 外部インターフェイスが変わる調整
• まとめて実行できるならStep Functions
• 単発リクエストがいっぱい来るなら遅延SQS かな?
#jawsdays #jd2017_a
まとめ
• 状況・時代によって最適なアーキテクチャは変わる
• 運用・管理のしやすさも考慮しないと
⇒やっぱり難しい。。
次回の JAWS-UG アーキテクチャ専門支部
3/21(火)ハイブリッドクラウド分科会 CDP取りまとめ会 #4
アーキテクチャ専門支部で一緒に検討しましょう!

Más contenido relacionado

La actualidad más candente

サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
クラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャクラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャKeisuke Nishitani
 
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)Toshihiro Setojima
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すMasayuki Kato
 
JAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia TalkJAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia Talk真吾 吉田
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことTerui Masashi
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部Daisuke Nagao
 
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜宗 大栗
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントKeisuke Nishitani
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)Keisuke Kadoyama
 
Introducing Serverless Computing (20160802)
Introducing Serverless Computing (20160802)Introducing Serverless Computing (20160802)
Introducing Serverless Computing (20160802)Keisuke Nishitani
 
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築Hyunmin Kim
 
Androidを中心に紐解くIoT
Androidを中心に紐解くIoTAndroidを中心に紐解くIoT
Androidを中心に紐解くIoTKeisuke Nishitani
 
Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]真吾 吉田
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without ServersKeisuke Nishitani
 
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオンKeisuke Kadoyama
 
Morning Session - AWS Serverless Ways
Morning Session - AWS Serverless WaysMorning Session - AWS Serverless Ways
Morning Session - AWS Serverless Waysakitsukada
 

La actualidad más candente (20)

サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
クラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャクラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャ
 
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指す
 
JAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia TalkJAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia Talk
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
 
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
 
Introducing Serverless Computing (20160802)
Introducing Serverless Computing (20160802)Introducing Serverless Computing (20160802)
Introducing Serverless Computing (20160802)
 
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
 
Androidを中心に紐解くIoT
Androidを中心に紐解くIoTAndroidを中心に紐解くIoT
Androidを中心に紐解くIoT
 
Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without Servers
 
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
[JAWS DAYS 2017 ワークショップ] 不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン
 
Serverless Revolution
Serverless RevolutionServerless Revolution
Serverless Revolution
 
Morning Session - AWS Serverless Ways
Morning Session - AWS Serverless WaysMorning Session - AWS Serverless Ways
Morning Session - AWS Serverless Ways
 

Destacado

サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事Hiroyuki Hiki
 
20170311 jawsdays 公開
20170311 jawsdays 公開20170311 jawsdays 公開
20170311 jawsdays 公開Hideki Ojima
 
JAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃい
JAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃいJAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃい
JAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃいiwata jaws-ug
 
JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜
JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜
JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜Yasuaki Yoshimitsu
 
PIXTAにおけるCloudSearchのコスト削減
PIXTAにおけるCloudSearchのコスト削減PIXTAにおけるCloudSearchのコスト削減
PIXTAにおけるCloudSearchのコスト削減PIXTA Inc.
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」Yotaro Fujii
 
日本語でおk AI スピーカーを作ってみた
日本語でおk AI スピーカーを作ってみた日本語でおk AI スピーカーを作ってみた
日本語でおk AI スピーカーを作ってみた崇之 清水
 
子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜
子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜
子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜Akira Nagata
 
Workshop: Docker on Elastic Beanstalk
Workshop: Docker on Elastic BeanstalkWorkshop: Docker on Elastic Beanstalk
Workshop: Docker on Elastic Beanstalk輝 子安
 
(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014
(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014
(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014Amazon Web Services
 
AWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAmazon Web Services Japan
 
Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)
Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)
Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)Amazon Web Services Korea
 
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」Yusuke KUROIWA
 

Destacado (16)

サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
20170311 jawsdays 公開
20170311 jawsdays 公開20170311 jawsdays 公開
20170311 jawsdays 公開
 
JAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃい
JAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃいJAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃい
JAWS DAYS 2017 [AWSワークショップ] AWS初心者いらっしゃい
 
JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜
JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜
JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第三部 IAMの鼓動はログ〜
 
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
 
PIXTAにおけるCloudSearchのコスト削減
PIXTAにおけるCloudSearchのコスト削減PIXTAにおけるCloudSearchのコスト削減
PIXTAにおけるCloudSearchのコスト削減
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
 
日本語でおk AI スピーカーを作ってみた
日本語でおk AI スピーカーを作ってみた日本語でおk AI スピーカーを作ってみた
日本語でおk AI スピーカーを作ってみた
 
子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜
子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜
子ども向けプログラミング道場を運営してみたお話し〜CoderDojo長岡京と、時々、EC2〜
 
Workshop: Docker on Elastic Beanstalk
Workshop: Docker on Elastic BeanstalkWorkshop: Docker on Elastic Beanstalk
Workshop: Docker on Elastic Beanstalk
 
mizuderuからnekoderuへ
mizuderuからnekoderuへmizuderuからnekoderuへ
mizuderuからnekoderuへ
 
(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014
(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014
(SDD411) Amazon CloudSearch Deep Dive and Best Practices | AWS re:Invent 2014
 
AWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWS
 
Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)
Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)
Cross-regional Application Deplolyment on AWS - Channy Yun (JAWS Days 2017)
 
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」
 

Similar a jawsdays 2017 新訳-とある設計士の雲設計定石目録_3

2011-04-21 クラウド勉強会
2011-04-21 クラウド勉強会2011-04-21 クラウド勉強会
2011-04-21 クラウド勉強会Koichiro Doi
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - SORACOM, INC
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーションde:code 2017
 
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャYasuhiro Matsuo
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Yasuhiro Horiuchi
 
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太schoowebcampus
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startupsakitsukada
 
非公式PaaS勉強会~新宿d社会議室
非公式PaaS勉強会~新宿d社会議室非公式PaaS勉強会~新宿d社会議室
非公式PaaS勉強会~新宿d社会議室Daisuke Masubuchi
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessKeisuke Nishitani
 
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...Naoki (Neo) SATO
 
AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)Keisuke Nishitani
 
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)Takehito Tanabe
 
AWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイド
AWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイドAWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイド
AWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイドTrainocate Japan, Ltd.
 
AWS クラウドで構築するスマホアプリ バックエンド
AWS クラウドで構築するスマホアプリ バックエンドAWS クラウドで構築するスマホアプリ バックエンド
AWS クラウドで構築するスマホアプリ バックエンドkaki_k
 
AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価Trainocate Japan, Ltd.
 
クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化Trainocate Japan, Ltd.
 
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪真吾 吉田
 

Similar a jawsdays 2017 新訳-とある設計士の雲設計定石目録_3 (20)

2011-04-21 クラウド勉強会
2011-04-21 クラウド勉強会2011-04-21 クラウド勉強会
2011-04-21 クラウド勉強会
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 -
 
AWS Black Belt - AWS Glue
AWS Black Belt - AWS GlueAWS Black Belt - AWS Glue
AWS Black Belt - AWS Glue
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション
 
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 ~メディア露出時のピーク対策編~ 先生:高山 博史・今井 雄太
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startups
 
20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db
 
非公式PaaS勉強会~新宿d社会議室
非公式PaaS勉強会~新宿d社会議室非公式PaaS勉強会~新宿d社会議室
非公式PaaS勉強会~新宿d社会議室
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
 
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
 
AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)
 
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
 
AWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイド
AWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイドAWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイド
AWS White Belt Guide 目指せ黒帯!今から始める方への学び方ガイド
 
AWS クラウドで構築するスマホアプリ バックエンド
AWS クラウドで構築するスマホアプリ バックエンドAWS クラウドで構築するスマホアプリ バックエンド
AWS クラウドで構築するスマホアプリ バックエンド
 
AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価
 
クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化
 
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
 

jawsdays 2017 新訳-とある設計士の雲設計定石目録_3

Notas del editor

  1. 金平晃尚です。職業はフリーランス、9年間SIの会社でOracleDBを中心にインフラ全般の担当をしていましたが、自由な開発がしたくて去年の3月にフリーになりました。 よく参加する支部はCLI専門支部、アーキテクチャ専門支部、ビッグデータ支部です。 AWSは去年の6月にAWS Summitへ参加したのをきっかけに本格的に利用を開始しました。JAWSへ参加するようになったのもこの頃です。 12月のRe:Inventにも自費で参加してきました。 一昨日、この発表でプロって言いたいがために、ソリューションアーキテクトのプロフェッショナルになりました。
  2. 私はこの部分について話します。 今回はマネージドサービスを活用したパターンということで、3つ持ってきましたので順番に説明します。 が、その前に 考え方の話をします。
  3. EC2(仮想サーバ)とRDS(データベース)で作る3層構成は オンプレから比較的簡単に移行できるパターンなのですが、 使った分だけ支払いのAWSのサービスの中でも結構利用料がかさむところです。 対策としては、ひとつは「リザーブド/スポットインスタンスを使ったり処理のピークに合わせてスケールさせる」というのが比較的簡単にできるものです。 もう一つはもっとAWSのサービスを活用する方法です。 EC2でいうと、1時間単位の料金が設定されているのですが、WebサーバとかはCPU利用率が低くても24時間つけっぱなしなので、費用が高くなるのですが、 Lambdaというサービスがあって、これは100ミリ秒単位で、本当にCPUを使った時間だけに課金される体系になっています。何もしていない時間には課金されません。 AWSがよろしくやってくれるマネージドサービスはマイクロサービスアーキテクチャの考え方で使うことも検討してください。
  4. オライリーから「マイクロサービスアーキテクチャ」という名前の本が去年の2月に出ているのですが、それを読んで勉強しました。 ・サービス単位の組織   インフラG 業務開発G 試験G という分け方でなく、提供するサービスごとに インフラできる人、開発できる人を用意するやり方 ・サービス間は疎結合で外部インターフェース間でのみ通信  内部実装はチームごとに自由に作れる。バージョンアップも単独実施可能。 ・サーバに状態を持たない、ステートレスとかイミュータブルとかいうものです    これ同じ入力に対しては常に同じ結果を返すと言い換えることができます。    ボトルネックを作らない 必要なサービスだけスケールできる ・各サービスの実装は比較的簡単   単体テストは易しい。総合テストは難しい。 ・処理の自動化    コード修正後勝手にテストなど、早いリリースサイクルを実現 この本の1章の最後には「銀の弾丸などない」という話もあり、どんな状況でもマイクロサービスアーキテクチャという選択でもないというところは気を付けてください 興味ある方は読んでみてください。
  5. EBS いわゆるローカルディスクです。 RDS
  6. ここから3つの課題を解決するパターンを紹介します。
  7. Route53はDNS CloudFrontはCDN(コンテンツデリバリネットワーク) ここでは簡単にしか説明しないので、気になる方は 14時からのBトラック 「サーバレスの今と未来」吉田 真吾さん へ行きましょう。
  8. APIのスロットリング制限を回避したい
  9. S3でWebホスティングの設定をONにします。 その際の設定で、HTTPステータスコード 404のファイルがないエラーのときに生成処理へリダイレクトしようというのが基本的なアイディアです。 ここで回避しないといけないのがCloudFrontでキャッシュしてしまう問題です。 リダイレクトはキャッシュしないで、コンテンツを置いた後はキャッシュするのが理想ですね。 CloudFrontはデフォルトでは 307 Temporary Redirect さえもキャッシュする仕様なので、これを回避しないと毎回ファイル生成処理をしてしまうという問題がおこります。 CloudFrontでキャッシュをする・しないという設定は、S3側ファイルのHTMLのヘッダ情報で上書きすることができます。 そのヘッダ情報の指定はS3ファイルに対するタグ付けで行います。 デフォルトではキャッシュするけど、キャッシュしたくないファイルにはCache-Control “no-cache“ と書いたりします。 今回の場合、404リダイレクト時にキャッシュしたくないのですが、リダイレクトルールにも独自ヘッダをつける方法がありません。 なので、逆の考えで、デフォルトではキャッシュせず、全部のファイルに明示的にキャッシュ期限をタグ付けすることで実現します。
  10. いつでも生成処理に回せるならS3の冗長性を下げても問題ないので、それでコスト削減もできます、っていうつもりでしたが、2016年12月の値下げで、RRSの方が高くなっています。
  11. EC2ならSleepすればいいだけだけど、Lambdaは処理時間にお金がかかるので中でSleepしたくない。 ここで使えるのがSQSです。SQSには一定時間遅延させたあとに取得できるようになる使い方ができます。 遅延自体はSQSで実現できそうなんですけど、SQSはプル型サービスなので、受ける側が口開けて待ってる必要があります。Lambdaを直接呼ぶことはできません。 なので、Lambdaと連携させるにはこの「?」で書いた部分に何か別のサービスを入れたいのですが、、、 皆さんはどんなサービスをあてはめますか?
  12. CloudWatchのEventはどうでしょうか? LinuxでいうCronみたいな使い方ができるもので、定期的にLambdaをキックしてSQSを取りに行かせるパターンです。 これも動きはするのですが、いくつか問題があります。 SQSは1回のGetで最大10件取得できる仕様なんですが、全部取れるわけではありません。20件キューにたまってたとして、5件取れる時もあれば8件取れる時もあり、あんまり安定しません。 また、CloudWatchもCronと同じく最小単位が1分なので、思ったよりさばけないという結果になります。
  13. 私が実装したのはここにElasticBeanstalkのWorkerを使う方法です。 Beanstalk Workerの実態はSQSのメッセージを処理するEC2上のWebサーバです。 管理はEC2より簡単で、ソースコードをZIPに固めてアップロードするとあとはよろしくオートスケールとかSQSとの連携とかやってくれるWebサーバです。 このWorkerの処理の中身として、入力引数をLambdaに丸投げするだけの処理を書いたものを作るというのが解決パターンです。 これを動かすと、SQSからは即座にメッセージを取得して、WebサーバのプロセスはLambdaの結果を待つだけのsleep処理を50多重くらいで行うという形になるので、負荷が全然かかりません。 私の実験ではt2.nanoインスタンス1台でも結構な量をさばけました。Workerに直接処理を書くよりも安く実装でます。
  14. 直接Workerの処理に書いた方がいいんじゃない?という声もありますが、t2.nanoのNW帯域はしょぼいので
  15. 答えはYesです。
  16. 7つの状態を組み合わせて状態遷移図(Amazon State Language (JSON))を書く
  17. 1800秒 = 30分