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/