20121019 engineer startup_meeting
-
Upload
shuichi-wada -
Category
Technology
-
view
545 -
download
0
description
Transcript of 20121019 engineer startup_meeting
CTOのサービスへの関わり⽅方 -‐‑‒ Engineer Startup Meeting -‐‑‒
株式会社nanapi 取締役 CTO
和田修一 <[email protected]>
12年10月23日火曜日
本日の内容
CTOとしてnanapiで奮闘してきた3年間について簡単にお話できればとおもいます!
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
システム構成といままでの経緯• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
開発体制の変化と現状• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
nanapiで成し遂げたいこと• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
自己紹介
和田修一 (わだっぷ)名前
株式会社nanapi 取締役 CTO
所属
略歴• 2005年 楽天株式会社へ新卒入社• インフラ系の運用部署へ配属• その後、国際事業の立ち上げに携わる• 2009年 株式会社ロケットスタート(現:株式会社nanapi)本格始動
Unix的なアレ -‐ h-p://d.hatena.ne.jp/wadap/
BLOG
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
創業して一人めのエンジニアということは
12年10月23日火曜日
創業して一人めのエンジニアということは
創業時はとにかくやることが多い!
12年10月23日火曜日
開発に関わるタスクだけあげていっても...
• 言語選定どうする?• フレームワークどうする?• ミドルウェアどうする?• 開発環境・テスト環境準備しないと... • サーバ業者選定• スケジュール検討• テスト!テスト!テスト!• 負荷試験、クオリティ管理• 監視の仕組みどうにかしないと• データバックアップ• セキュリティなんとかしないと• デプロイ方法• 自分が倒れたらどうする? etc...
12年10月23日火曜日
開発に関わるタスクだけあげていっても...
• 言語選定どうする?• フレームワークどうする?• ミドルウェアどうする?• 開発環境・テスト環境準備しないと... • サーバ業者選定• スケジュール検討• テスト!テスト!テスト!• 負荷試験、クオリティ管理• 監視の仕組みどうにかしないと• データバックアップ• セキュリティなんとかしないと• デプロイ方法• 自分が倒れたらどうする? etc...
12年10月23日火曜日
開発に関わるタスクだけあげていっても...
• 言語選定どうする?• フレームワークどうする?• ミドルウェアどうする?• 開発環境・テスト環境準備しないと... • サーバ業者選定• スケジュール検討• テスト!テスト!テスト!• 負荷試験、クオリティ管理• 監視の仕組みどうにかしないと• データバックアップ• セキュリティなんとかしないと• デプロイ方法• 自分が倒れたらどうする? etc...
12年10月23日火曜日
開発に関わるタスクだけあげていっても...
• 言語選定どうする?• フレームワークどうする?• ミドルウェアどうする?• 開発環境・テスト環境準備しないと... • サーバ業者選定• スケジュール検討• テスト!テスト!テスト!• 負荷試験、クオリティ管理• 監視の仕組みどうにかしないと• データバックアップ• セキュリティなんとかしないと• デプロイ方法• 自分が倒れたらどうする? etc...
12年10月23日火曜日
創業して一人めのエンジニアということは
ほかの部署がやってくれたことを全部自分でやらなければいけない!
12年10月23日火曜日
よく勘違いされがちなこと
面倒な社内調整とか、上司がいなくて自由に開発できるんだよね?
12年10月23日火曜日
よく勘違いされがちなこと
面倒な社内調整とか、上司がいなくて自由に開発できるんだよね?
調整はないけど、仕事量は膨大です!
12年10月23日火曜日
創業して一人めのエンジニアということは
全部自分でやらないといけないし、技術で何かあれば全部自分の責任
12年10月23日火曜日
創業して一人めのエンジニアということは
全部自分でやらないといけないし、技術で何かあれば全部自分の責任
会社員よりも圧倒的に大変です!
12年10月23日火曜日
簡単にまとめると
CTOとして起業にジョインするには、技術スキルだけでなく、ビジネススキルも重要
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
かねがない!
創業時は金がない!金は超重要。ないと死にます。
12年10月23日火曜日
かねがない!
創業時は金がない!金は超重要。ないと死にます。
エンジニアが貢献できることは、コストを削減するしかない
12年10月23日火曜日
一般的な負荷分散をするための構成
Load Balacner
Web Servers
DB Servers
Master Slave
12年10月23日火曜日
一般的な負荷分散をするための構成
Load Balacner
Web Servers
DB Servers
Master Slave
• こういったシステム構成は裏セグメントが用意されてることが前提
• 裏セグメントを繋ぐと高コスト• グローバル接続のサーバのみで何とかしたい
12年10月23日火曜日
一般的な負荷分散をするための構成
Load Balacner
Web Servers
DB Servers
Master Slave
• こういったシステム構成は裏セグメントが用意されてることが前提
• 裏セグメントを繋ぐと高コスト• グローバル接続のサーバのみで何とかしたい
画像ファイルは初期から分散しておかないと、早い段階でシステムが破綻する
12年10月23日火曜日
起業時の企画書(原文のママ)
12年10月23日火曜日
起業時の企画書(原文のママ)
どのページにアクセスが集まるのかを戦略からシステムへ落とす
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
検索ページ
投稿ページ マイページ
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
検索ページ
投稿ページ マイページ
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
検索ページ
投稿ページ マイページ
単純な処理を高速に
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
検索ページ
投稿ページ マイページ
単純な処理を高速に
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
検索ページ
投稿ページ マイページ
単純な処理を高速に
複雑な処理をそこそこの速度で
12年10月23日火曜日
初期にとっていた負荷分散構成
処理の複雑さ
処理速度
TOPページ 記事ページ
検索ページ
投稿ページ マイページ
フレームワーク利用せず
CakePHPを利用
12年10月23日火曜日
フレームワークは適材適所
全体の8割の負荷を占めるシステムが、実際はすごく単純なシステムだとしたら?
12年10月23日火曜日
フレームワークは適材適所
全体の8割の負荷を占めるシステムが、実際はすごく単純なシステムだとしたら?
フレームワークは通すだけで重いので、使い分けるだけで負荷軽減につながる
12年10月23日火曜日
踏まえた上でのnanapiの初期構成
Server Aフレームワーク動くけど、アクセス少ない
フレームワーク利用
Server B単純な処理だけど、アクセス多い
フレームワーク非利用
The Internet
<データ転送>
12年10月23日火曜日
踏まえた上でのnanapiの初期構成
Server Aフレームワーク動くけど、アクセス少ない
フレームワーク利用
Server B単純な処理だけど、アクセス多い
フレームワーク非利用
The Internet
¥ 9,800円 / month ¥ 7,800円 / month
<データ転送>
12年10月23日火曜日
踏まえた上でのnanapiの初期構成
Server Aフレームワーク動くけど、アクセス少ない
フレームワーク利用
Server B単純な処理だけど、アクセス多い
フレームワーク非利用
The Internet
インターネット経由でデータを同期
¥ 9,800円 / month ¥ 7,800円 / month
<データ転送>
12年10月23日火曜日
時は流れ
12年10月23日火曜日
時は流れ
12年10月23日火曜日
時は流れ
3年で月間訪問者数は2200万超えに
12年10月23日火曜日
システムの規模に合わせて、構成を変え続けていくことが必要
12年10月23日火曜日
システムの規模に合わせて、構成を変え続けていくことが必要
過去のシステムを捨て続ける勇気も必要
12年10月23日火曜日
画像をスケールアウトについてちょこっとお話します。
12年10月23日火曜日
画像の重要さ
12年10月23日火曜日
画像の重要さ
記事ページを表示する上で、重要なデータ
12年10月23日火曜日
画像の重要さ
記事ページを表示する上で、重要なデータ
12年10月23日火曜日
画像の重要さ
記事ページを表示する上で、重要なデータ
12年10月23日火曜日
nanapiにおける画像の重要さ
• 画像が多い記事だと、10枚前後の画像がはいる• APIでの記事提供も外部にしているため、• 大量のリクエストをさばく必要がある• データ量、システム負荷ともにスケールアウトできるようにしておく
• サムネイルなどでも使うため、動的にサイズを変更する仕組みが必要
12年10月23日火曜日
画像をスケールする仕組み
画像の参照先を1つに集中させないためのしくみを導入
12年10月23日火曜日
アプリケーションサーバ
画像アップロード&参照の仕組み
画像専用Fileサーバ
画像配信サーバ
Load Balacner Load Balacner
12年10月23日火曜日
アプリケーションサーバ
画像アップロード&参照の仕組み
画像専用Fileサーバ
PUT/GET/DELETE
画像配信サーバ
Load Balacner Load Balacner
12年10月23日火曜日
アプリケーションサーバ
画像アップロード&参照の仕組み
画像専用Fileサーバ
PUT/GET/DELETE
画像配信サーバ
Load Balacner Load Balacner
HTTP経由でリモートのサーバへファイルを登録NFSなどを利用すると、いろいろアレなので
12年10月23日火曜日
アプリケーションサーバ
画像アップロード&参照の仕組み
画像専用Fileサーバ
PUT/GET/DELETE
画像配信サーバ
Load Balacner Load Balacner
HTTP経由でリモートのサーバへファイルを登録NFSなどを利用すると、いろいろアレなので
lsyncdlsyncdで指定したディレクトリの操作イベントをキャッチして、その結果を画像サーバへ転送
12年10月23日火曜日
アプリケーションサーバ
画像アップロード&参照の仕組み
画像専用Fileサーバ
PUT/GET/DELETE
画像配信サーバ
Load Balacner Load Balacner
HTTP経由でリモートのサーバへファイルを登録NFSなどを利用すると、いろいろアレなので
lsyncdlsyncdで指定したディレクトリの操作イベントをキャッチして、その結果を画像サーバへ転送
Rsync
Rsyncプロトコルで随時転送
12年10月23日火曜日
HTTPで画像ファイルを投稿できるので、言語に左右されない仕組み
12年10月23日火曜日
フレームワークは適材適所
画像の容量が1サーバ内におさまらないとどうするの?
12年10月23日火曜日
投稿の容量が問題になれば
アプリケーションサーバ
画像専用Fileサーバ
ファイル名によってどのサーバに属するか対応表を管理
画像配信サーバ
Load Balacner Load Balacner
対応するサーバに対してファイルを転送する
12年10月23日火曜日
サーバが動作している環境についてちょこっとお話します
12年10月23日火曜日
サービスの特性
12年10月23日火曜日
サービスの特性
アクセス数の伸びがほぼ計算通りにふえていくサービス
12年10月23日火曜日
計画的にサーバを増設することで、物理サーバを利用しコストを下げられる
12年10月23日火曜日
クララオンラインさまのインフラ支援プログラムを利用
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
開発体制の変化 - 2009年時点の開発体制
社長 / Director
取締役 / Engineer
外部Designer
Engineer
Director
Designer
:1名:1名:0名
12年10月23日火曜日
開発体制の変化 - 2009年時点の開発体制
社長 / Director
取締役 / Engineer
外部Designer
約2ヶ月でnanapiを構築(別の受託をやりながら)
Engineer
Director
Designer
:1名:1名:0名
12年10月23日火曜日
開発体制の変化 - 2010年時点の開発体制
社員 / Designer
社長 / Director
取締役 / Engineer
Engineer
Director
Designer
:1名:1名:1名
12年10月23日火曜日
開発体制の変化 - 2010年時点の開発体制
社員 / Designer
社長 / Director
取締役 / Engineer
Engineer
Director
Designer
:1名:1名:1名
社員デザイナーを採用
12年10月23日火曜日
開発体制の変化 - 2011年時点の開発体制
取締役 / Engineer・Director
社員 / Designer 社員 / Designer
社員 / Engineer
Engineer
Director
Designer
:1名:2名:2名
12年10月23日火曜日
開発体制の変化 - 2011年時点の開発体制
取締役 / Engineer・Director
社員 / Designer 社員 / Designer
社員 / Engineer
Engineer
Director
Designer
:1名:2名:2名
エンジニアが2名に!
12年10月23日火曜日
開発体制の変化 - 2012年(現在)時点の開発体制
取締役 / Engineer・Director
Chief Product Manager
社員 / Engineer
社員 / Designer
社員 / Engineer
社員 / Engineer
社員 / Designer
社員 / Designer
社員 / Director 社員 / Designer
Engineer
Director
Designer
:1名:4名:4名
12年10月23日火曜日
技術からプロダクトへのシフト
「技術」から「プロダクト全般」を担当するようにシフト
12年10月23日火曜日
技術からプロダクトへのシフト
「技術」から「プロダクト全般」を担当するようにシフト
CTOとして技術に特化するか、サービスまで見るかは分かれ道
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
本日のアジェンダ
nanapiができるまで
システム構成といままでの経緯
開発体制の変化と現状
nanapiで成し遂げたいこと
• 創業時にとにかく大変なこと
• CTOは技術者の夢を叶えられるか?
• 創業当時のシステム構成
• 創業当時の負荷分散とアプリケーション構成
• 現在のシステム構成
• 画像ファイルをスケールアウトさせる仕組み
• 開発体制の変化
• 「技術」から「プロダクト」へのシフト
• ハウツーDBで世界 No1を目指す
• ハウツーの先にある便利な世の中へ
12年10月23日火曜日
nanapiで成し遂げたいこと
12年10月23日火曜日
nanapiで成し遂げたいこと
12年10月23日火曜日
nanapiで成し遂げたいこと
12年10月23日火曜日
nanapiで成し遂げたい世界観
○○についてわからないから検索して調べよう
12年10月23日火曜日
nanapiで成し遂げたい世界観
○○についてわからないから検索して調べよう
12年10月23日火曜日
nanapiで成し遂げたい世界観
○○のやり方について、nanapiで調べよう
12年10月23日火曜日
nanapiが成し遂げるべきこと
nanapiで探せばどんなハウツーも見つかるという世界を目指したい
12年10月23日火曜日
nanapiが成し遂げるべきこと
nanapiで探せばどんなハウツーも見つかるという世界を目指したい
「ハウツーDB」として世界最大の情報量をもつサービスへ
12年10月23日火曜日
nanapiが成し遂げるべきこと
そしてその先にあるより便利になった世の中を作ることに貢献したい
12年10月23日火曜日
nanapiが成し遂げるべきこと
そしてその先にあるより便利になった世の中を作ることに貢献したい
目標でもあり義務
12年10月23日火曜日
12年10月23日火曜日
12年10月23日火曜日