gunosy beer bash #05 pairs

71
Copyright © 2009-2016 eureka, inc. All rights reserved. Gunosy Beer Bash #05 Takuma Morikawa / eureka, inc.

Upload: takuma-morikawa

Post on 22-Jan-2018

370 views

Category:

Engineering


0 download

TRANSCRIPT

Copyright © 2009-2016 eureka, inc. All rights reserved.

Gunosy Beer Bash #05

Takuma Morikawa / eureka, inc.

じこしょうかい

About me

Copyright © 2009-2016 eureka, inc. All rights reserved.

なまえ Takuma Morikawa

しょぞく

たんとう (Go with VSC)

じこしょうかい

Copyright © 2009-2016 eureka, inc. All rights reserved.

なまえ Takuma Morikawa

しょぞく

たんとう (Go with VSC)

きんきょうe v a l p h o b i a / g o o g l e - a p i - g o - w r a p p e r

e v a l p h o b i a / e u r e k a c h e

じこしょうかい

Copyright © 2009-2016 eureka, inc. All rights reserved.

エウレカについて

About eureka

CONFIDENTIA

L

株式会社エウレカ

専門分野以外の領域

でも活躍できる

エンジニア

55人

Sales・CS・BO

37人

事業内容自社サービスの企画・開発・運営・オンライン・デーティング・サービス「pairs」

・カップル専用アプリ「Couples」

海外拠点・唯麗家股份有限公司(台湾)・ EUREKA SG Pte. Ltd.(シンガポール)

社員数: 105名インターン・業務委託含む

D/P

15人

デザイナー

8人

オンライン・デーティング・サービス「pa i rs」

12年9月13年3月13年9月14年3月14年9月15年3月15年9月16年3月

360万

。゚+\\390万会員突破//+.゚

リリース 2012年 10月

会員数 390万人

プラットフォーム PC/SP/iOS/Android

180万

90万

270万 3年半で390万人

カップル専用アプリ「Coup les」

。゚+\\350万DL突破//+.゚

リリース 2014年 5月

DL数 350万DL

プラットフォーム iOS/Android

14年5月 14年10月 15年3月

215万

170万

130万

85万

45万

国内No.1

Today's Talk

Go言語を使っていかにして成功したか

Go言語で我々はいかにして成功したか

pairsのおはなし

pairs-go

pairsのおはなし

pairs-go

🍺

今日お話すること

・PHPを卒業し、Goへ移行したときのこと

・最近のpairsの開発について

・GoっぽいことはGoConでいいよね…

Bye PHP, Let's Go

🍺

Bye PHP, Let 's Go

稼働中のpairsをPHPからGoに置き換えるプロジェクト

Bye PHP, Let 's Go

稼働中のpairsをPHPからGoに置き換えるプロジェクト

・既存アプリケーションのフルスクラッチ

Bye PHP, Let 's Go

稼働中のpairsをPHPからGoに置き換えるプロジェクト

・既存アプリケーションのフルスクラッチ

・DBスキーマ、システムアーキテクチャの改良

Bye PHP, Let 's Go

稼働中のpairsをPHPからGoに置き換えるプロジェクト

・既存アプリケーションのフルスクラッチ

・DBスキーマ、システムアーキテクチャの改良

・基本的にはデザインは変えず

Bye PHP, Let 's Go

2014年08月頃 構想開始

2014年12月 作業開始

2015年01月 チーム開発開始

↓↓↓

2015年6月末リリース予定!乞うご期待!!

Bye PHP, Let 's Go

2014年08月頃 構想開始

2014年12月 作業開始

2015年01月 チーム開発開始

↓↓↓

2015年6月末リリース予定!乞うご期待!!

Bye PHP, Let 's Go

2014年8月頃 構想開始

2014年12月 作業開始

2015年01月 バックエンドチーム開発開始

2015年03月 DBマイグレーションチーム開始

