SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
EC2の天井を超える
クックパッド株式会社
菅原 元気
自己紹介
菅原 元気 (@sgwr_dts / id:winebarrel)
白金台のほうから来ました
● クックパッド株式会社勤務
● インフラエンジニア
● Ruby・AWS関連ツールを公開しています
○ https://bitbucket.org/winebarrel/
○ https://github.com/winebarrel/
EC2の天井
Q. EC2の天井を見たことがありますか?
EC2の天井
事例① 初期のシンガポールリージョン
EC2の天井
事例② 弊社のVPC(tokyo)への移行
数百台規模のインスタンスのお引っ越し
VPC側にインスタンスが立たない!
→DoS的RunInstancesの実行
EC2の天井
事例③ APIのInternal Server Error New!
API叩きすぎるとInternal Server Error
DescribeTagsは特に弱い ::::::::        ┌─────────────── ┐
::::::::        |DescribeTagsやられたようだな・・  │
:::::   ┌───└───────────v───┬┘
:::::   |フフフ…奴はAPI四天王の中でも最弱…   │
┌──└────────v──┬───────┘
| DoSごときにやられるとは    │
| API四天王の面汚しよ…     │
└────v─────────┘
  |ミ,  /  `ヽ /!    ,.──、
  |彡/二Oニニ|ノ    /三三三!,       |!
  `,' \、、_,|/-ャ    ト `=j r=レ     /ミ !彡     
T 爪| / / ̄|/´__,ャ  |`三三‐/     |`=、|,='|    
/人 ヽ ミ='/|`:::::::/イ__ ト`ー く__,-,  、 _!_ /   
/  `ー─'" |_,.イ、 | |/、   Y  /| | | j / ミ`┴'彡\
 DescribeInstances DeleteVolumes RunInstances
API Proxy Patternのご提案
API Proxy Patternのご提案
● Proxyサーバを経由して
APIに問い合わせ
● 結果をキャッシュすることで
スループットが一桁上がります!
…とここまではよかったのですが…
API Proxy Pattern 実装編
● Varnishを使って実装できそう
と思っていた
API Proxy Pattern 実装編
● Varnishを使って実装できそう
と思っていた→うまくいかない
API Proxy Pattern 実装編
● Varnishを使って実装できそう
と思っていた→うまくいかない
● Varnishが余計なヘッダをつける
● Hostをうまく変換できない
API Proxy Pattern 実装編
● さらにApacheを経由して
リクエストを書き換えようとする
API Proxy Pattern 実装編
● さらにApacheを経由して
リクエストを書き換えようとする
→うまくいかない
API Proxy Pattern 実装編
● さらにApacheを経由して
リクエストを書き換えようとする
→うまくいかない
● Apacheも余計なヘッダをつける
● プロキシしたヘッダの順序って
元のままなのだろうか…
API Proxy Pattern 実装編
● この辺で泥沼感が漂ってくる
API Proxy Pattern 実装編
● この辺で泥沼感が漂ってくる
● squidだとうまくいくんだろうか…
→使ったことない
API Proxy Pattern 実装編
● この辺で泥沼感が漂ってくる
● squidだとうまくいくんだろうか…
→使ったことない
● そもそも、POSTの中身を読んで
キャッシュの可否を判断できる
キャッシュサーバってあるのか?
API Proxy Pattern 実装編
………
API Proxy Pattern 実装編
Proxyサーバを作りました
ec2-api-proxy
DEMO
API Proxy Pattern まとめ
● APIコールをProxyサーバでキャッシュすること
で、スループットをあげられます
● 少し手を入れれば監査にも使えます
API Proxy Pattern まとめ
● …賢明な皆様におかれましては、既存のミドル
ウェアで実装することをおすすめします
○ (実装できたら教えてください)
以上

Weitere ähnliche Inhalte

Was ist angesagt?

Nyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converterNyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converter
tod esking
 

Was ist angesagt? (20)

Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみよう
 
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視について
 
Nyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converterNyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converter
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方
 
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
マルチクラウド環境でモビンギはどのようにコンテナを動かしているかマルチクラウド環境でモビンギはどのようにコンテナを動かしているか
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
 
React-konvaで絵を描いてみる話
React-konvaで絵を描いてみる話React-konvaで絵を描いてみる話
React-konvaで絵を描いてみる話
 
20160523 Red Hat and Microsoft
20160523 Red Hat and Microsoft20160523 Red Hat and Microsoft
20160523 Red Hat and Microsoft
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオン
 
introducing vue-wait-component
introducing vue-wait-componentintroducing vue-wait-component
introducing vue-wait-component
 
