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
430
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
590
Laravel Sparkでサービス開発に注力する
k_kurikuri
0
1.1k
Lambdaで勤怠連絡
k_kurikuri
1
1.5k
Starting Laravel Spark
k_kurikuri
0
410
[Laravel5.6]CHANGELOGを斜め読み
k_kurikuri
0
5.1k
GoビギナーがGCPでGoアプリをリリースした話
k_kurikuri
1
860
英語で質問した話を 聞いて欲しい
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
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
190
効率的な技術組織が作れる!書籍『チームトポロジー』要点まとめ
iwamot
2
120
いまからでも遅くないコンテナ座学
nomu
0
140
事業貢献を考えるための技術改善の目標設計と改善実績 / Targeted design of technical improvements to consider business contribution and improvement performance
oomatomo
0
160
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
120
なぜCodeceptJSを選んだか
goataka
0
180
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
120
型情報を用いたLintでコード品質を向上させる
sansantech
PRO
2
150
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
1
4.8k
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
260
React Routerで実現する型安全なSPAルーティング
sansantech
PRO
2
300
Storage Browser for Amazon S3
miu_crescent
1
300
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
170
Designing for humans not robots
tammielis
250
25k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
The Invisible Side of Design
smashingmag
298
50k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Statistics for Hackers
jakevdp
796
220k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Writing Fast Ruby
sferik
628
61k
A Philosophy of Restraint
colly
203
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
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௨Φ δαϯʹͳΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