SlideShare a Scribd company logo
Copyright ©crispy, Inc. All Rights Reserved.
スタートアップの
インフラ選び(仮)
株式会社crispy
高丸 翔英
Copyright ©crispy, Inc. All Rights Reserved.
目次
• 自己紹介
• Herokuを選んだワケ
• インフラ選び
• まとめ
2
Copyright ©crispy, Inc. All Rights Reserved.
自己紹介
Copyright ©crispy, Inc. All Rights Reserved.
自己紹介
• 高丸 翔英 (たかまる しょうえい、@takamario)
• (株) crispy 共同創業 取締役 CTO
• 職歴
– 赤R (某ポータルサービスでEL、某国際EC立ち上げとTM) /
PHP Perl Node.js, Ruby
– 黃P (某note 立ち上げ) Ruby / Angular.js
– 青R (某キュレーション、某サロン予約サービス TL) Java / Go
– シンガポールで起業
– 事業都合で東京へ戻る ← イマココ
4
Copyright ©crispy, Inc. All Rights Reserved.
サービス紹介(1つ目)
• Botmart
• 簡単にFacebook Messenger上に
チャットボットECサイトを
作れるサービス
• Ruby on Rails
+ Heroku
5
Copyright ©crispy, Inc. All Rights Reserved.
サービス紹介 (2つ目)
• 絶賛開発中!!
6
Copyright ©crispy, Inc. All Rights Reserved.
スタートアップの開発
Copyright ©crispy, Inc. All Rights Reserved.
スタートアップの開発は
• Done is better than Perfect
• 売上が立つまでは、インフラコストは抑えなければ
ならない
• エンジニアが少ない、1人のカバー範囲が大きい
• ある程度の自動化も必要だし、ある程度やらないこ
とも決めなければいけない
• ローカル環境でもりもり開発する
8
Copyright ©crispy, Inc. All Rights Reserved.
Herokuを選んだワケ
Copyright ©crispy, Inc. All Rights Reserved.
Herokuを選んだワケ
• Botmart開発時
• Ruby (Rails) との相性が良い、ハマるところが少ない
• Gitへのプッシュでデプロイ完了するので、コマンドを忘れていること
が少ない
• ダッシュボードのUIがシンプルでわかりやすい
• Hobbyならほぼタダのようなもの
(高すぎないサービスレベル、必要があればStdプランにしてスケール
できる)
• Heroku Postgres等のアドオンが大体イケている、違和感なく使える
10
→ どちらかというと、気分的なところが大きいかも
Copyright ©crispy, Inc. All Rights Reserved.
話は逸れますが
Copyright ©crispy, Inc. All Rights Reserved.
あなたがスタートアップ
(not 社内新サービス)なら
どの言語で開発しますか?
Copyright ©crispy, Inc. All Rights Reserved.
スタートアップの言語選び
• 頭のスイッチングコストはできるだけ少なく
• Ruby(Web) ⇔ Go(クローラー)でも結構きつかった
• ましてや、マイクロサービスアーキテクチャで
別々の言語なんて…
• DBの変更が容易なもの (例: winebarrel/ridgepole)
• ルール(DSL等)がしっかりしているもの
13
コードの品質を保ちやすいもの
Copyright ©crispy, Inc. All Rights Reserved.
私の言語選び
• Ruby or Go を基準に
• FWは、機能の大きさに応じて、Rails or Padrino/Sinatra
• どうしてもパフォーマンス優先しなければいけないときがある
• Python?
• 使えるけど、普段Webアプリを書いてないので、機械学習以外
なら使わない
• node?
• npmのモジュール群は便利だけど、nodeは言語仕様的に好きじ
ゃない
• もちろん、開発人数にもよる
14
Copyright ©crispy, Inc. All Rights Reserved.
私の言語選び
• 極力JSを使わないw
• もちろん、jQueryも使わない(Rails 5.1〜)
• ちょい使いなら、今はVue.js
• 使うんなら、がっちりJSに寄せる
• サーバー(API)⇔ クライアント(React or Vue など)
• モバイルアプリ開発にも対応しやすい
• noteがこのアーキテクチャ
15
Copyright ©crispy, Inc. All Rights Reserved.
ちなみに
• 某ベンチャー系フロントエンジニアの知人
• node(API)+ React + Redux
• 「サーバ側は面倒だったけど、JSに寄せて良かった」
• 現在はAndroidアプリも作成中
16
• 某大手Web系のエンジニア (リプレイスPRJ)
• 「Railsは意外とRenderが遅かった、Java はやっぱり速い」
• Google Next Tokyoで聞こえた話
• A「AppEngineとか使ってます?」
• B「使ってみようかなぐらい、だいたいはさくらのVPSで行ける
んだよねぇ」
Copyright ©crispy, Inc. All Rights Reserved.
Heroku対応言語
• Ruby / Java / PHP が選択肢として堅い
17
↑ちなみに、これって何順??
Copyright ©crispy, Inc. All Rights Reserved.
さて、インフラ選び
Copyright ©crispy, Inc. All Rights Reserved.
インフラ選び (PaaS全盛期 2013年〜)
• コードだけ書いてPushすればOKなんて、サイコー
じゃん
• え?なんでSSHなんかしてるの?(^q^)
• 当時は、各PFで対応言語に差あり
19
Copyright ©crispy, Inc. All Rights Reserved.
インフラ選び (Infra as Code時代 2014年〜)
• やっぱ、Infra as Codeだな
• Ansible、CloudFormation、Terraform!
• PaaS、楽だけど自由度低いもん
• 常に同じ環境作れるし、壊しても問題ないし
• ただ、VM起動に時間が…
• 同時期にDockerも流行っていた(アプローチの違い
)
• 大規模な会社なら、現在も選択肢となりうる
20
Copyright ©crispy, Inc. All Rights Reserved.
インフラ選び (2015年〜)
• Dockerコンテナ化は必至 (デファクトスタンダード
)
• PFを選ばない(PFによってコマンド違えど、同じ
ようにデプロイできる、後の移行がしやすい)
• PaaSとIaCのいいとこ取り
• k8sを使うとなると、GCPが一番有利か
• かつ、GCPだと、その他サービスにつなげやすい
(AppEngine, CloudStorage, CloudFunctions,
PubSub)
21
Copyright ©crispy, Inc. All Rights Reserved.
Heroku Docker
• 2015/05〜 Dockerコンテナのデプロイが可能に!
• 2016/07〜 Dockerイメージの登録が可能に(β)!
• [deprecated] heroku-docker
• [deprecated] heroku-container-tools
• [now] heroku-container-registry
• コンテナの登録に異様に時間がかかるときがある。。?
• 独自のコンテナをデプロイできるが、1 Dynoにできあ
がるだけなので、Herokuである意味はあまりない
22
Copyright ©crispy, Inc. All Rights Reserved.
Heroku Docker
• 参考資料
• Local Development with Docker Compose
• Container Registry and Runtime
• Heroku Dockerの使いどころ (Heroku Meetup
#15)
23
• For local development: use official Docker images, such as Postgres and Redis.
• For staging and production: use Heroku add-ons, such as Heroku Postgres and
Heroku Redis.
Copyright ©crispy, Inc. All Rights Reserved.
dockerを使うと
Copyright ©crispy, Inc. All Rights Reserved.
構成が管理しやすい、テストしやすい
25
version: "2"
services:
web:
command: bundle exec rails s -p 3000 -b '0.0.0.0'
links:
- db
- mail
- redis
...
db:
image: mysql:5.7
...
mail:
image: schickling/mailcatcher
...
redis:
image: redis:3.0.7
...
docker-compose.yml
Copyright ©crispy, Inc. All Rights Reserved.
構成が管理しやすい、テストしやすい
26
FROM ruby:2.3.4
RUN apt-get update -qq 
&& apt-get install -y 
build-essential 
libpq-dev 
vim 
mysql-client 
postgresql-client 
apt-transport-https
FROM ruby:2.4.1
RUN apt-get update -qq 
&& apt-get install -y 
build-essential 
libpq-dev 
vim 
mysql-client 
postgresql-client 
apt-transport-https
Ruby 2.3.4 Ruby 2.4.1
Dockerfile
Copyright ©crispy, Inc. All Rights Reserved.
構成が管理しやすい、テストしやすい
27
version: "2"
services:
db:
image: mysql:5.7
ports:
- "3306:3306"
web:
build: .
command: ...(snip)...
version: "2"
services:
db:
image: postgres:9.6
ports:
- "5432:5432"
web:
build: .
command: ...(snip)...
MySQL PostgreSQL
docker-compose.yml
Copyright ©crispy, Inc. All Rights Reserved.
mailcatcherでのメール確認時も
• https://hub.docker.com/r/schickling/mailcatcher/
28
mail:
image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"
docker-compose.yml
Copyright ©crispy, Inc. All Rights Reserved.
できれば、無料でいたい
Copyright ©crispy, Inc. All Rights Reserved.
一時期
• [qiita] Herokuでbotを運用する時代は終わった。こ
れからはIBM Bluemixを使って無料で運用する
• 2016/06〜 Freeは 1000 dyno hoursまで
30
Copyright ©crispy, Inc. All Rights Reserved.
Heroku以外のPaaS選択肢
• IBM Bluemix (Cloud Foundry)
• Microsoft Azure (Web Apps)
• Google Cloud Platform (App Engine Flex
Environment)
• など
31
Copyright ©crispy, Inc. All Rights Reserved.
料金面(無料枠)
• IBM Bluemix
• 512MBのインスタンスなら無料、1ヶ月目は無料
• Microsoft Azure Web Apps
• CPU60分/日、ストレージ1GBまでは無料
• Google App Engine
• 28インスタンス時間 / 日
=> 868 インスタンス時間 / 月
• Heroku
• 32 dyno 時間 / 日
=> 1,000 dyno 時間 / 月
32
1インスタンス/日が目安
Copyright ©crispy, Inc. All Rights Reserved.
料金面(有料枠 - 基本プラン)
33
IBM
Bluemix
Microsoft
Azure
Web Apps
Google
App
Engine
Heroku
プラン名 (Ruby) B1 Flex B1 Standard
CPU 1 1 1 1
メモリ(GB) 1 1.75 1 0.5
ストレージ 20GB 10GB 10GB 300MB?
料金/日 ¥89.36 ¥183.60 ¥160.95 ¥92.5
1ヶ月でも数千円程度の差
Copyright ©crispy, Inc. All Rights Reserved.
Herokuのアドオン
• Heroku Postgres (DB) ← これだけたまに厄介かも
• Heroku Redis (セッション・キャッシュ・キュー用)
• SendGrid (メール)
• New Relic (パフォーマンス監視)
• Papertrail (ログ監視)
• Librato (メトリクス監視)
• Fastly (CDN)
34
非同期処理を楽に導入できるかも重要
Copyright ©crispy, Inc. All Rights Reserved.
地味にうれしいことも
Copyright ©crispy, Inc. All Rights Reserved.
地味にありがたい
• [2016/09〜] Heroku SSL、有料dynoなら無料!
• [2017/05〜] さらに自動更新までしてくれる!
(Let’s encrypt)
– https://blog.heroku.com/ssl-is-now-included-on-
all-paid-dynos
– https://blog.heroku.com/announcing-automated-
certificate-management
36
Copyright ©crispy, Inc. All Rights Reserved.
じゃ、いつ大規模開発となる?
Copyright ©crispy, Inc. All Rights Reserved.
大規模とは?
• データが肥大化
• デフォルトのRDBMSでは捌ききれなくなってき
た場合
• Amazon RDS / Google Cloud Spanner など
• データ解析にパワーが必要
• BigQuery / RedShift
• 機械学習 (GPU)
38
Copyright ©crispy, Inc. All Rights Reserved.
大規模とは?2
• 分業できる (チーム)
• マイクロサービス化
• k8s
• Rancher
• コンテナ化しておいた方が楽
39
Copyright ©crispy, Inc. All Rights Reserved.
つらいときが来る
40
https://martinfowler.com/bliki/MicroservicePremium.html
生
産
性
複雑度
Copyright ©crispy, Inc. All Rights Reserved.
まとめ
Copyright ©crispy, Inc. All Rights Reserved.
まとめ
• スタートアップの開発は早さ一番、料金はそんなに
変わらないので気分が乗るような開発にするべき
• 「RubyならHeroku」はやっぱり変わらず
• いろいろPFの状況は変化するので、常にちぇきする
こと、でも細かく差を気にしすぎないこと
• Herokuの料金体制は今後も変わる可能性大だけど、
最近でもどんどん機能追加があるからうれしい
(Enterpriseに力入れるんですかね?w)
42
Copyright ©crispy, Inc. All Rights Reserved.
失敗を恐れずに
楽しく開発しましょう!
Copyright ©crispy, Inc. All Rights Reserved.
Thanks!

More Related Content

What's hot

JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
Yahoo!デベロッパーネットワーク
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
Sho Yoshida
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
gree_tech
 
インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動
gree_tech
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
gree_tech
 
【デブサミ夏AL】グリーのboxの使い方
【デブサミ夏AL】グリーのboxの使い方【デブサミ夏AL】グリーのboxの使い方
【デブサミ夏AL】グリーのboxの使い方
Developers Summit
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
gree_tech
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
Sho Yoshida
 
RPKIやってみませんか?
RPKIやってみませんか?RPKIやってみませんか?
RPKIやってみませんか?
gree_tech
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
 
ニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメ
NIFTY Cloud
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
Katsunori Kawaguchi
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
Kenichi Yoshida
 
Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化
NIFTY Cloud
 
ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
soishino
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
Yuichi Hasegawa
 
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
MakotoItoh
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
 
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
gree_tech
 

What's hot (20)

JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
 
インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動インフラエンジニアの楽しい標準化活動
インフラエンジニアの楽しい標準化活動
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
【デブサミ夏AL】グリーのboxの使い方
【デブサミ夏AL】グリーのboxの使い方【デブサミ夏AL】グリーのboxの使い方
【デブサミ夏AL】グリーのboxの使い方
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
RPKIやってみませんか?
RPKIやってみませんか?RPKIやってみませんか?
RPKIやってみませんか?
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
 
ニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメ
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
 
Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化
 
ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
 
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
 

Similar to 20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture in startup

チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発
Satoshi Takano
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Yahoo!デベロッパーネットワーク
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
Masatomo Ito
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
MinGeun Park
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stack
Masatomo Ito
 
新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました
新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました
新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました
Satoshi Yokoi
 
面白いは正義
面白いは正義面白いは正義
面白いは正義
Yasuhiro Horiuchi
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
Masahito Zembutsu
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
Naoki Shibata
 
オープンソースCMS concrete5 のご紹介
オープンソースCMS concrete5 のご紹介オープンソースCMS concrete5 のご紹介
オープンソースCMS concrete5 のご紹介
Hishikawa Takuro
 
Azure App Service Overview LT
Azure App Service Overview LTAzure App Service Overview LT
Azure App Service Overview LT
Keiji Kamebuchi
 
Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)
Akihiro Suda
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
Yahoo!デベロッパーネットワーク
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
 

