WRITE はサーバー経由、READ は直接
● コメントは NG ワードのフィルタリングや、アカウント BAN したい
● スタンプはポイントが必要なのでポイントのチェックが必要
cookpadTV
comment
Filter NG
comment
comment
NG comment
NG comment
AWS Cloud
cookpadTV での AWS AppSync の使い方(詳細)
cookpadTV
API
Point System
cookpadTV
message
cookpadTV
MBR
check user’s
points
comment
heart
user
count
stamp
参考:https://speakerdeck.com/osadake212/cookpad-tech-kitchen-number-15
Slide 21
Slide 21 text
Service Mesh
● Microservices で必須になりつつある Service Mesh
○ 参考:クックパッド開発者ブログ Service Mesh and Cookpad
■ https://techlife.cookpad.com/entry/2018/05/08/080000
○ クックパッドでは Microservices 対応の環境が整備されている為、積極的に分けている
● Service Mesh とは
○ SDK 実装ではなく Sidecar Proxy(Envoy) 経由で通信する
○ Sidecar Proxy を管理、コントロール
■ 接続先や Timeout、Retry 設定など
app envoy
Other Service
Slide 22
Slide 22 text
cookpad Service Mesh
app envoy
sds-register
client side LB app
server side LB app
kumonos
CDS/RDS
updates
SDS
updates
SDS
registration
hook
Developers
SDS
参考:https://speakerdeck.com/taiki45/observability-service-mesh-and-microservices
接続したい
Service 名を渡す
Slide 23
Slide 23 text
cookpadTV サービス群
cookpadTV’s Service Mesh
cookpadTV
API
Point System
cookpadTV
message
cookpadTV
MBR
Accouting
Auth cookpad API User
Other services
クックパッド基盤サービス群
外部サービスも
Service Mesh に追加
average 5.22(-30.94)
fastest 0.16ms(-5.99)
slowest 36.05ms(-62.35)
Requests/sec 8,855.64(+7480.35)
最適化後
Response time histogram:
0.162 [1] |
3.751 [3638] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
7.340 [4344] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
10.930 [1532] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎
14.519 [311] |∎∎∎
18.108 [104] |∎
21.697 [31] |
25.286 [17] |
28.875 [19] |
32.464 [1] |
36.053 [2] |
Latency distribution:
10% in 1.86 ms
25% in 2.97 ms
50% in 4.67 ms
75% in 6.76 ms
90% in 8.99 ms
95% in 10.85 ms
99% in 17.29 ms
Status code distribution:
[OK] 10000 responses
Slide 39
Slide 39 text
MBW チューニングの軌跡
AppSync
書き込み開始
オンメモリ化
最適化後
Slide 40
Slide 40 text
MBW 最適化後設計
Slide 41
Slide 41 text
Comment Worker
凡例
cookpadTV MBW 設計(コメント部分)
Request Handler
Interval Worker
Write Worker
Flush Worker
time.AfterFunc
Post
has buffer?
buffer
over threshold?
Post Worker
channel
goroutine
Buffer
store comment
get buffer length
get buffer length
Post
Post
Buffered Channel
Buffered Channel 数分
同時起動
Slide 42
Slide 42 text
凡例
cookpadTV MBW 設計(全体)
Request Handler
Post
Post Worker
channel
goroutine
Post
Post
Buffered Channel
Buffered Channel 数分
同時起動
Comment Worker Heart Worker Stamp Worker User Count Worker
AWS AppSync への同
時送信数を制御