22
イイイイイイイイイイイイイ イイイイ 3 イイイイイイ 2014/11/23 イイイイイイイイイBizreach イイイイイイイイイ イイイイイイイイイイイイイイ zuknow イイ イイイイイイ イ イイイイイイイイ イイイイ イイイイ

渋谷エンジニア朝会@Bizreach 20141123

Embed Size (px)

Citation preview

インターナショナルサービス抑えたい 3 つのポイント

2014/11/23 渋谷エンジニア朝会@ Bizreach

株式会社ビズリーチプロダクトマーケティング本部 zuknow 事業

マネージャー 兼 チーフエンジニア鈴木康弘 やっぴー

2

Profile

• 鈴木康弘( yappy )– 株式会社ビズリーチ  Web 系エンジニア

• どんな人?– IT コンサルタント → 立ち上げ当初のビズリーチに転職– 6 番目の社員、マンションの一室 → 4年間社員 300 人超– 4 年間で 4 事業の立ち上げに参画

• Bizreach ESS 事業(紹介会社向けサービス)• Bizreach CRS 事業(一般人事向けサービス)• RegionUP 事業( Bizreach のアジア版、プロダクト責任者)• zuknow 事業(教育系サービス、暗記帳アプリ、プロダクト責任者)

– エンジニアリングとプロダクトマーケティングが強み

3

友だちと競える暗記帳アプリ「 zuknow 」

• 勉強を続ける事が学習者にとって最大の課題→解決したい

• 2014 年 1 月  iOS アプリ公開 • 2014 年 4 月  Android アプリ公開• 11 ヶ月で 19 万ダウンロード

4

友だちと競える暗記帳アプリ「 zuknow 」

• 実は、インターナショナルサービス• 50 カ国で利用

5

インターナショナルサービス 抑えたい 3 つのポイント

1. クライアント側の言語設定で動くように(言語リソース問題)

2. Master-DB は UTC0 で管理(時差問題)

3. 地球の裏側にサービスを、ネットワーク遅延は DWA で解決!(ネットワーク遅延問題)

6

インターナショナルサービス 抑えたい 3 つのポイント

1. クライアント側の言語設定で動くように(言語リソース問題)

2. Master-DB は UTC0 で管理(時差問題)

3. 地球の裏側にサービスを、ネットワーク遅延は DWA で解決!(ネットワーク遅延問題)

7

クライアント側の言語設定で動くように

DB中国語

API日本語

Client英語

• クライアント、 API 、 DB の言語がずれる事がよくある– 過去に中国語の設定にしていて、今は日本語設定で使ってるが、さっ

きクライアントの OS の言語設定を英語にしてみた

8

クライアント側の言語設定で動くように

DB中国語

API日本語

Client英語

• クライアント、 API 、 DB の言語がずれる事がよくある– 過去に中国語の設定にしていて、今は日本語設定で使ってるが、さっ

きクライアントの OS の言語設定を英語にしてみた

クライアントで構築される文字列は英語

9

クライアント側の言語設定で動くように

DB中国語

API日本語

Client英語

• クライアント、 API 、 DB の言語がずれる事がよくある– 過去に中国語の設定にしていて、今は日本語設定で使ってるが、さっ

きクライアントの OS の言語設定を英語にしてみた

API 側で構築する、バリデーションエラーなどの文字列は日本語で表示

10

クライアント側の言語設定で動くように

DB中国語

API日本語

Client英語

• クライアント、 API 、 DB の言語がずれる事がよくある– 過去に中国語の設定にしていて、今は日本語設定で使ってるが、さっ

きクライアントの OS の言語設定を英語にしてみた

DB に入っている文字は中国語で表示

11

クライアント側の言語設定で動くように

DBAPI日本語

Client英語

• DB に表示文字列は入れない、表示文字列は表示時に構築• 常にクライアント側の言語設定で動くように

DB に表示文字列を入れない

リクエスト内に、言語情報を入れ、表示時に構築

12

インターナショナルサービス 抑えたい 3 つのポイント

1. クライアント側の言語設定で動くように(言語リソース問題)

2. Master-DB は UTC0 で管理(時差問題)

3. 地球の裏側にサービスを、ネットワーク遅延は DWA で解決!(ネットワーク遅延問題)

13

Master-DB は UTC0 で管理

• ユーザーの時差に合った時間を表示する• アメリカ人に日本時間を出してもしょうがない• DB に、日本時間の Timestamp で保存してもいいが、、

14

Master-DB は UTC0 で管理

DBAPIClient

• DB の時間は UTC0 でいれる• API サーバーも UTC0 で動かす• 表示時に、表示時間文字列を時差を加味して構築

リクエスト内に、時差情報を入れ、表示時に構築

とにかく UTC0で Timestamp は保存

15

インターナショナルサービス 抑えたい 3 つのポイント

1. クライアント側の言語設定で動くように(言語リソース問題)

2. Master-DB は UTC0 で管理(時差問題)

3. 地球の裏側にサービスを、ネットワーク遅延は DCA で解決!(ネットワーク遅延問題)

16

地球の裏側にサービスを、ネットワーク遅延は DWA で解決!

• ネットワーク遅延、日本国内だと 10~50ms• アメリカやヨーロッパでは約 200ms• 単一拠点のインターナショナルサービスは地球の裏側のユーザー

までサポートしなくてはいけない• ネットワーク遅延は大きな問題

17

地球の裏側にサービスを、ネットワーク遅延は DCA で解決!

• DCA(Dynamic Content Acceleration)• 距離が遠い区間の通信を最適化、動的コンテンツのパフォーマン

スを向上• AWS の CloudFront(CDN サービス ) を使って DWA が出来る!

User

CloudFront( CDN )

Static Content

Dynamic Content

普通のアーキテクチャ

18

地球の裏側にサービスを、ネットワーク遅延は DWA で解決!

• CloudFront を動的コンテンツに対しても適応• TTL=0 に、動的コンテンツはキャッシュしないように• HttpHeader も引き継げるようになった

User CloudFront

Static Content

Dynamic Content

DWA のアーキテクチャ

19

地球の裏側にサービスを、ネットワーク遅延は DWA で解決!

• なぜ速くなるのか?– TCP/IP の Hand Shake 回数が減る– Hand Shake 回数が減り、 Web サーバー側の負荷も下がる– SSL 接続の TCP/IP Hand Shake 回数も減る

180ms

CloudFrontEdge

Location

Dynamic Content

360ms

30ms 60ms

SYN

SYN-ACK

ACK

GET /index.html

SYN

SYN-ACK

ACK

GET /index.html

SYN

SYN-ACK

ACK

GET /index.html

GET /index.html

20

地球の裏側にサービスを、ネットワーク遅延は DWA で解決!

• zuknow では平均的に約 700ms 速くなった!• また、スマホの接続が不安定なときでもつながりやすくなった• 単一拠点のインターナショナルサービスをやるときはどうぞ

User CloudFront

Static Content

Dynamic Content

DWA のアーキテクチャ

21

インターナショナルサービス 抑えたい 3 つのポイント

1. クライアント側の言語設定で動くように(言語リソース問題)

2. Master-DB は UTC0 で管理(時差問題)

3. 地球の裏側にサービスを、ネットワーク遅延は DWA で解決!(ネットワーク遅延問題)

22

ご清聴ありがとうございました

ビズリーチでは、Scala, Java, アプリエンジニア、Web デザイナー等積極採用中!

ご興味ある方は是非、お声おかけください

http://www.bizreach.co.jp/recruit/engineer-designer/