Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GKEとGaurunで作るPush通知サーバ
Search
k-kurikuri
October 19, 2018
Technology
3
420
GKEとGaurunで作るPush通知サーバ
k-kurikuri
October 19, 2018
Tweet
Share
More Decks by k-kurikuri
See All by k-kurikuri
Awesome goにあるOSSをGithubStar数高い順に出力するツールを作った
k_kurikuri
0
570
Laravel Sparkでサービス開発に注力する
k_kurikuri
0
1.1k
Lambdaで勤怠連絡
k_kurikuri
1
1.5k
Starting Laravel Spark
k_kurikuri
0
400
[Laravel5.6]CHANGELOGを斜め読み
k_kurikuri
0
5k
GoビギナーがGCPでGoアプリをリリースした話
k_kurikuri
1
850
英語で質問した話を 聞いて欲しい
k_kurikuri
0
240
Laravel5.5 - Package Auto Discoveryを理解する
k_kurikuri
0
1.1k
Laravelで乙女ゲームを開発した話
k_kurikuri
2
600
Other Decks in Technology
See All in Technology
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
複雑なState管理からの脱却
sansantech
PRO
1
140
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
750
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
AGIについてChatGPTに聞いてみた
blueb
0
130
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
590
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
790
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Documentation Writing (for coders)
carmenintech
65
4.4k
The Cult of Friendly URLs
andyhume
78
6k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Writing Fast Ruby
sferik
627
61k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Faster Mobile Websites
deanohume
305
30k
The Language of Interfaces
destraynor
154
24k
How STYLIGHT went responsive
nonsquared
95
5.2k
A better future with KSS
kneath
238
17k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Transcript
GKEͱGaurunͰ࡞Δ Push௨αʔό k-kurikuri @ Go(Un)Conference LTେձ 4kg
ΞδΣϯμ • ൃදʹ͍ͨΔྲྀΕ • Push௨ͱ • Gaurunͱ • GKEͱ •
࣮͢Δ্ͰͷΞϨίϨ • GoͰ࣮ͨ͠Օॴ • ·ͱΊ
ࣗݾհ • ϑϦʔϥϯεͷόοΫΤϯυΤϯδχΞ • k-kurikuriͱͯ͠ΠϯλʔωοτΛ㓢 • Gopherྺ͘Β͍
͜ͷൃදʹ͍ͨΔྲྀΕ • GoΛͬͨॳΊͯͷλεΫ͕Push௨αʔό ͷ࣮ͩͬͨ • ผҊ݅Ͱ࣮͕͋ͬͨͨΊGaurunɺDockerɺ GKEͷ༻େܾ·͍ͬͯͨ • ॳΊͯͷ࣮ͩͬͨࣄ͋ΓৼΓฦΓͳ͕ΒΞ τϓοτ
Push௨ͱ • iOS, Android, webϒϥβͳͲͰώϣίͬͱग़ͯ͘Δ௨ • ༷ʑͳΠϕϯτΛϢʔβʔʹ௨Ͱ͖Δ • iOS(APNs), Android(FCM)ͱAPI͕༻ҙ͞Ε͍ͯΔ
• ྻʹૹΔͱશϢʔβʔͷ௨…ॲཧ͕ॏ͘ͳΓ͕ͪ • Firebase NotificationͳͲSaas͋Δ͕ॊೈੑεέʔϦϯ άʹ͕…
ॊೈੑεέʔϦϯάͷ GaurunͰղܾͰ͖ͦ͏
Gaurun (Ψϧϯ)ͱ • ϝϧΧϦࣾͷGoͰ࣮͞ΕͨPush௨αʔό • ෦ͰgoroutineΛ༻͠pushϦΫΤετ ΩϡʔʹཷΊΒΕඇಉظʹ࣮ߦ͞ΕΔ • ϞχλϦϯάAPIͷఏڙAPNS, FCMͷΞΫ
ηεϩάɺΤϥʔϩάཷΊࠐ·ΕΔ
TODO: ਤ
GaurunΛGKE্ʹߏங͢Δ
GKEͱ • Google Kubernetes Engineͷུ • GCP͕ఏڙ͢ΔDockerίϯςφΛσϓϩΠɺӡ༻ ཧ͢ΔkubernetesΛ༻ͨ͠ϚωʔδυαʔϏε • kubernetes͕࣋ͭεέʔϦϯάɾࢮ׆ࢹɾࣗಈ࠶
ىಈɺωοτϫʔΫཧͳͲίϯςφΛཧ͢Δͨ Ίͷ๛ͳػೳΛఏڙ
࠾༻ͨ͠GKEߏஙͷϑϩʔ • Gaurun༻ͷDockerfileΛ࡞Δ • DockerΠϝʔδΛContainer RegistryʹΞοϓ ͢Δ • Terraform͔ΒContainer RegistryͷΠϝʔδ
ΛݩʹGKEίϯςφΛ࡞͢Δ
։ൃ/ຊ൪ͰͷઃఆϑΝΠϧΓ ସ͑ • kubernetesͷػೳʹ͋ΔʮConfigMap, Secretʯ Λ༻ • CofigMapੜσʔλ͕key, valueͰอଘ͞Ε ΔɻύεϫʔυͳͲػີσʔλΛѻ͏༻్ʹ
͍͍ͯͳ͍ • SecretΛ༻͢Δͱ҉߸Խ͞Εͯอଘ
GKEͷϩά • GKEͰαʔόߏங͢Δ߹ɺstdoutग़ྗ͢Δࣄ ͰStackDriver Loggingʹϩά͕ࣗಈͰྲྀΕΔ • GKEͰσϑΥϧτͰfluentdͷઃఆ͕͞Ε͍ͯͯ StackDriverLoggingʹૹ৴͞ΕΔ • StackDriverLoggingʹཷ·ͬͨϩάGCSʹอଘ
͢Δࣄ͕ग़དྷΔ
GCP্ͷਤ
None
Push௨αʔόΛ ࣮͢Δ্ͰͷΞϨίϨ
σόΠετʔΫϯ • ͲͷͰ͋Δ͔ʁΛࣝผ͢Δใ • Apple, GoogleͷSDKΛ௨ͯ͠ϓϥοτϑΥʔ Ϝ͔ΒτʔΫϯΛड͚औΓαʔόଆͰอଘ͢ Δ • σόΠετʔΫϯ༗ޮظݶ͕͋Γɺظݶ
ΕτʔΫϯ࠶ൃߦ͢Δඞཁ͕͋Δ
ແޮʹͳͬͨ σόΠετʔΫϯͷճऩ
ແޮʹͳͬͨσόΠετʔΫϯ • ແޮͳσόΠετʔΫϯͱʮ༗ޮظݶΕʯͱʮΞϯΠϯε τʔϧ͞Εͯૹ৴Ͱ͖ͳ͍ʯϞϊ͕2ͭ͋Δ • ༗ޮظݶΕͷτʔΫϯΛૹΔͱΤϥʔʹͳΔͨΊΞϓϦଆͰ ߋ৽͢Δඞཁ͕͋Δ • Ϣʔβʔ͕ΞϯΠϯετʔϧ͍ͯ͠Δ߹τʔΫϯ͕༗ޮͰ ಧ͔ͳ͍ͨΊΤϥʔʹͳΔ
• APNsͷFeedbackServiceAPIΛ༻͢ΔͱʮΞϯΠϯετʔ ϧʯ͞Εͯૹ৴ෆೳͳτʔΫϯ͕औಘͰ͖Δ
FeedbackServiceAPI • APNs͕ఏڙ͢ΔແޮͳσόΠετʔΫϯΛऔಘ ͢ΔͨΊͷAPI • ϦΫΤετ͢ΔͨͼཷΊΒΕͨແޮͳσόΠε τʔΫϯআ͞ΕΔ • AppleͷنͰରԠϚετɻఆظతʹσό ΠετʔΫϯΛճऩ͍ͯ͠Δ͔ࢹ͞Ε͍ͯΔ
ΞϓϦέʔγϣϯʢGoʣͰ ࣮ͨ͠ػೳ
None
GoͰ࣮ͨ͠ػೳ • gaurunͷΫϥΠΞϯτॲཧ • ΠϕϯτʹԠͨ͡Push௨CLI • ΠϕϯτʹԠͨ͡Push௨APIϦΫΤετ • ΤϥʔτʔΫϯͷݕग़CLI •
༗ޮظݶΕτʔΫϯݕग़CLI
࠷ޙʹ • ख୳ΓͰͷ࣮ͳͷͰ͜Ε͕ϕετϓϥΫςΟε͔Θ ͔Βͳ͍ • ௨ΛૹΔ͚ͩͰͳ͘ɺແޮͳσόΠετʔΫϯͷ ཧͳͲࢥͬͨΑΓΔ͜ͱ͕ଟ͔ͬͨ • ཁ݅ʹΑͬͯSaasͰγϟοͱΔͷྑ͍ͷͰ •
Push௨ʹؔ͢ΔࣄԿ͔ͱ͞ΕΔͨΊɺPush௨Φ δαϯʹͳΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