Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 44

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

2

Share

Download to read offline

Heroku Meetup #17で発表した内容です。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

  1. 1. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの インフラ選び(仮) 株式会社crispy 高丸 翔英
  2. 2. Copyright ©crispy, Inc. All Rights Reserved. 目次 • 自己紹介 • Herokuを選んだワケ • インフラ選び • まとめ 2
  3. 3. Copyright ©crispy, Inc. All Rights Reserved. 自己紹介
  4. 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. 5. Copyright ©crispy, Inc. All Rights Reserved. サービス紹介(1つ目) • Botmart • 簡単にFacebook Messenger上に チャットボットECサイトを 作れるサービス • Ruby on Rails + Heroku 5
  6. 6. Copyright ©crispy, Inc. All Rights Reserved. サービス紹介 (2つ目) • 絶賛開発中!! 6
  7. 7. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの開発
  8. 8. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの開発は • Done is better than Perfect • 売上が立つまでは、インフラコストは抑えなければ ならない • エンジニアが少ない、1人のカバー範囲が大きい • ある程度の自動化も必要だし、ある程度やらないこ とも決めなければいけない • ローカル環境でもりもり開発する 8
  9. 9. Copyright ©crispy, Inc. All Rights Reserved. Herokuを選んだワケ
  10. 10. Copyright ©crispy, Inc. All Rights Reserved. Herokuを選んだワケ • Botmart開発時 • Ruby (Rails) との相性が良い、ハマるところが少ない • Gitへのプッシュでデプロイ完了するので、コマンドを忘れていること が少ない • ダッシュボードのUIがシンプルでわかりやすい • Hobbyならほぼタダのようなもの (高すぎないサービスレベル、必要があればStdプランにしてスケール できる) • Heroku Postgres等のアドオンが大体イケている、違和感なく使える 10 → どちらかというと、気分的なところが大きいかも
  11. 11. Copyright ©crispy, Inc. All Rights Reserved. 話は逸れますが
  12. 12. Copyright ©crispy, Inc. All Rights Reserved. あなたがスタートアップ (not 社内新サービス)なら どの言語で開発しますか?
  13. 13. Copyright ©crispy, Inc. All Rights Reserved. スタートアップの言語選び • 頭のスイッチングコストはできるだけ少なく • Ruby(Web) ⇔ Go(クローラー)でも結構きつかった • ましてや、マイクロサービスアーキテクチャで 別々の言語なんて… • DBの変更が容易なもの (例: winebarrel/ridgepole) • ルール(DSL等)がしっかりしているもの 13 コードの品質を保ちやすいもの
  14. 14. Copyright ©crispy, Inc. All Rights Reserved. 私の言語選び • Ruby or Go を基準に • FWは、機能の大きさに応じて、Rails or Padrino/Sinatra • どうしてもパフォーマンス優先しなければいけないときがある • Python? • 使えるけど、普段Webアプリを書いてないので、機械学習以外 なら使わない • node? • npmのモジュール群は便利だけど、nodeは言語仕様的に好きじ ゃない • もちろん、開発人数にもよる 14
  15. 15. Copyright ©crispy, Inc. All Rights Reserved. 私の言語選び • 極力JSを使わないw • もちろん、jQueryも使わない(Rails 5.1〜) • ちょい使いなら、今はVue.js • 使うんなら、がっちりJSに寄せる • サーバー(API)⇔ クライアント(React or Vue など) • モバイルアプリ開発にも対応しやすい • noteがこのアーキテクチャ 15
  16. 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. 17. Copyright ©crispy, Inc. All Rights Reserved. Heroku対応言語 • Ruby / Java / PHP が選択肢として堅い 17 ↑ちなみに、これって何順??
  18. 18. Copyright ©crispy, Inc. All Rights Reserved. さて、インフラ選び
  19. 19. Copyright ©crispy, Inc. All Rights Reserved. インフラ選び (PaaS全盛期 2013年〜) • コードだけ書いてPushすればOKなんて、サイコー じゃん • え?なんでSSHなんかしてるの?(^q^) • 当時は、各PFで対応言語に差あり 19
  20. 20. Copyright ©crispy, Inc. All Rights Reserved. インフラ選び (Infra as Code時代 2014年〜) • やっぱ、Infra as Codeだな • Ansible、CloudFormation、Terraform! • PaaS、楽だけど自由度低いもん • 常に同じ環境作れるし、壊しても問題ないし • ただ、VM起動に時間が… • 同時期にDockerも流行っていた(アプローチの違い ) • 大規模な会社なら、現在も選択肢となりうる 20
  21. 21. Copyright ©crispy, Inc. All Rights Reserved. インフラ選び (2015年〜) • Dockerコンテナ化は必至 (デファクトスタンダード ) • PFを選ばない(PFによってコマンド違えど、同じ ようにデプロイできる、後の移行がしやすい) • PaaSとIaCのいいとこ取り • k8sを使うとなると、GCPが一番有利か • かつ、GCPだと、その他サービスにつなげやすい (AppEngine, CloudStorage, CloudFunctions, PubSub) 21
  22. 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. 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. 24. Copyright ©crispy, Inc. All Rights Reserved. dockerを使うと
  25. 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. 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. 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. 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. 29. Copyright ©crispy, Inc. All Rights Reserved. できれば、無料でいたい
  30. 30. Copyright ©crispy, Inc. All Rights Reserved. 一時期 • [qiita] Herokuでbotを運用する時代は終わった。こ れからはIBM Bluemixを使って無料で運用する • 2016/06〜 Freeは 1000 dyno hoursまで 30
  31. 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. 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. 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. 34. Copyright ©crispy, Inc. All Rights Reserved. Herokuのアドオン • Heroku Postgres (DB) ← これだけたまに厄介かも • Heroku Redis (セッション・キャッシュ・キュー用) • SendGrid (メール) • New Relic (パフォーマンス監視) • Papertrail (ログ監視) • Librato (メトリクス監視) • Fastly (CDN) 34 非同期処理を楽に導入できるかも重要
  35. 35. Copyright ©crispy, Inc. All Rights Reserved. 地味にうれしいことも
  36. 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. 37. Copyright ©crispy, Inc. All Rights Reserved. じゃ、いつ大規模開発となる?
  38. 38. Copyright ©crispy, Inc. All Rights Reserved. 大規模とは? • データが肥大化 • デフォルトのRDBMSでは捌ききれなくなってき た場合 • Amazon RDS / Google Cloud Spanner など • データ解析にパワーが必要 • BigQuery / RedShift • 機械学習 (GPU) 38
  39. 39. Copyright ©crispy, Inc. All Rights Reserved. 大規模とは?2 • 分業できる (チーム) • マイクロサービス化 • k8s • Rancher • コンテナ化しておいた方が楽 39
  40. 40. Copyright ©crispy, Inc. All Rights Reserved. つらいときが来る 40 https://martinfowler.com/bliki/MicroservicePremium.html 生 産 性 複雑度
  41. 41. Copyright ©crispy, Inc. All Rights Reserved. まとめ
  42. 42. Copyright ©crispy, Inc. All Rights Reserved. まとめ • スタートアップの開発は早さ一番、料金はそんなに 変わらないので気分が乗るような開発にするべき • 「RubyならHeroku」はやっぱり変わらず • いろいろPFの状況は変化するので、常にちぇきする こと、でも細かく差を気にしすぎないこと • Herokuの料金体制は今後も変わる可能性大だけど、 最近でもどんどん機能追加があるからうれしい (Enterpriseに力入れるんですかね?w) 42
  43. 43. Copyright ©crispy, Inc. All Rights Reserved. 失敗を恐れずに 楽しく開発しましょう!
  44. 44. Copyright ©crispy, Inc. All Rights Reserved. Thanks!

×