eureka go ライブラリの話

120
eureka go Takuma Morikawa / eureka, inc. Copyright © 2009-2015 eureka, inc. All rights reserved.

Upload: takuma-morikawa

Post on 22-Jan-2018

1.128 views

Category:

Technology


1 download

TRANSCRIPT

eureka go

Takuma Morikawa / eureka, inc.

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

じこしょうかい

About me

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

なまえ Takuma Morikawa

しょぞく

たんとう (Go, JS, たまにインフラ)

じこしょうかい

エウレカについて

About eureka

株式会社エウレカ

専門分野以外の領域

でも活躍できる

エンジニア

55人

非エンジニア

40人

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

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

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

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

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

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

225万

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

リリース 2012年 10月

会員数 310万人

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

135万

45万

90万

190万3年で

300万人

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

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

リリース 2014年 5月

DL数 300万DL

プラットフォーム iOS/Android

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

215万

170万

130万

85万

45万

国内No.1

Today's Talk

golang libraries in pairs

今日お話すること

・pairsで使ってるライブラリとかのお話

ライブラリについて

基本方針

・あまり自前で作らない

ライブラリ

基本方針

・あまり自前で作らない

・なぜなら…

ライブラリ

あるよく晴れた日の朝…

one day, very sunny day morning…

※登場人物・話は全て架空の例です

私さん(仮名) ボス(仮名)

ʕººʔ ʕ ʘ ʘʔ

Charac te rs

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

pa i rs go 開発秘話

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

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

pa i rs go 開発秘話

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

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

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

pa i rs go 開発秘話

「森川さん」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「森川さん」>ʕ ʘ ʘʔ

「ちゃんとコード書いてますか」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「森川さん」>ʕ ʘ ʘʔ

「ちゃんとコード書いてますか」>ʕ ʘ ʘʔ

「6月リリースマストですよ?」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「森川さん」>ʕ ʘ ʘʔ

「ちゃんとコード書いてますか」>ʕ ʘ ʘʔ

「6月リリースマストですよ?」>ʕ ʘ ʘʔ

ʕººʔo0O(おええ…)

pa i rs go 開発秘話

「私が求めているのは」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「私が求めているのは」>ʕ ʘ ʘʔ

「コードを書くマシーンと化したあなたです」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「私が求めているのは」>ʕ ʘ ʘʔ

「コードを書くマシーンと化したあなたです」>ʕ ʘ ʘʔ

「一切の人間性を捨てて下さい」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「私が求めているのは」>ʕ ʘ ʘʔ

「コードを書くマシーンと化したあなたです」>ʕ ʘ ʘʔ

「一切の人間性を捨てて下さい」>ʕ ʘ ʘʔ

「おかしいな、休日は芝生が白いですね」>ʕ ʘ ʘ ʔ

pa i rs go 開発秘話

「私が求めているのは」>ʕ ʘ ʘʔ

「コードを書くマシーンと化したあなたです」>ʕ ʘ ʘʔ

「一切の人間性を捨てて下さい」>ʕ ʘ ʘʔ

「おかしいな、休日は芝生が白いですね」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

ʕººʔo0O(おええ…)

「スケジュール引き直したので」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「スケジュール引き直したので」>ʕ ʘ ʘʔ

「これでお願いしますわ」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「スケジュール引き直したので」>ʕ ʘ ʘʔ

「これでお願いしますわ」>ʕ ʘ ʘʔ

ʕººʔ<「?」

pa i rs go 開発秘話

ʕººʔ<「AWSが12月中になってます」

pa i rs go 開発秘話

ʕººʔ<「AWSが12月中になってます」

「AWS周りは3週間あげます」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

ʕººʔ<「AWSが12月中になってます」

「AWS周りは3週間あげます」>ʕ ʘ ʘʔ

ʕººʔ<「e2eも12月中になってます」

pa i rs go 開発秘話

ʕººʔ<「AWSが12月中になってます」

「AWS周りは3週間あげます」>ʕ ʘ ʘʔ

ʕººʔ<「e2eも12月中になってます」

「e2eは1週間あげます」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

ʕººʔ<「AWSって」

pa i rs go 開発秘話

ʕººʔ<「AWSって」

ʕººʔ<「Dynamo」

ʕººʔ<「SQS」

ʕººʔ<「SNS」

pa i rs go 開発秘話

ʕººʔ<「SES」

ʕººʔ<「S3」

ʕººʔ<「Redshift」

pa i rs go 開発秘話

ʕººʔ<「どこまで含めていってます?」

pa i rs go 開発秘話

ʕººʔ<「どこまで含めていってます?」

「AWSは」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

ʕººʔ<「どこまで含めていってます?」

「AWSは」>ʕ ʘ ʘʔ

「AWSです」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「その中にAWS以外のもの」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「その中にAWS以外のもの」>ʕ ʘ ʘʔ

「ありますか?」>ʕ ʘ ʘʔ

pa i rs go 開発秘話

「その中にAWS以外のもの」>ʕ ʘ ʘʔ

「ありますか?」>ʕ ʘ ʘʔ

ʕººʔo0O(おええ…)

pa i rs go 開発秘話

「その中にAWS以外のもの」>ʕ ʘ ʘʔ

「ありますか?」>ʕ ʘ ʘʔ

