Submit Search
LocalStack
1 like
2,680 views
C
chibochibo
mock framework for AWS services 第十九回 #渋谷java
Presentations & Public Speaking
Read more
1 of 43
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
More Related Content
PDF
Crawler Commons
chibochibo
PDF
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
真治 米田
PDF
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
PDF
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
ODP
高トラフィックサイトをRailsで構築するためのTips基礎編
Kazuya Numata
PPTX
20161208 Classmethod Codenize Tools
Kazuki Ueki
PDF
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
Yuki KAN
PPTX
AWS CLIでEC2の利用料金を節約する
Yasuyuki Sato
Crawler Commons
chibochibo
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
真治 米田
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
高トラフィックサイトをRailsで構築するためのTips基礎編
Kazuya Numata
20161208 Classmethod Codenize Tools
Kazuki Ueki
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
Yuki KAN
AWS CLIでEC2の利用料金を節約する
Yasuyuki Sato
What's hot
(20)
PDF
S3 を単純ストレージとして 利用する手段の比較
真治 米田
PDF
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
PDF
Jenkinsとhadoopを利用した継続的データ解析環境の構築
VOYAGE GROUP
PPT
[大図解]ピグライフはこう動いている
Akihiro Kuwano
PDF
Reactとbabelで簡易タスク管理ツール作ってみた
Tsuyoshi Maeda
PDF
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
PPTX
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
PDF
Re-frame and A-Frame
Kazuhiro Hara
PDF
Babelで先取り次世代javascript
Tsuyoshi Maeda
PPTX
LINE API × heroku ×selenium
医療IT数学同好会 T/T
PDF
Rancher Meetup Tokyo #4 Intro
Yosuke Shindo
PPTX
はじめての datadog
Naoya Nakazawa
PDF
Service worker が拓く mobile web の新しいかたち
Kinuko Yasuda
PPTX
Grunt入門
Tsuyoshi Maeda
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
Yuuki Namikawa
PPTX
Amazon EKS への道 ~ EKS 再入門 ~
Hideaki Aoyagi
PDF
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
Toshiyuki Konparu
PDF
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
Masafumi Noguchi
PDF
Vsug day 2010 summer windows azure でやってみよう
mizusawa
PDF
Nginx
Soichi Takamura
S3 を単純ストレージとして 利用する手段の比較
真治 米田
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
Jenkinsとhadoopを利用した継続的データ解析環境の構築
VOYAGE GROUP
[大図解]ピグライフはこう動いている
Akihiro Kuwano
Reactとbabelで簡易タスク管理ツール作ってみた
Tsuyoshi Maeda
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
Re-frame and A-Frame
Kazuhiro Hara
Babelで先取り次世代javascript
Tsuyoshi Maeda
LINE API × heroku ×selenium
医療IT数学同好会 T/T
Rancher Meetup Tokyo #4 Intro
Yosuke Shindo
はじめての datadog
Naoya Nakazawa
Service worker が拓く mobile web の新しいかたち
Kinuko Yasuda
Grunt入門
Tsuyoshi Maeda
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
Yuuki Namikawa
Amazon EKS への道 ~ EKS 再入門 ~
Hideaki Aoyagi
JAWS-UG Osaka 2013.11.02 Feel the Elesticity v2.0
Toshiyuki Konparu
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
Masafumi Noguchi
Vsug day 2010 summer windows azure でやってみよう
mizusawa
Nginx
Soichi Takamura
Ad
Viewers also liked
(8)
PDF
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
PDF
Web開発の技術選び、 好き嫌いでやってませんか 〜技術選びで注目すべきポイントとは〜
Yuki Okada
PDF
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
PDF
Elasticsearchと機械学習を利用したbot基盤
takahito takabayashi
PDF
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida
PPTX
リクルートを支える横断データ基盤と機械学習の適用事例
Tetsutaro Watanabe
PDF
3000社の業務データ絞り込みを支える技術
Ryo Mitoma
PDF
こわくない Git
Kota Saito
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
Web開発の技術選び、 好き嫌いでやってませんか 〜技術選びで注目すべきポイントとは〜
Yuki Okada
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Elasticsearchと機械学習を利用したbot基盤
takahito takabayashi
MySQLユーザ視点での小さく始めるElasticsearch
Kentaro Yoshida
リクルートを支える横断データ基盤と機械学習の適用事例
Tetsutaro Watanabe
3000社の業務データ絞り込みを支える技術
Ryo Mitoma
こわくない Git
Kota Saito
Ad
Similar to LocalStack
(20)
PDF
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Takuro Sasaki
PDF
現場開発者視点で答えるWindows Azure
Keiichi Hashimoto
PPTX
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
Kazumi OHIRA
PPTX
インフラ系自主トレするならAWS
Yasuhiro Araki, Ph.D
PDF
Amazon ec2とは何か?
Shinya_131
PPTX
Windows azureって何
Kana SUZUKI
PDF
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
PPTX
AWS活用のいままでとこれから -東急ハンズの事例-
Taiji INOUE
PDF
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
PPTX
Osc spring 20220311
Yasuaki Sera
PDF
仮想通貨取引所 bitbank の IaC の導入と実践
bitbank, Inc. Tokyo, Japan
PDF
JAWS-UG鹿児島 初心者向け簡単講座
Serverworks Co.,Ltd.
PDF
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
Daisuke Masubuchi
PDF
[MW11] OSS on Azure で構築する ウェブアプリケーション
de:code 2017
PPTX
サーバ構築・デプロイが簡単に!Elastic beanstalk
Hirokazu Ouchi
PDF
これでAWSマスター!? 初心者向けAWS簡単講座
Serverworks Co.,Ltd.
PPTX
PHP on Cloud
Akio Katayama
PDF
2011-04-21 クラウド勉強会
Koichiro Doi
PDF
Elastic beanstalk
Akio Katayama
PDF
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Takuro Sasaki
現場開発者視点で答えるWindows Azure
Keiichi Hashimoto
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
Kazumi OHIRA
インフラ系自主トレするならAWS
Yasuhiro Araki, Ph.D
Amazon ec2とは何か?
Shinya_131
Windows azureって何
Kana SUZUKI
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
AWS活用のいままでとこれから -東急ハンズの事例-
Taiji INOUE
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
Osc spring 20220311
Yasuaki Sera
仮想通貨取引所 bitbank の IaC の導入と実践
bitbank, Inc. Tokyo, Japan
JAWS-UG鹿児島 初心者向け簡単講座
Serverworks Co.,Ltd.
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
Daisuke Masubuchi
[MW11] OSS on Azure で構築する ウェブアプリケーション
de:code 2017
サーバ構築・デプロイが簡単に!Elastic beanstalk
Hirokazu Ouchi
これでAWSマスター!? 初心者向けAWS簡単講座
Serverworks Co.,Ltd.
PHP on Cloud
Akio Katayama
2011-04-21 クラウド勉強会
Koichiro Doi
Elastic beanstalk
Akio Katayama
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
More from chibochibo
(13)
PDF
Tour of Apache PredictionIO in 10 Minutes
chibochibo
PDF
Deadly Code! (seriously) Blocking & Hyper Context Switching Pattern
chibochibo
PDF
Dynamic SQL in doobie
chibochibo
PDF
Is spark streaming based on reactive streams?
chibochibo
PDF
What is doobie? - database access for scala -
chibochibo
PDF
Quartzでcronを範囲検索したい
chibochibo
PDF
ビッグじゃなくても使えるSpark Streaming
chibochibo
PDF
nioで作ったBufferedWriterに変えたら例外になった
chibochibo
PDF
Spark Streaming on AWS -S3からKinesisへ-
chibochibo
PDF
Spark in small or middle scale data processing with Elasticsearch
chibochibo
PDF
What's a macro?: Learning by Examples
chibochibo
PDF
Spring Boot Introduction
chibochibo
PDF
Slick入門
chibochibo
Tour of Apache PredictionIO in 10 Minutes
chibochibo
Deadly Code! (seriously) Blocking & Hyper Context Switching Pattern
chibochibo
Dynamic SQL in doobie
chibochibo
Is spark streaming based on reactive streams?
chibochibo
What is doobie? - database access for scala -
chibochibo
Quartzでcronを範囲検索したい
chibochibo
ビッグじゃなくても使えるSpark Streaming
chibochibo
nioで作ったBufferedWriterに変えたら例外になった
chibochibo
Spark Streaming on AWS -S3からKinesisへ-
chibochibo
Spark in small or middle scale data processing with Elasticsearch
chibochibo
What's a macro?: Learning by Examples
chibochibo
Spring Boot Introduction
chibochibo
Slick入門
chibochibo
LocalStack
1.
LocalStack クラウドサービスのモック環境 2017-06-17 第十九回 #渋谷java
2.
Me 島本 多可子(@chibochibo03) 株式会社ビズリーチ CTO室 普段はScalaを書いてます Apache
PredictionIOのコミッタになりました 直近の著書です →
3.
今日はなすこと LocalStackってなに? 簡単な使い方 JUnitと統合できちゃう!
4.
AWSをフル活用 弊社のサービスのほとんどにおいて活用 機械学習など一部対象外あり 特性や課金モデルを把握し使いたおす
5.
AWSのサービスを活用する場合の課題 検証環境にあげないと動作確認できない DynamoDBなどモックでは開発しづらいケースもある 仕様や制限を網羅するのは結構大変
6.
AWSのサービスのローカル実装が存在する AWSサービス ローカル実装 URL RDS
MySQL等 Elasticsearch Elasticsearch ElasticCache memcached, Redis S3 s3rver https://github.com/jamhall/s3rver SQS elasticmq https://github.com/adamw/elasticmq Kinesis kinesalite https://github.com/mhart/kinesalite DynamoDB DynamoDB Local https://docs.aws.amazon.com/amazondynamodb/late st/developerguide/Tools.DynamoDBLocal.html
7.
AWSのサービスのローカル実装が存在する AWSサービス ローカル実装 URL DynamoDB
dynalite https://github.com/mhart/dynalite SNS fake_sns https://github.com/yourkarma/fake_sns CloudSearch nozama-cloudsearch https://github.com/oisinmulvihill/nozama-cloudsearch Lambda node-lambda https://github.com/motdotla/node-lambda
8.
これまで DynamoDB Localやkinesaliteを組み込んだDockerfileを用意 ローカルでコンテナをビルドして使う docker-composeでまとめて起動・停止できるようにしたり
9.
これまで DynamoDB Localやkinesaliteを組み込んだDockerfileを用意 ローカルでコンテナをビルドして使う docker-composeでまとめて起動・停止できるようにしたり (´・ω・`)ショボーン チョットメンドウ 使うサービスが増えると・・・
10.
LocalStack https://github.com/atlassian/localstack A fully functional
local AWS cloud stack あなたのクラウドアプリケーションをオフラインで開発してテストしましょう!
11.
LocalStack クラウドサービスを使ったアプリの開発時に便利 直近はAWSのサービスに重点が置かれている KCL for Pythonの実装を提供
12.
使えるサービスがこんなにある! API Gateway http://localhost:4567 Kinesis
http://localhost:4568 DynamoDB http://localhost:4569 DynamoDB Streams http://localhost:4570 Elasticsearch http://localhost:4571 S3 http://localhost:4572 Firehose http://localhost:4573 Lambda http://localhost:4574 SNS http://localhost:4575 SQS http://localhost:4576 Redshift http://localhost:4577 Elasticsearch Service http://localhost:4578 SES http://localhost:4579 Route53 http://localhost:4580 CloudFormation http://localhost:4581 CloudWatch http://localhost:4582
13.
数が多いだけじゃない! エラーのインジェクション 実際の環境ではよく発生するエラーがある たとえば ProvisionedThroughputExceededException 動作確認でわざとエラーを出すのは意外とめんどくさい 設定で簡単にできる! (
・ㅂ・)و
14.
数が多いだけじゃない! プロセスはすべて独立しており、差し替え可能 デフォルトでは16サービスが有効 必要なサービスだけにすることも可能 設定で簡単にできる! ( ・ㅂ・)و
15.
Setup Running in Docker $
git clone https://github.com/atlassian/localstack.git $ cd localstack/ $ docker-compose up
16.
S3を使ってみる Create a bucket bash-4.3#
aws --endpoint-url=http://localstack:4572 --region=us-east-1 s3 mb s3://pio_bucket bash-4.3# aws --endpoint-url=http://localhost:4572 s3 ls 2006-02-03 16:45:09 pio_bucket (注)AWS CLI をインストールしておくこと
17.
S3を使ってみる Create a bucket bash-4.3#
aws --endpoint-url=http://localstack:4572 --region=us-east-1 s3 mb s3://pio_bucket bash-4.3# aws --endpoint-url=http://localhost:4572 s3 ls 2006-02-03 16:45:09 pio_bucket (注)AWS CLI をインストールしておくこと
18.
Dashboard
19.
Dashboard http://localhost:8080 簡易的なダッシュボードが付属
20.
作ったbucketにput AmazonS3 s3 =
AmazonS3ClientBuilder.standard() .withPathStyleAccessEnabled(true) .withEndpointConfiguration(new EndpointConfiguration( "http://localhost:4572", Regions.US_EAST_1.getName())) .build(); ... s3.putObject("pio_bucket", "key1", new FileInputStream(file), metadata); aws-java-sdkを使ってput
21.
作ったbucketにput AmazonS3 s3 =
AmazonS3ClientBuilder.standard() .withPathStyleAccessEnabled(true) .withEndpointConfiguration(new EndpointConfiguration( "http://localhost:4572", Regions.US_EAST_1.getName())) .build(); ... s3.putObject("pio_bucket", "key1", new FileInputStream(file), metadata); aws-java-sdkを使ってput
22.
確認 Lists objects bash-4.3# aws
--endpoint-url=http://localhost:4572 s3 ls s3://pio_bucket 2017-06-12 10:18:03 5411 key1 (注)AWS CLI をインストールしておくこと
23.
魅力的なのがKinesis or DynamoDB
24.
ProvisionedThroughputExceededException リクエストが失敗した なぜ?
25.
ProvisionedThroughputExceededException リクエストが失敗した スループット超過 なぜ? なぜ?
26.
ProvisionedThroughputExceededException リクエストが失敗した スループット超過 確保している処理能力を超えた なぜ? なぜ?
27.
避けて通れないスループット超過 ほんの一瞬の負荷によって失敗する可能性あり スループット超過を想定しておく必要あり アプリ側でリトライすることを前提にしておく (´・ω・`)ショボーン チョットメンドウ 超過したときの動作確認・・・
28.
設定で簡単にできる! 環境変数に以下を設定 $ export KINESIS_ERROR_PROBABILITY=0.5 $
docker-compose up
29.
設定で簡単にできる! 環境変数に以下を設定 $ export KINESIS_ERROR_PROBABILITY=0.5 $
docker-compose up 0.0 (default) 〜 1.0の範囲 0.0 => エラーなし 1.0 => 常にエラー
30.
注意 PutRecordsにしか対応してない 割合はすべてのリクエストに対して適用される 実際は独自のdocker-composeを作りたくなるケースが多そう
31.
KinesisにPutRecords 成功時 bash-4.3# aws --endpoint-url=http://localstack:4568
--region=us-east-1 kinesis put-records --stream-name foo --records Data=data1,PartitionKey=part1 Data=data2,PartitionKey=part2 { "FailedRecordCount": 0, "Records": [ { "ShardId": "shardId-000000000000", "SequenceNumber": "49574129433569033358902088269185075153412462741586706434" }, { "ShardId": "shardId-000000000000", "SequenceNumber": "49574129433569033358902088269186284079232077370761412610" } ] } (注)「foo」という名前のストリームを作成しておくこと
32.
KinesisにPutRecords 何回かputしていると・・・ bash-4.3# aws --endpoint-url=http://localstack:4568
--region=us-east-1 kinesis put-records --stream-name foo --records Data=data1,PartitionKey=part1 Data=data2,PartitionKey=part2 { "FailedRecordCount": 1, "Records": [ { "ErrorCode": "ProvisionedThroughputExceededException", "ErrorMessage": "Rate exceeded for shard X in stream Y under account Z." }, { "ErrorCode": "ProvisionedThroughputExceededException", "ErrorMessage": "Rate exceeded for shard X in stream Y under account Z." } ] } (注)「foo」という名前のストリームを作成しておくこと
33.
他にもこんな設定が 環境変数 説明 DYNAMODB_ERROR_PROBA BILITY DynamoDB APIでスループット超過を出す割合 SERVICES
実行するサービスとポート DEFAULT_REGION AWSリージョン(デフォルト us-east-1) HOSTNAME ホスト名(デフォルト localhost) LAMBDA_EXECUTOR ラムダ関数の実行場所。docker or local LAMBDA_REMOTE_DOCKER docker runで実行 or docker create/cp/startで実行
34.
Integration with JUnit JUnitと統合できる LocalstackTestRunner テストを実行すると、すべての依存を自動でダウンロード 一時ディレクトリにインストール
35.
Integration with JUnit 手順は
↓↓↓ https://github.com/atlassian/localstack#integration-with-javaju nit
36.
しかーし!!!!
37.
注意 JUnitと統合できる LocalstackTestRunner テストを実行すると、すべての依存を自動でダウンロード 一時ディレクトリにインストール
38.
注意 JUnitと統合できる LocalstackTestRunner テストを実行すると、すべての依存を自動でダウンロード 一時ディレクトリにインストール git clone
39.
注意 JUnitと統合できる LocalstackTestRunner テストを実行すると、すべての依存を自動でダウンロード 一時ディレクトリにインストール git clone make install
(-"-;)ムム
40.
注意 make、python、pip、npmなどが必要 (環境によって)makeでError Connection refused !? make
infraを叩くとReady.が出ない Elasticsearchのhealth checkに失敗
41.
JUnit統合を使うときの心得 あたたかい気持ちで pythonとお付き合いしましょう Makefileを読みましょう makeのエラーに対応しましょう
42.
まとめ AWSを使ったアプリもローカルで開発できる LocalStackさえあればOK 既存のツールに欠けている機能を補う 例外のインジェクションなど
43.
まとめ サードパーティとの問題の切り分けがちょっと大変 LocalStack側の問題ではないこともある 真面目に触ると粗いと感じる部分がある 本物との差異
Download