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
490
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
710
Laravel Sparkでサービス開発に注力する
k_kurikuri
0
1.3k
Lambdaで勤怠連絡
k_kurikuri
1
1.6k
Starting Laravel Spark
k_kurikuri
0
470
[Laravel5.6]CHANGELOGを斜め読み
k_kurikuri
0
5.3k
GoビギナーがGCPでGoアプリをリリースした話
k_kurikuri
1
940
英語で質問した話を 聞いて欲しい
k_kurikuri
0
270
Laravel5.5 - Package Auto Discoveryを理解する
k_kurikuri
0
1.2k
Laravelで乙女ゲームを開発した話
k_kurikuri
2
640
Other Decks in Technology
See All in Technology
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
260
非情報系研究者へ送る Transformer入門
rishiyama
4
3.8k
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
1.7k
わたしがセキュアにAWSを使えるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
cmusudakeisuke
1
450
チームメンバー迷わないIaC設計
hayama17
5
4k
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
430
管理者向けGitHub Enterpriseの運用Tips紹介: 人にもAIにも優しいプラットフォームづくり
yuriemori
0
170
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.1k
When an innocent-looking ListOffsets Call Took Down Our Kafka Cluster
lycorptech_jp
PRO
0
110
Security Diaries of an Open Source IAM
ahus1
0
210
DevOpsエージェントで実現する!! AWS Well-Architected(W-A) を実現するシステム設計 / 20260307 Masaki Okuda
shift_evolve
PRO
3
330
20260305_【白金鉱業】分析者が地理情報を武器にするための軽量なアドホック分析環境
yucho147
2
210
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.2k
Building an army of robots
kneath
306
46k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.4k
Building Adaptive Systems
keathley
44
2.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
400
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
Navigating Team Friction
lara
192
16k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
280
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
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௨Φ δαϯʹͳΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