20121019 engineer startup_meeting

Post on 10-Dec-2014

545 views 0 download

description

 

Transcript of 20121019 engineer startup_meeting

CTOのサービスへの関わり⽅方  -‐‑‒  Engineer  Startup  Meeting  -‐‑‒  

株式会社nanapi 取締役 CTO

和田修一 <shuichi.wada@nanapi.co.jp>

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日火曜日