Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
スタートアップは Rails を使うべきか @yuya-takeyama SRE at Quipper
Slide 2
Slide 2 text
今日話すこと ● スタートアップ期をとっくに終えた今も Rails を 使い続ける会社にいて感じていること ● 副業含めてスタートアップやベンチャーの人から の相談に対して話してきたこと ● そういった中から感じた「魅力的な会社」と「働 き方」について
Slide 3
Slide 3 text
自己紹介 ● @yuya-takeyama ● 2015 年 9 月 ~ Web Developer at Quipper ○ Rails, React, React Native など ● 2018 年 4 月 ~ SRE at Quipper ○ Kubernetes を使ったプラットフォームの構 築、移行
Slide 4
Slide 4 text
自己紹介 ● 副業 at 株式会社オクタウェル ○ ヘルスケア系スタートアップ ○ PHP, Laravel, AWS Lambda (TypeScript), CircleCI 等
Slide 5
Slide 5 text
スタートアップは Rails を使うべきか
Slide 6
Slide 6 text
結論
Slide 7
Slide 7 text
好きなフレームワークを 使えばいいと思う
Slide 8
Slide 8 text
2018 年における Web アプリケーション ● フロントエンドも含めて作り込まれていて当たり 前 ○ SPA, SSR, PWA... ● フレームワークにはフロントエンドの開発も含め た機能セットが求められる ● 一方でサーバサイドでは API だけで十分、とい う領域も増えてきた
Slide 9
Slide 9 text
そんな時代における Rails ● 時代に合わせて進化を重ねている ○ Asset Pipeline (Rails 3.1~) ○ Webpacker (Rails 5.1~) ○ API モード (Rails 5~) ● 基本的にはフロントエンド・サーバサイドともに いい感じのデフォルトが提供されている ○ Rails is omakasae (2012)
Slide 10
Slide 10 text
Rails is omakase の逆の側面 ● Rails のやり方が気に入らなければ Rails を使わ なければ良い ○ フロントエンドは Babel, Webpack, TypeScript のビルド環境を自分で整えて ○ サーバサイドは Go の net/http で手書きの Middleware と共に ● 自分で選んで自分で作っていく (大変ですね...)
Slide 11
Slide 11 text
2018 年における Rails ● 相対的には Rails を使い続ける理由は減ってきて いると言える ○ 単純にその他の選択肢が増えて、意味を持っ てきた、という意味で ● でも絶対的に Rails の価値が下がったとは言えな い (たぶん)
Slide 12
Slide 12 text
Quipper と Rails ● 2012 には Rails を使い始めている (今年で 7 年 目) ● MongoDB (というか MongoMapper) が足かせと なって 4.2 で止まっている... ● Heroku, Deis を経て Kubernetes に ● マイクロサービス化がまさに始まろうとしている ところ
Slide 13
Slide 13 text
Web アプリケーションの構成要素と寿命 ● アプリケーションコード ● インフラ・クラウド ● 言語・フレームワーク・ライブラリ ● データ
Slide 14
Slide 14 text
Web アプリケーションの構成要素と寿命 ● アプリケーションコード ● インフラ・クラウド ● 言語・フレームワーク・ライブラリ ● データ <- たぶんこれが一番長生き
Slide 15
Slide 15 text
データさえちゃんとしていればなんとかなる ● 枯れたデータストアをちゃんと選んで使う ● ちゃんとメンテされる ORM を選ぶ ○ または ORM を使わず抽象化を必要最小限にと どめる ● データのモデリングはしっかり考える
Slide 16
Slide 16 text
データさえちゃんとしていればなんとかなる ● という前提を踏まえれば、極論好きなフレーム ワークを使えばいいと思う ● 特に好みや技術的に特殊な条件がなければ Rails 自体は決して悪い選択肢ではない ○ 本当にダメそうならその時方向転換すれば良 い
Slide 17
Slide 17 text
スタートアップが 選ぶべきインフラとは
Slide 18
Slide 18 text
Heroku はいいぞ
Slide 19
Slide 19 text
複数のスタートアップの人と話して感じたこと ● AWS 利用率の高さ ○ EC2 を手動で立てて git pull でデプロイしてい たり ○ ECS でデプロイの仕組みをめっちゃ頑張って 構築しようとしていたり ● イケてなかった選定理由「投資家に言われたか ら」「知り合いの起業家が使っていたから」
Slide 20
Slide 20 text
複数のスタートアップの人と話して感じたこと ● Heroku 利用率の低さ ○ AWS に比べると Heroku を偉い人に通しづら い? ○ ここを通せる腕力、または会社側に柔軟性が あると色々と良くなる ● レイテンシをネックとしてあげるケースもある ● プロダクトの構築・改善を最優先にすべきでは?
Slide 21
Slide 21 text
Heroku の良いところ ● とにかくアプリケーションを立ち上げるまでが早 い! ● 金でスケールできる ● インフラとかコンテナのことを意識しなくて良い ○ コンテナの偏りを直したりとか... ● Review Apps, Add-on
Slide 22
Slide 22 text
Heroku の良いところ ● 12 Factor App! ○ サーバサイドアプリケーションにおけるアー キテクチャの養成ギプス ○ これだけ守れてれば将来的にコンテナ化した り Kubernetes に載せること自体は全然難しく ない
Slide 23
Slide 23 text
おまけ: Heroku のレイテンシに関して ● CDN を利用すればある程度改善できる (キャッ シュしない動的コンテンツでも) ○ Edge TLS Termination, Route Optimization, Dynamic Site Acceleration… ○ Sinatra で 800 msec 程度が 500 msec 程度に ○ 速くはないがそんなに悪くもない? (B2B サー ビスなら特に)
Slide 24
Slide 24 text
まとめ
Slide 25
Slide 25 text
スタートアップ期の会社にオススメしたいこと ● フレームワークに何を使うかは些細な問題 ○ データやモデルにこそ目を向けるべき ● プロダクトの開発に集中するためにコストを使う ○ Heroku はいいぞ, Kubernetes は多分まだいい ○ 他の PaaS でも楽できるならなんでもよし ● 何をやる・やらないにしても理由づけを明確に ○ 枯れた技術でもプロダクトをしっかり作れている会 社はそれだけで十分魅力的
Slide 26
Slide 26 text
エンジニアとスタートアップの関係性 ● 働くならプロダクトに向き合えている企業 ○ その分技術的負債を抱えていたとしても、自 分の知見で一気にレバレッジがかけられるか も ○ 短期間・高単価で働けるチャンスもあるかも ● そういったことがあちこちで起これば業界全体の レベルアップにも繋がりそう