Inside Bokete 〜 チーム、アーキテクチャ、実装
もしあなたが「これは是非YAPCで見たい!」と思ったら、ソーシャルメディアボタンを押して応援してみてください。選考の際に参考にさせていただきます
Tweetトーク概要
僕ひとりでバックエンドを支えてきて、今やモバイルアプリのダウンロード数は400万を超える「 ボケて 」の例を用い、リモートベースのチーム体制、疎結合なアーキテクチャ、CPANモジュールを組み合わせた実装の3点に焦点を当てて、Perlを用いたWebアプリ開発の応用を話します。
Webサービス「 ボケて 」は2008年にサービスがスタートしました。当初から今でも、僕( a.k.a. yusukebe )はひとりでバックエンドの実装とインフラの運用を全て担当しています。また、将来の海外展開や他企業とのコラボを含め、今後あるべき姿を模索しています。
本トークでは出来る限りギリギリの範囲で、ボケての開発の裏側を紹介いたします。サービスが 「ユーザー0」からの開始 だったので、スタートアップサービスをこれから始めたい人にはもちろん有益なトークでしょう。また、ボケてではサービスの規模が大きくなったりや機能が複雑化するにあたって、アーキテクチャや実装を変化させています。 Webアプリケーションのスケールアップ に興味のある方も聞いていただきたいです。そして、我々ボケて開発チームは 完全なリモートでの開発 を進めており、 その弊害 にも気づきつつあります。こうした新しい開発、ITエンジニアの働き方も提案したいと思います。ボケてといえど、ベーシックなWebアプリケーションの側面を持つので、週末に開発をするような「ホビープログラマー」の方の聴講も歓迎です。なにより ボケてのバックエンドは「100% Perl」で出来ています 。「 Perlでどこまでやれるのか? 」といった疑問を持った他言語を扱っている方々も是非。
僕達は パートナー制 を導入し、各種得意分野を持つ企業と協業しています。バックエンドは弊社オモロキが面倒をみつつ、モバイルアプリの開発についてはパートナー企業のブレイブソフトさんが担当してくれています。こうした背景の元、各自がそれぞれの環境で離れた場所で開発を進めています。その際、SlackやGitHub、ドキュメンテーションツールを使ったコミュニケーションや仕様の受け渡しなど、やっていくうちに洗練されつつあります。
ボケてはスタートから4年後の2012年にまとめサイトなどに取り上げられ、一気に脚光を浴びました。その時に苦労したのは元々のアプリケーションが依存性の問題でスケールアウト出来なかったことです。結果、教訓を活かして、 ほぼフルスクラッチでコードを書き直し スケール出来るようなフレームワークの導入しました。また、最近では、HTTP上にJSON-RPC or RESTをインターフェースとした「 ロジックAPI 」を用意し、モバイルアプリもWebサイトも全て「ロジックAPI」を参照することにしました。それにより、ロジックを一元的に管理できたり、新規サービスがつくりやすくなったりという恩恵があります。
これらアーキテクチャを実装する際には当然CPANモジュールはかかせません。Cartonのお陰でモジュール管理がしやすくなったり、StarletやServer::Starterなどサーバ周りのソフトウェアが出てきました。また、いい意味で「 枯れた 」モジュールを利用することで堅牢なアプリケーションを Perlでつくることはたやすい と考えています。
以上、ボケてを事例に、 チーム、アーキテクチャ、実装 とそれぞれの工夫や知見を共有し、将来へつながるようなトークにします。気になったら応援よろしくお願いします。
トピックリスト (予定)
- チーム体制
- 僕の開発環境
- リモートの弊害
- 週1でルノアールに集まる
- 熱海で開発合宿
- 仕様を共有する
- チーム内の政治家
- Test::JSON::RPC::Autodoc
- GitHub Organization
- Markdownベースのドキュメンテーション
- アクセス急増を事故と捉える
- Catalystアプリが他の環境で動かない件
- Mojoliciousベースで書き換えた件
- モバイルアプリAPIの提供
- ロジックのみを切り出す
- データストアはMySQLとMemcachedのみを貫く
- JSON::RPC+OAuth::Lite2
- 海外展開を見据えたアーキテクチャ
- ロジックAPIとフロントWebを切り離して分業
- フロントサイドでのMojolicious活用
- Mojoliciousの上にさらにフレームワークをつくる
- CartonとAnsibleによる環境の再現
- DBx::Skinny/Tengと独自DBアクセスモジュール
- SQL::Maker
- Mouse, Data::Validator
- AngularJSの功罪
- テストを自然と強要する
- Fluentd + Google BigQueryによるログ追い等
- 人的コストをかけるのでは無くサービスを利用する
- AWSによる富豪的解決
- Librato+Uptimer.atによる監視
- 障害時の心構え
- and more...
トーク詳細
会場 | TBD |
---|---|
開始時間 | TBD |
カテゴリ | アプリケーション |
言語 | 日本語 |
スライド字幕 | 日本語 |
時間 | 60 分 |
想定観客層 | ビギナー |
写真撮影 | 許可 |
ビデオ撮影 | 許可 |