Similar to 20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture in startup (20)

チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stack
 
新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました
新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました
新事業がどんどん出来て組織が拡大中のフェーズのランサーズがどんな感じでプロジェクトを回しているのかまとめてみました
 
面白いは正義
面白いは正義面白いは正義
面白いは正義
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
オープンソースCMS concrete5 のご紹介
オープンソースCMS concrete5 のご紹介オープンソースCMS concrete5 のご紹介
オープンソースCMS concrete5 のご紹介
 
Azure App Service Overview LT
Azure App Service Overview LTAzure App Service Overview LT
Azure App Service Overview LT
 
Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)
 
Presto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnightPresto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnight
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 

20170622 Heroku Meetup #17 スタートアップのインフラ選び 高丸翔英 How to choose infrastracture in startup

  • 1. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの インフラ選び(仮) 株式会社crispy 高丸 翔英
  • 2. Copyright ©crispy, Inc. All Rights Reserved. 目次 • 自己紹介 • Herokuを選んだワケ • インフラ選び • まとめ 2
  • 3. Copyright ©crispy, Inc. All Rights Reserved. 自己紹介
  • 4. Copyright ©crispy, Inc. All Rights Reserved. 自己紹介 • 高丸 翔英 (たかまる しょうえい、@takamario) • (株) crispy 共同創業 取締役 CTO • 職歴 – 赤R (某ポータルサービスでEL、某国際EC立ち上げとTM) / PHP Perl Node.js, Ruby – 黃P (某note 立ち上げ) Ruby / Angular.js – 青R (某キュレーション、某サロン予約サービス TL) Java / Go – シンガポールで起業 – 事業都合で東京へ戻る ← イマココ 4
  • 5. Copyright ©crispy, Inc. All Rights Reserved. サービス紹介(1つ目) • Botmart • 簡単にFacebook Messenger上に チャットボットECサイトを 作れるサービス • Ruby on Rails + Heroku 5
  • 6. Copyright ©crispy, Inc. All Rights Reserved. サービス紹介 (2つ目) • 絶賛開発中!! 6
  • 7. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの開発
  • 8. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの開発は • Done is better than Perfect • 売上が立つまでは、インフラコストは抑えなければ ならない • エンジニアが少ない、1人のカバー範囲が大きい • ある程度の自動化も必要だし、ある程度やらないこ とも決めなければいけない • ローカル環境でもりもり開発する 8
  • 9. Copyright ©crispy, Inc. All Rights Reserved. Herokuを選んだワケ
  • 10. Copyright ©crispy, Inc. All Rights Reserved. Herokuを選んだワケ • Botmart開発時 • Ruby (Rails) との相性が良い、ハマるところが少ない • Gitへのプッシュでデプロイ完了するので、コマンドを忘れていること が少ない • ダッシュボードのUIがシンプルでわかりやすい • Hobbyならほぼタダのようなもの (高すぎないサービスレベル、必要があればStdプランにしてスケール できる) • Heroku Postgres等のアドオンが大体イケている、違和感なく使える 10 → どちらかというと、気分的なところが大きいかも
  • 11. Copyright ©crispy, Inc. All Rights Reserved. 話は逸れますが
  • 12. Copyright ©crispy, Inc. All Rights Reserved. あなたがスタートアップ (not 社内新サービス)なら どの言語で開発しますか?
  • 13. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの言語選び • 頭のスイッチングコストはできるだけ少なく • Ruby(Web) ⇔ Go(クローラー)でも結構きつかった • ましてや、マイクロサービスアーキテクチャで 別々の言語なんて… • DBの変更が容易なもの (例: winebarrel/ridgepole) • ルール(DSL等)がしっかりしているもの 13 コードの品質を保ちやすいもの
  • 14. Copyright ©crispy, Inc. All Rights Reserved. 私の言語選び • Ruby or Go を基準に • FWは、機能の大きさに応じて、Rails or Padrino/Sinatra • どうしてもパフォーマンス優先しなければいけないときがある • Python? • 使えるけど、普段Webアプリを書いてないので、機械学習以外 なら使わない • node? • npmのモジュール群は便利だけど、nodeは言語仕様的に好きじ ゃない • もちろん、開発人数にもよる 14
  • 15. Copyright ©crispy, Inc. All Rights Reserved. 私の言語選び • 極力JSを使わないw • もちろん、jQueryも使わない(Rails 5.1〜) • ちょい使いなら、今はVue.js • 使うんなら、がっちりJSに寄せる • サーバー(API)⇔ クライアント(React or Vue など) • モバイルアプリ開発にも対応しやすい • noteがこのアーキテクチャ 15
  • 16. Copyright ©crispy, Inc. All Rights Reserved. ちなみに • 某ベンチャー系フロントエンジニアの知人 • node(API)+ React + Redux • 「サーバ側は面倒だったけど、JSに寄せて良かった」 • 現在はAndroidアプリも作成中 16 • 某大手Web系のエンジニア (リプレイスPRJ) • 「Railsは意外とRenderが遅かった、Java はやっぱり速い」 • Google Next Tokyoで聞こえた話 • A「AppEngineとか使ってます?」 • B「使ってみようかなぐらい、だいたいはさくらのVPSで行ける んだよねぇ」
  • 17. Copyright ©crispy, Inc. All Rights Reserved. Heroku対応言語 • Ruby / Java / PHP が選択肢として堅い 17 ↑ちなみに、これって何順??
  • 18. Copyright ©crispy, Inc. All Rights Reserved. さて、インフラ選び
  • 19. Copyright ©crispy, Inc. All Rights Reserved. インフラ選び (PaaS全盛期 2013年〜) • コードだけ書いてPushすればOKなんて、サイコー じゃん • え?なんでSSHなんかしてるの?(^q^) • 当時は、各PFで対応言語に差あり 19
  • 20. Copyright ©crispy, Inc. All Rights Reserved. インフラ選び (Infra as Code時代 2014年〜) • やっぱ、Infra as Codeだな • Ansible、CloudFormation、Terraform! • PaaS、楽だけど自由度低いもん • 常に同じ環境作れるし、壊しても問題ないし • ただ、VM起動に時間が… • 同時期にDockerも流行っていた(アプローチの違い ) • 大規模な会社なら、現在も選択肢となりうる 20
  • 21. Copyright ©crispy, Inc. All Rights Reserved. インフラ選び (2015年〜) • Dockerコンテナ化は必至 (デファクトスタンダード ) • PFを選ばない(PFによってコマンド違えど、同じ ようにデプロイできる、後の移行がしやすい) • PaaSとIaCのいいとこ取り • k8sを使うとなると、GCPが一番有利か • かつ、GCPだと、その他サービスにつなげやすい (AppEngine, CloudStorage, CloudFunctions, PubSub) 21
  • 22. Copyright ©crispy, Inc. All Rights Reserved. Heroku Docker • 2015/05〜 Dockerコンテナのデプロイが可能に! • 2016/07〜 Dockerイメージの登録が可能に(β)! • [deprecated] heroku-docker • [deprecated] heroku-container-tools • [now] heroku-container-registry • コンテナの登録に異様に時間がかかるときがある。。? • 独自のコンテナをデプロイできるが、1 Dynoにできあ がるだけなので、Herokuである意味はあまりない 22
  • 23. Copyright ©crispy, Inc. All Rights Reserved. Heroku Docker • 参考資料 • Local Development with Docker Compose • Container Registry and Runtime • Heroku Dockerの使いどころ (Heroku Meetup #15) 23 • For local development: use official Docker images, such as Postgres and Redis. • For staging and production: use Heroku add-ons, such as Heroku Postgres and Heroku Redis.
  • 24. Copyright ©crispy, Inc. All Rights Reserved. dockerを使うと
  • 25. Copyright ©crispy, Inc. All Rights Reserved. 構成が管理しやすい、テストしやすい 25 version: "2" services: web: command: bundle exec rails s -p 3000 -b '0.0.0.0' links: - db - mail - redis ... db: image: mysql:5.7 ... mail: image: schickling/mailcatcher ... redis: image: redis:3.0.7 ... docker-compose.yml
  • 26. Copyright ©crispy, Inc. All Rights Reserved. 構成が管理しやすい、テストしやすい 26 FROM ruby:2.3.4 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev vim mysql-client postgresql-client apt-transport-https FROM ruby:2.4.1 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev vim mysql-client postgresql-client apt-transport-https Ruby 2.3.4 Ruby 2.4.1 Dockerfile
  • 27. Copyright ©crispy, Inc. All Rights Reserved. 構成が管理しやすい、テストしやすい 27 version: "2" services: db: image: mysql:5.7 ports: - "3306:3306" web: build: . command: ...(snip)... version: "2" services: db: image: postgres:9.6 ports: - "5432:5432" web: build: . command: ...(snip)... MySQL PostgreSQL docker-compose.yml
  • 28. Copyright ©crispy, Inc. All Rights Reserved. mailcatcherでのメール確認時も • https://hub.docker.com/r/schickling/mailcatcher/ 28 mail: image: schickling/mailcatcher ports: - "1080:1080" - "1025:1025" docker-compose.yml
  • 29. Copyright ©crispy, Inc. All Rights Reserved. できれば、無料でいたい
  • 30. Copyright ©crispy, Inc. All Rights Reserved. 一時期 • [qiita] Herokuでbotを運用する時代は終わった。こ れからはIBM Bluemixを使って無料で運用する • 2016/06〜 Freeは 1000 dyno hoursまで 30
  • 31. Copyright ©crispy, Inc. All Rights Reserved. Heroku以外のPaaS選択肢 • IBM Bluemix (Cloud Foundry) • Microsoft Azure (Web Apps) • Google Cloud Platform (App Engine Flex Environment) • など 31
  • 32. Copyright ©crispy, Inc. All Rights Reserved. 料金面(無料枠) • IBM Bluemix • 512MBのインスタンスなら無料、1ヶ月目は無料 • Microsoft Azure Web Apps • CPU60分/日、ストレージ1GBまでは無料 • Google App Engine • 28インスタンス時間 / 日 => 868 インスタンス時間 / 月 • Heroku • 32 dyno 時間 / 日 => 1,000 dyno 時間 / 月 32 1インスタンス/日が目安
  • 33. Copyright ©crispy, Inc. All Rights Reserved. 料金面(有料枠 - 基本プラン) 33 IBM Bluemix Microsoft Azure Web Apps Google App Engine Heroku プラン名 (Ruby) B1 Flex B1 Standard CPU 1 1 1 1 メモリ(GB) 1 1.75 1 0.5 ストレージ 20GB 10GB 10GB 300MB? 料金/日 ¥89.36 ¥183.60 ¥160.95 ¥92.5 1ヶ月でも数千円程度の差
  • 34. Copyright ©crispy, Inc. All Rights Reserved. Herokuのアドオン • Heroku Postgres (DB) ← これだけたまに厄介かも • Heroku Redis (セッション・キャッシュ・キュー用) • SendGrid (メール) • New Relic (パフォーマンス監視) • Papertrail (ログ監視) • Librato (メトリクス監視) • Fastly (CDN) 34 非同期処理を楽に導入できるかも重要
  • 35. Copyright ©crispy, Inc. All Rights Reserved. 地味にうれしいことも
  • 36. Copyright ©crispy, Inc. All Rights Reserved. 地味にありがたい • [2016/09〜] Heroku SSL、有料dynoなら無料! • [2017/05〜] さらに自動更新までしてくれる! (Let’s encrypt) – https://blog.heroku.com/ssl-is-now-included-on- all-paid-dynos – https://blog.heroku.com/announcing-automated- certificate-management 36
  • 37. Copyright ©crispy, Inc. All Rights Reserved. じゃ、いつ大規模開発となる?
  • 38. Copyright ©crispy, Inc. All Rights Reserved. 大規模とは? • データが肥大化 • デフォルトのRDBMSでは捌ききれなくなってき た場合 • Amazon RDS / Google Cloud Spanner など • データ解析にパワーが必要 • BigQuery / RedShift • 機械学習 (GPU) 38
  • 39. Copyright ©crispy, Inc. All Rights Reserved. 大規模とは?2 • 分業できる (チーム) • マイクロサービス化 • k8s • Rancher • コンテナ化しておいた方が楽 39
  • 40. Copyright ©crispy, Inc. All Rights Reserved. つらいときが来る 40 https://martinfowler.com/bliki/MicroservicePremium.html 生 産 性 複雑度
  • 41. Copyright ©crispy, Inc. All Rights Reserved. まとめ
  • 42. Copyright ©crispy, Inc. All Rights Reserved. まとめ • スタートアップの開発は早さ一番、料金はそんなに 変わらないので気分が乗るような開発にするべき • 「RubyならHeroku」はやっぱり変わらず • いろいろPFの状況は変化するので、常にちぇきする こと、でも細かく差を気にしすぎないこと • Herokuの料金体制は今後も変わる可能性大だけど、 最近でもどんどん機能追加があるからうれしい (Enterpriseに力入れるんですかね?w) 42
  • 43. Copyright ©crispy, Inc. All Rights Reserved. 失敗を恐れずに 楽しく開発しましょう!
  • 44. Copyright ©crispy, Inc. All Rights Reserved. Thanks!