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
460
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
610
Laravel Sparkでサービス開発に注力する
k_kurikuri
0
1.1k
Lambdaで勤怠連絡
k_kurikuri
1
1.5k
Starting Laravel Spark
k_kurikuri
0
430
[Laravel5.6]CHANGELOGを斜め読み
k_kurikuri
0
5.1k
GoビギナーがGCPでGoアプリをリリースした話
k_kurikuri
1
890
英語で質問した話を 聞いて欲しい
k_kurikuri
0
240
Laravel5.5 - Package Auto Discoveryを理解する
k_kurikuri
0
1.2k
Laravelで乙女ゲームを開発した話
k_kurikuri
2
610
Other Decks in Technology
See All in Technology
50人の組織でAIエージェントを使う文化を作るためには / How to Create a Culture of Using AI Agents in a 50-Person Organization
yuitosato
6
3.2k
TopAppBar Composableをカスタムする
hunachi
0
170
Amebaにおける Platform Engineeringの実践
kumorn5s
6
900
Spring Bootで実装とインフラをこれでもかと分離するための試み
shintanimoto
4
420
Lakeflow Connectのご紹介
databricksjapan
0
100
20250413_湘南kaggler会_音声認識で使うのってメルス・・・なんだっけ?
sugupoko
1
390
IVRyにおけるNLP活用と NLP2025の関連論文紹介
keisukeosone
0
180
”知のインストール”戦略:テキスト資産をAIの文脈理解に活かす
kworkdev
PRO
9
4.2k
ウォンテッドリーにおける Platform Engineering
bgpat
0
190
古き良き Laravel のシステムは関数型スタイルでリファクタできるのか
leveragestech
1
640
いつも初心者向けの記事に助けられているので得意分野では初心者向けの記事を書きます
toru_kubota
2
270
Cursor AgentによるパーソナルAIアシスタント育成入門―業務のプロンプト化・MCPの活用
os1ma
9
3.2k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Fireside Chat
paigeccino
37
3.4k
Being A Developer After 40
akosma
91
590k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Code Reviewing Like a Champion
maltzj
522
39k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
4 Signs Your Business is Dying
shpigford
183
22k
The Language of Interfaces
destraynor
157
24k
Java REST API Framework Comparison - PWX 2021
mraible
30
8.5k
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௨Φ δαϯʹͳΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