bicep 紹介
bicep 紹介bicep 紹介
bicep 紹介
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
 
Arukas meet Mesos/Marathon
Arukas meet Mesos/MarathonArukas meet Mesos/Marathon
Arukas meet Mesos/Marathon
 
3分で作るストリーム処理基盤~kafka+flink on docker編~
3分で作るストリーム処理基盤~kafka+flink on docker編~3分で作るストリーム処理基盤~kafka+flink on docker編~
3分で作るストリーム処理基盤~kafka+flink on docker編~
 
インフラエンジニアのお仕事(オンプレ)
インフラエンジニアのお仕事(オンプレ)インフラエンジニアのお仕事(オンプレ)
インフラエンジニアのお仕事(オンプレ)
 

Andere mochten auch

Awsルーキーの考えたcdp
Awsルーキーの考えたcdpAwsルーキーの考えたcdp
Awsルーキーの考えたcdp
Mikawa Kouta
 
FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用
Keisuke Izumiya
 
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
Sugawara Genki
 
クックパッドの開発について
クックパッドの開発についてクックパッドの開発について
クックパッドの開発について
Sugawara Genki
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
Sugawara Genki
 
ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証
Sugawara Genki
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
Sugawara Genki
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
Sugawara Genki
 

Andere mochten auch (20)

Awsルーキーの考えたcdp
Awsルーキーの考えたcdpAwsルーキーの考えたcdp
Awsルーキーの考えたcdp
 
Hybrid recoverypattern
Hybrid recoverypatternHybrid recoverypattern
Hybrid recoverypattern
 
美人CDP/CDP男子総選挙速報
美人CDP/CDP男子総選挙速報美人CDP/CDP男子総選挙速報
美人CDP/CDP男子総選挙速報
 
FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用
 
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
 
クックパッドの開発について
クックパッドの開発についてクックパッドの開発について
クックパッドの開発について
 
200k/sec
200k/sec200k/sec
200k/sec
 
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol
 
Hairpin dx pattern
Hairpin dx patternHairpin dx pattern
Hairpin dx pattern
 
ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
 
DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴
 
MHA on AWS+Rails
MHA on AWS+RailsMHA on AWS+Rails
MHA on AWS+Rails
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch Logsについて
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
 
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
 

Ähnlich wie EC2の天井を超える

Cloud Programing for beginner
Cloud Programing for beginnerCloud Programing for beginner
Cloud Programing for beginner
Satoru Ishikawa
 
EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
Kenta Yasukawa
 

Ähnlich wie EC2の天井を超える (20)

ドカドカDocker on aws
ドカドカDocker on awsドカドカDocker on aws
ドカドカDocker on aws
 
Dockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんかDockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんか
 
AWS VM import / export ハンズオン
AWS VM import / export ハンズオンAWS VM import / export ハンズオン
AWS VM import / export ハンズオン
 
Cloud Programing for beginner
Cloud Programing for beginnerCloud Programing for beginner
Cloud Programing for beginner
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
Werckerを使ってみた
Werckerを使ってみたWerckerを使ってみた
Werckerを使ってみた
 
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンJAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
ノンEC2のススメ
ノンEC2のススメノンEC2のススメ
ノンEC2のススメ
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
Docker Tシャツを着て Docker の話をする
Docker Tシャツを着て Docker の話をするDocker Tシャツを着て Docker の話をする
Docker Tシャツを着て Docker の話をする
 
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイPlay framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
 
Scalable and Cost Effective Systems Architecture on AWS
Scalable and Cost Effective Systems Architecture on AWSScalable and Cost Effective Systems Architecture on AWS
Scalable and Cost Effective Systems Architecture on AWS
 
DockerとKubernetesが作る未来
DockerとKubernetesが作る未来DockerとKubernetesが作る未来
DockerとKubernetesが作る未来
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 

Mehr von Sugawara Genki

Mehr von Sugawara Genki (8)

AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
クックパッドでのVPC移行について
クックパッドでのVPC移行についてクックパッドでのVPC移行について
クックパッドでのVPC移行について
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+α
 
AWS移行に向けたクックパッドの取り組み
AWS移行に向けたクックパッドの取り組みAWS移行に向けたクックパッドの取り組み
AWS移行に向けたクックパッドの取り組み
 
クックパッドのLVSについて
クックパッドのLVSについてクックパッドのLVSについて
クックパッドのLVSについて
 
サーバー・クライアントの ボトルネック調査と高速化
サーバー・クライアントの ボトルネック調査と高速化サーバー・クライアントの ボトルネック調査と高速化
サーバー・クライアントの ボトルネック調査と高速化
 

EC2の天井を超える