Slide 9
Slide 9 text
9
発生した課題 - Push通知 (リリース前)
● 非機能要件:
○ 運行情報を即時に同時配信
○ 100万ユーザーを想定
● 負荷試験中にでた課題
○ Firestore SDKのTimeout
○ 1Documentのサイズが大きい
● ソリューション
○ encoding/binaryを使って圧縮
○ 駅や路線の増減は滅多にないため
{
“mypage” {
“push_setting”: {
acceptance: true,
…
},
“spots”: [
{“name”: “三軒茶屋駅”},
….
],
...
}
import “encoding/binary”
type Filter struct {
VersionByte uint8
Accept uint8
DayOfWeek uint8
Hour [3]uint8
Line [2]uint8
Station [19]uint8
}
buf := []byte{...}
rf := new(Filter)
}}
if err := binary.Read(buf, binary.BigEndian, rf); err != nil {
return nil, err
}
Firestore ドキュメント(擬似)
[0, 1, 0, 0, 0, 1, 1, 1]
バイナリ化(擬
似)
圧縮
Unmarshal