ʕººʔo0O(おええ…)

ʕººʔ<「ありません…」

pa i rs go 開発秘話

ʕººʔ<「…」

pa i rs go 開発秘話

ʕººʔ<「…」

ʕººʔo0O(どこか遠くへ行きたい…)

pa i rs go 開発秘話

そしてブラジルへ…

そしてブラジルへ…

ライブラリについて(再)

基本方針

・あまり自前で作らない

ライブラリ

基本方針

・あまり自前で作らない

=> 探す

ライブラリ

基本方針

・あまり自前で作らない

=> 探す

=> 探しても無かったら…?

ライブラリ

基本方針

・あまり自前で作らない

=> 探す

=> 探しても無かったら…?

=> もっと探す

ライブラリ

基本方針

・あまり自前で作らない

=> 探す

=> 探しても無かったら…?

=> もっと探す

=> それでも無かったら…?

ライブラリ

_人人人人人人人人人_

> つくるしかない <

 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄

ライブラリ

_人人人人人人人人人_

> つくるしかない <

 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄

ライブラリ

(嫌々)

framework

・revel

=> pairs全般

・goji

=> 決済周り

f ramework

Microserv ices on pa i rs

Microserv ices on pa i rs

(未来予想図)

Microserv ices on pa i rs

(現況)

( ;◔д◔)< なんでこれを選んだんすか?

f ramework

( ;◔д◔)< なんでこれを選んだんすか?

・ノリです

f ramework

( ;◔д◔)< なんでこれを選んだんすか?

・ノリです

f ramework

( ;◔д◔)< なんでこれを選んだんすか?

選定時に見た箇所

・フルスタック

・i18n

・柔軟性の低いもの

f ramework

ログ周り

・logrus

ログ周り

・logrus

・sentry

・fluentd

・(deferpanic)

ログ周り

・logrus

・sentry

・fluentd

・(deferpanic)

・spacemonkeygo/monitor

・zipkin

ログ周り

http

・goreq

ht tp

・goreq

vs gorequest

ht tp

・goreq

vs gorequest

・構造体 vs メソッドチェーン

ht tp

・goreq

vs gorequest

・構造体 vs メソッドチェーン

・ドットの位置が…

ht tp

config

・っていうか何使えばいいですか…

・自前で

・go-config-loader

conf ig

database

・xorm

database

・xorm

=> ORM

database

・xorm

=> ORM

・wizard

database

・xorm

=> ORM

・wizard

=> シャーディング

database

payment

・Apple, Google

payment

・Apple, Google

・go-iap

payment

・Apple, Google

・go-iap

・iOS 6 Style 非対応

payment

・Apple, Google

・go-iap

・iOS 6 Style 非対応

・PayPal

payment

・Apple, Google

・go-iap

・iOS 6 Style 非対応

・PayPal

・go-paypal-classic

payment

fixture

・GoogleSpreadSheetで管理

f i x tu reくん

・GoogleSpreadSheetで管理

=> YAML出力

f i x tu reくん

・GoogleSpreadSheetで管理

=> YAML出力

=> go-yml2sqlで変換

f i x tu reくん

・GoogleSpreadSheetで管理

=> YAML出力

=> go-yml2sqlで変換

・テスト時にinsert

・SQLを表示

f i x tu reくん

test

・go標準 + testify

t es t

・go標準 + testify

・ginkgo

t es t

・go標準 + testify

・ginkgo

=> コードが肥大化するにつれて死亡

t es t

CI

・CircleCI

CI

・CircleCI

・gvmで他バージョン対応

CI

・CircleCI

・gvmで他バージョン対応

・gox & ghr

CI

・CircleCI

・gvmで他バージョン対応

・gox & ghr

・codedeploy

CI

・CircleCI

・gvmで他バージョン対応

・gox & ghr

・codedeploy

・データロード周りでエラーになりやすい

CI

AWS

・goamzの時代

AWS

・goamzの時代

・誰のを使えばいいのか…

AWS

・goamzの時代

・誰のを使えばいいのか…

・aws-sdk-go

AWS

・goamzの時代

・誰のを使えばいいのか…

・aws-sdk-go

・aws-sdk-go-wrapper

AWS

・goamzの時代

・誰のを使えばいいのか…

・aws-sdk-go

・aws-sdk-go-wrapper

・DynamoDB, S3, SNS, SQS

AWS

・goamzの時代

・誰のを使えばいいのか…

・aws-sdk-go

・aws-sdk-go-wrapper

・DynamoDB, S3, SNS, SQS

・2ヶ月に1回破壊的変更…

AWS

まとめ

まとめ

・あまり自前で作らない

まとめ

・あまり自前で作らない

・それでも作らなければなかなかったら…

まとめ

_人人人人人人人人人人人人人_

> 一緒に作りましょう!! <

 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

まとめ

_人人人人人人人人人人人人人_

> 一緒に作りましょう!! <

 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

(切実)

おわり。

fin.

「世界で愛されるサービス」を一緒に作りませんか?

セグメントNo1 サービス

グローバルビジネス

Business

pairs Goフルスクラッチ

Engineering

マッチングアルゴリズム

Big Data

ハイブリッドエンジニア

大規模行動データ解析

CONFIDENTIAL

Thank you :)

Thank you :)