2015年04月 インフラ対応・ネイティブ対応チーム開始

2015年05月 インフラ対応・バックエンドチーム拡張

↓↓↓

Bye PHP, Let 's Go

2014年8月頃 構想開始

2014年12月 作業開始

2015年01月 バックエンドチーム開発開始

2015年03月 DBマイグレーションチーム開始

2015年04月 インフラ対応・ネイティブ対応チーム開始

2015年05月 インフラ対応・バックエンドチーム拡張

↓↓↓

2015年11月 台湾版リリース

Bye PHP, Let 's Go

2014年8月頃 構想開始

2014年12月 作業開始

2015年01月 バックエンドチーム開発開始

2015年03月 DBマイグレーションチーム開始

2015年04月 インフラ対応・ネイティブ対応チーム開始

2015年05月 インフラ対応・バックエンドチーム拡張

↓↓↓

2015年11月 台湾版リリース

2016年03月 日本版リリース

Bye PHP, Let 's Go

・オンラインデーティング特有の複雑さ

・Go言語・SPAのナレッジ不足

・既存運用のアップデート反映

Bye PHP, Let 's Go

・オンラインデーティング特有の複雑さ

・コミュニケーション部分は特にデリケート

・危ういコードでなぜかうまくいっていた箇所

・Go言語・SPAのナレッジ不足

・既存運用のアップデート反映

Bye PHP, Let 's Go

・オンラインデーティング特有の複雑さ

・コミュニケーション部分は特にデリケート

・危ういコードでなぜかうまくいっていた箇所

・Go言語・SPAのナレッジ不足

・運用に関するベストプラクティスが圧倒的に不足

・ライブラリを自作しなければならない箇所が多かった

・既存運用のアップデート反映

Bye PHP, Let 's Go

・オンラインデーティング特有の複雑さ

・コミュニケーション部分は特にデリケート

・危ういコードでなぜかうまくいっていた箇所

・Go言語・SPAのナレッジ不足

・運用に関するベストプラクティスが圧倒的に不足

・ライブラリを自作しなければならない箇所が多かった

・既存運用のアップデート反映

・※新規開発はストップしていた

Bye PHP, Let 's Go

■ 構想時代 ■(2014年10月)〜 2014年12月

・スケジュール考える

・Go触る

・新DBスキーマを考える

・MySQL WorkBenchのERD

・API仕様書をつくる

・既存のネイティブアプリ向けAPIを元に作成

・RESTfulに変更

・JSON Hyper-Schema

Bye PHP, Let 's Go

■ 開発開始時代 ■

2015年01月〜 2015年04月

・APIと管理画面を4人で開発

・Go & AngularJS

・フロントエンドエンジニアが1名増える

・仕様書ベースでのやりとり

・ほぼ分業体制

Bye PHP, Let 's Go

■ 春秋戦国時代 ■2015年04月〜 2015年06月

・各所で色々と増える

・バックエンドAPI 3.5人

・Webフロントエンド 2.5人

・管理画面 3人 ← New!

