これからWeb系のベンチャーで起業しようと思っている人へ考慮しなければいけないリストを作成した ~技術編~
Web系に限らずですがとにかくいろんなことを考えなければいけません。
業界で3年以上やっていたエンジニアならいざしれず、非エンジニアやフロントエンドしか触ったことのないエンジニア。
そして学生等々、Web系ベンチャーをやるには案外考えることが多いんだぜってことを伝えたいと思います。
- 開発編
- 運用編
- まとめ
という流れで説明します。
開発編
主にサービスローンチまでのプロセス。
最近でいうとMVP (Minimum Viable Product)だったりアジャイルだったりが流行っていますが、
とりあえずMVPを構築するまでに考えなければいけないことをリストを書いていきます。
1. 言語は何を使うか
一番ベーシックな概念にして、一番重要かもしれません。
とりあえずフロントエンドはさておき、バックエンドをどうするか。
ここで選択肢を上げておきます。
順番に悪意はありませんが、PHPの場合はすぐに始められドキュメントやライブラリも豊富。ただし世間ではぺちぱーなどと言われディスられがちだが、以前ユーザー数の衰えは感じられず。とにかく学習コストが低いのでこの記事のターゲットなら最有力候補。
PerlやPython, Scalaは使ったことがないのでなんとも言えませんが、
今回はRubyを押します。使うフレームワークはもちろんRuby on Railsで。
とにかく段違いのスピードでMVPを作れます。
RubyもPHPに負けず劣らず学習コストが低いのでそこも楽。
というわけで結論
Ruby on Rails 3 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2011/05/12
- メディア: 大型本
- 購入: 27人 クリック: 664回
- この商品を含むブログ (41件) を見る
Railsのインストールから簡単なアプリケーションの作成まで - nigoblog
Devise + omniauthでfacebookでログインする機能を実装でハマったところを説明 - nigoblog
2. データベースは何を使うか
これはMySQLがいいですね。なにせドキュメントが多い!
他にもmongoDBとかもありますが、メインで使うならやっぱりRDBMSがいいでしょう。
データベースはMySQLを!
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/12/14
- メディア: 大型本
- 購入: 17人 クリック: 373回
- この商品を含むブログ (46件) を見る
3. サーバーをどう用意するか
はっきりいうとレンタルサーバーはありえない。
あれは個人でブログとかやるのに利用する程度。ビジネス用にはつかえないですね。
あと自社サーバー、ラックを立ててやるタイプの。これはセキュリティ上良くない上に金もかかるし場所もかかるし電気代(CPU, クーラー)もかかるしスケールしにくいし、スタートアップには全く向いていない。
というわけでVPSかクラウドの2択。ここで推したいのはクラウド、さらにAWSを推します。
簡単、すぐにサーバーをたてられ、周辺のサーバー系サービスもフルで揃っている。
先人たちが残したデザインパターンに沿っていけばだれでも簡単に冗長化ができます。
ただし問題はコスト計算がやっかいなところ。
あらゆるサービスがあるのですべてを考慮するのは大変。だけどそれ以上に便利なのがAWS。
サーバー周りはAWSですべて解決!
Amazon Web Services クラウドデザインパターン実装ガイド
- 作者: 大澤文孝,玉川憲,片山暁雄,鈴木宏康
- 出版社/メーカー: 日経BP社
- 発売日: 2013/02/07
- メディア: 単行本
- 購入: 1人 クリック: 15回
- この商品を含むブログ (14件) を見る
Amazon Web Services クラウドデザインパターン 設計ガイド
- 作者: 玉川憲,片山暁雄,鈴木宏康
- 出版社/メーカー: 日経BP社
- 発売日: 2012/08/02
- メディア: 単行本
- 購入: 15人 クリック: 188回
- この商品を含むブログ (21件) を見る
お手軽環境構築 !chefでrubyのバージョンを2.0.0-p195にする方法 ~CentOS~ - nigoblog
Vagrantとchefで簡単お手軽ローカル環境構築 - nigoblog
4. バージョン管理をどうするか
バージョン管理は要するにソースコードをどう管理していくか。
これはGit一択。Subversionは正直古い(最近のベンチャーで使ってる話を聞いたことない)。
特にGithubを利用すればGit用にサーバーを建てる必要もない。
バージョン管理にはGithubで!
- 作者: 岡本隆史,武田健太郎,相良幸範
- 出版社/メーカー: 技術評論社
- 発売日: 2012/07/10
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 103回
- この商品を含むブログ (23件) を見る
GitとGithubの使い方~超初級編~ - nigoblog
Githubの使い方 Rails編 ~railsプロジェクトをGithubのリポジトリにアップ~ - nigoblog
5. デプロイをどうするか
Railsを使うのであればCapistrano一択。
今どきFTPでアップする人はいるのかな?
デプロイ前にさらにJenkins等CIツールを利用できれば最高。
他にもCircle CIというものがあるみたいですが。。。正直このへんはあまり詳しくないのでおすすめがあれば。
Capistranoを使っていればなんとかなる
- 作者: 黒田努
- 出版社/メーカー: インプレスジャパン
- 発売日: 2013/03/22
- メディア: 単行本(ソフトカバー)
- クリック: 3回
- この商品を含むブログ (6件) を見る
6. ドメインとSSL証明書はどうするか
ドメインはできればサービス名で、サービス名を決める際に予め利用できるかどうかはチェケラーしとく必要あり。
ドメインやSSL証明書は特にこだわりがなければ一番安いところで。
7. セキュリティはどうするか
CSRFやSQLインジェクション、XSSはRailsがすべて解決してくれる。
ただそれらがどのような攻撃方法かを知っておく必要はあり。
リリース前には徳丸本を読むこと!
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/03
- メディア: 大型本
- 購入: 119人 クリック: 4,283回
- この商品を含むブログ (136件) を見る
運用編
実際にローンチ・リリースした後の話。
ユーザーが入ってきてサービスが周り、収益が上がる段階。
9. 監視をどうするか
サービスにはどれだけ落ちている時間を減らせるかという事情があります。
監視には主に
- 外部監視
- 内部監視
- パフォーマンス監視
があります。
外部監視はつながるかどうか
内部監視はCPUやメモリなどの使用状況はどうか
パフォーマンス監視はスロークエリなどがないか
などいろいろありますが、上記の役目を果たします。
じゃあ具体的に何を使うかということですが、
外部監視にはNagios
内部監視にはGanglia
パフォーマンス監視にはNewRelic
といったところでしょうか。
他に良いのがあればよろしくお願いします。
三種類の監視体制で落ちない信頼性の高いサービスを!
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
- 作者: 安井真伸,横川和哉,ひろせまさあき,伊藤直也,田中慎司,勝見祐己
- 出版社/メーカー: 技術評論社
- 発売日: 2008/08/07
- メディア: 単行本(ソフトカバー)
- 購入: 133人 クリック: 2,270回
- この商品を含むブログ (285件) を見る
10. ディスク容量をどうするか
基本的にwebサービスはサーバー上に置かれます。
そしてサーバーのディスクを利用します。
開発時ならばこの時のディスクは
OS + ミドルウェア + Webアプリケーション
で使用されます。
しかし運用時にはLogがどんどんたまっていきます。
ApacheやNginxなどのアクセスログやエラーログ、
アプリケーションのエラーログ
cronの実行ログ
その他ミドルウェアのシステムログ等々
これらによりディスクの容量はどんどん圧迫されていきます。
なので運用時には
OS + ミドルウェア + Webアプリケーション + ログ
で使用されます。
これを考慮してディスクを増やしていきます。
Amazon Web ServiceではEBSというのを増やしていけば、枯渇した都度、ディスクを増やすことができます。
また、単純にディスクを増やすのではなく、ログファイルを別サーバーに逃がすという手法もあります。
これはfluentdを利用します。
運用時にはログによるディスク容量の圧迫に気をつけること!
Software Design (ソフトウェア デザイン) 2012年 06月号 [雑誌]
- 出版社/メーカー: 技術評論社
- 発売日: 2012/05/18
- メディア: 雑誌
- 購入: 4人 クリック: 68回
- この商品を含むブログ (10件) を見る
11. 決済システムをどうするか
例えば課金処理やプレミアムユーザー等、ユーザーに決済をさせる仕組み。
様々な企業がありますが、簡単にできるものとして
- paypal
- webpay
等があります。これらはSDKも公開されており、web上に資料があるため、簡単に導入できます。
- 作者: 五十嵐啓人,伊野亘輝,近藤宇智朗,渡邊恵太,須藤耕平,中島聡,A-Listers,はまちや2,川添貴生,片山育美,池田拓司,濱崎健吾,佐藤太一,曾川景介,久保渓,門脇恒平,登尾徳誠,伊藤直也,mala,後藤秀宣,若原祥正,奥野幹也,大林源,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/24
- メディア: 大型本
- この商品を含むブログを見る
12. KPI管理をどうするか
当然、サービスを運用するからには大きくしていきたいですよね。
その際、しっかり数値を取り、分析して改善することが重要です。
その数値の取り方や分析についてです。
まず、アクセス解析ならgoogle analyticsが無料で使えて良いでしょう。
ただ、あくまでとれるのはアクセスに関わることだけ、
他にも直接DBを叩かなければいけないKPIもあります。
Railsの場合はgoogle_driveというgemがあり、cronでDBにアクセスし、google docsのスプレットシートに出力するやり方が出来ます。
これによってSQLがわからない非エンジニアでも確認ができます。
管理画面を作る時間がない場合そのような方法を取りましょう。
Google Driveを利用したKPI管理!
まとめ
とりあえず最初はこんな感じでしょうか。
まだまだあると思うので徐々に加筆はしていきますが、
とにかくこれだけ考慮しなければいけないということを非エンジニアの方に伝わると良いかと思います。