Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 44 Ad

More Related Content

Slideshows for you (20)

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

Advertisement

Recently uploaded (20)

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!

×