` ・DBマイグレーション 1.5人 ← New!

・ネイティブ修正 2人 ← New!

・インフラ構築 2人? ← New!

Bye PHP, Let 's Go

■ 春秋戦国時代 ■

2015年04月〜 2015年06月

・PHP版の運用開発も継続

・Web 3.5人

・インフラ 2人(Goと兼任)

・ネイティブ 2人

・メディア 1人

Bye PHP, Let 's Go

■ はじめての結合時代 ■

2015年07月〜 2015年08月

・リリースを9月にシフト

・まいにちデバッグ

・まいにちコミット

・まいにちデプロイ

・(コードが肥大化してこの頃から遅くなってくる…)

Bye PHP, Let 's Go

■ はじめての結合時代 ■

2015年07月〜 2015年08月

・メイン開発以外にも…

・本番運用に向けたインフラの構築 4人

・差分データ移行によるDBマイグレーション 2人

・決済システム開発 1人

・pairs・管理画面・バッチのレポジトリ統一

Bye PHP, Let 's Go

■ 台湾の時代 ■

2015年09月〜 2015年11月

・台湾版リリースを11月にシフト

・まだまだ細かい不具合がでてくる

・データの整合性チェック

・データ移行の速度 = メンテナンス時間

・負荷試験

Bye PHP, Let 's Go

■ 日本の時代 ■

2015年12月〜 2016年03月

・日本版リリースを3月にシフト

・まだまだ細かい不具合がでてくる again

・データ移行の速度が圧倒的に遅い

・負荷試験 again

Bye PHP, Let 's Go

■ 日本の時代 ■

2015年12月〜 2016年03月

・地味に日本版(PHP)のDB負荷が限界に達しそう

・台湾版のバグ修正・翻訳をしながら…

・Goフレームワークの変更を決断

=> web・管理画面・バッチのレポジトリ移行

・リリースブランチがカオス

そして伝説へ…

Hello, World

CONFIDENTIA

L

Bye PHP, Let 's Go

最近のpairsのおはなし

pairs-go

CONFIDENTIA

L

構成図

チーム体制

・KPIごとにチーム体制を編成

・マーケティング

・クオリティ

・マネタイズ

(↓プロダクトKPI以外のチーム)

・技術雑用

・インフラ

・グローバル

チーム体制

・色々な開発ボトルネック

・最終マージ担当者

・Webフロントエンド担当

・日台の共存

・落ち穂拾い問題

・慢性的な開発リソース不足!

今後の予定

今後の予定

・アルゴリズム周りの強化

・IACグループのナレッジを活用

・BQデータ x 機械学習

・マーケティング・オートメーション

・IACグループのナレッジを活用

・BQデータ x 機械学習

・グローバル展開 & 新規事業

CONFIDENTIA

L

IACブランド

おまけ

ʕººʔ<「うーん今日もいい天気」

きのう

ʕººʔ<「うーん今日もいい天気」

ʕººʔ<「こんな日はGoに限る」

きのう

ʕººʔ<「うーん今日もいい天気」

ʕººʔ<「こんな日はGoに限る」

ʕººʔ<「よーし仕事しちゃうぞ」

きのう

ʕººʔ<「あ」

きのう

ʕººʔ<「あ」

ʕººʔ<「明日LTじゃん」

きのう

ʕººʔ<「あ」

ʕººʔ<「明日LTじゃん」

ʕººʔ<「やばい、資料作らなきゃ..」

きのう

ところが…

「ヤバイっす」> (;◔д◔)

きのう

「ヤバイっす」> (;◔д◔)

ʕººʔ<「え…?」

きのう

「ヤバイっす」> (;◔д◔)

ʕººʔ<「え…?」

「マジヤバイっす」> (;◔д◔)

きのう

CONFIDENTIA

L

CONFIDENTIA

L

?!

Redis is dead…

きのう

きのう

・共用のキャッシュが詰まる

・マスタデータ

・検索キャッシュ

・コミュニティキャッシュ

・キャンペーンキャッシュ

・etc…

きのう

・共用のキャッシュが詰まる

・マスタデータ

・検索キャッシュ

・コミュニティキャッシュ

・キャンペーンキャッシュ

・etc…

=> 全てアプリサーバーのメモリキャッシュへ移行

きのう

・共用のキャッシュが詰まる

・マスタデータ

・検索キャッシュ

・コミュニティキャッシュ

・キャンペーンキャッシュ

・etc…

=> 全てアプリサーバーのメモリキャッシュへ移行

(github.com/evalphobia/eurekache 使ってください…)

CONFIDENTIA

L

構成図

CONFIDENTIA

L

構成図

CONFIDENTIA

L

R.I.P

きのう

おわり。

fin.

CONFIDENTIAL

Thank you :)

Thank you :)