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
GunosyでのMicroservicesの現状とGoの使いどころ
Search
y_matsuwitter
March 11, 2015
Programming
6
4.7k
GunosyでのMicroservicesの現状とGoの使いどころ
Gunosy.go#11での発表資料
y_matsuwitter
March 11, 2015
Tweet
Share
More Decks by y_matsuwitter
See All by y_matsuwitter
Building Products in the LLM Era
ymatsuwitter
10
6.8k
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
2.5k
経営・意思・エンジニアリング
ymatsuwitter
23
19k
LLM in 2023 and 2024
ymatsuwitter
8
5.5k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
2.6k
LLM in toB Service and Its UX
ymatsuwitter
7
10k
Agent and small LLM validation
ymatsuwitter
7
2.9k
Information management for a culture of speed: The story of Notion and LayerX
ymatsuwitter
4
9.9k
Monorepo on AWS
ymatsuwitter
0
290
Other Decks in Programming
See All in Programming
「個人開発マネタイズ大全」が教えてくれたこと
bani24884
1
240
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
310
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
230
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
230
Boos Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
410
DRFを少しずつ オニオンアーキテクチャに寄せていく DjangoCongress JP 2025
nealle
2
280
Bedrock Agentsレスポンス解析によるAgentのOps
licux
3
930
Go 1.24でジェネリックになった型エイリアスの紹介
syumai
2
290
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.6k
15分で学ぶDuckDBの可愛い使い方 DuckDBの最近の更新
notrogue
3
540
Introduction to kotlinx.rpc
arawn
0
770
kintone開発を効率化するためにチームで試した施策とその結果を大放出!
oguemon
0
170
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Code Reviewing Like a Champion
maltzj
521
39k
Scaling GitHub
holman
459
140k
The World Runs on Bad Software
bkeepers
PRO
67
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
A designer walks into a library…
pauljervisheath
205
24k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
520
Designing for Performance
lara
604
68k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Documentation Writing (for coders)
carmenintech
67
4.6k
Transcript
GunosyͰͷ Microservisesͷݱঢ়ͱ Goͷ͍Ͳ͜Ζ @y_matsuwitter
ࣗݾհ • ։ൃຊ෦ࣥߦһࡶ༻ • iOS, Android, Infrastructure, Web • Golangڭ
• ਖ਼࠲ • ࠷ۙؾʹͳΔͷ: MQTT
࠷ۙίʔυॻ͚ͯ·ͤΜ…
ࠓͷ • GunosyͰӡ༻͍ͯ͠ΔMicroservicesͷ • ͦͷதͰGoΛͲ͏͍ͬͯΔ͔
Microservices = খ͞ͳαʔϏεͷΈ߹Θͤ
What is microservices? • <=> Monolithic • దͳنͷϏδωευϝΠϯ͝ͱʹ෦αʔϏεΛׂ • ΞϓϦέʔγϣϯଆ͔Β֤छAPIΛݺͼग़͢
• αʔϏεʹ߹Θٕͤͨज़બఆΛ࣮ࢪ • SOAͷম͖͠
Why microservices? • Ϗδωεʹ߹ΘͤͨνʔϜͷׂɾฤ • খ͞ͳαʔϏεʹΑΔଐਓੑͷرബԽ • Ϗδωεཁٻʹର͢ΔॊೈͳରԠ • ͍Βͳ͍ͷΛࣺͯΒΕΔ
ϞϊϦγοΫͳγεςϜͰɺϏδωε͕͢Δʹै͍վम ίετ͕૿Ճ͍ͯ͘͠
ࣄྫ: Soundcloud • طଘͷϞϊϦγοΫ͕͋ͬͨ • ϦϑΝΫλϦϯάͷஈ֊ͰαʔϏεΛੳ • ϏδωευϝΠϯ͝ͱʹMicroserviceΛߏங • FinagleϕʔεͷRPCͰେྔͷJVM্ͷΞϓϦΛ݁߹
• ͦͷ্Ͱ༷ʑͳݴޠΛӡ༻ ࢀߟ: Building Products at SoundCloud
MicroservicesͷதͰੜ ͖ΔGo
ͳͥGoͳͷ͔ • ֎෦ґଘͷͳ͍όΠφϦ • ܰྔ͔ͭϋΠύϑΥʔϚϯε • ڞ௨ϥΠϒϥϦΓग़ָ͕͠
GunosyͰͷ
None
• άϊγʔͱ͍͏୯ҰͷχϡʔεΞϓϦ • ෦ϏδωευϝΠϯ͝ͱʹׂ • PlatformߏʹΑΓ෦ͷϏδωευϝΠϯຖ݄̎ͭ΄Ͳ ૿͍͑ͯΔ
None
ࣾMicroserviceͷߏཁૉ • API༻HTTPαʔό • όονॲཧܥαʔό • ཧը໘ • Πϯϑϥߏɾཧπʔϧ
None
APIαʔό • ༻ҙ͞ΕͨσʔλΛదͳυϝΠϯϩδοΫʹͯฦ٫ • େͷAPI͕Golang
APIαʔόɺ͍ͬͯΔͷ • Kami ... WebFramework • mogi ... SQL stub
ϞσϧͳͲΛڞ༗ύοέʔδʹΓग़͠ɺ͍·Θ͢
ύοέʔδߏ • ϏδωευϝΠϯ͝ͱʹ1ϦϙδτϦ • ෦ߋʹࡉ͔͚ͨ͘υϝΠϯ͝ͱʹύοέʔδΛΔ example-service-1 ├── domain-1 ├── domain-2
├── main.go └── routes.go common-package ├── domain-1 ├── domain-2 └── main.go
None
όονॲཧ • ࣌ʹେྔͷσʔλΛɺAPIར༻KPIूܭͷͨΊʹར༻ • ෳαʔόͰͷฒྻॲཧ͕ඞཁͳ໘ଟʑ
όονॲཧ w/ Go • Goฐࣾͷόονॲཧʹࠓͷͱ͜Ζ΄΅ར༻͞Εͣ • େPython • ෳαʔόʹ·͕ͨΔͷPython +
Celery • APIͱͷڞ௨ॲཧ͕͋Γɺ1ΠϯελϯεͰࡁΉॲཧͷΈGo • ʢCacheσʔλͷੜͳͲʣ
None
ཧը໘ • σʔλεΩʔϚʹԠͯ͡ॊೈʹϑΥʔϜɾϦετΛੜɺॲ ཧ • ༷ʑͳόονॲཧΛΩοΫ͢Δ
ཧը໘ w/ Golang • ݴޠͷੑ࣭Ώ͑ɺॊೈͳϑΥʔϜੜɾӡ༻ʹ͍ͨπʔϧ গͳ͍ • ࣾͷཧܥDjango͔Rails͕ओ • APIܦ༝ͰGoAPIΛؒతʹར༻͢Δ͜ͱ͕ଟ͍
• νϟοτͷॲཧͳͲ
None
Πϯϑϥཧܥ • ֤छΞϓϦέʔγϣϯͷσϓϩΠ • ϞχλϦϯά
Πϯϑϥ w/ Go • ཧܥπʔϧͰGoͷͷଟ͍ • GoΛॻ͘͜ͱগͳ͍ • શମͷߏཧOpsworksͰ࣮ࢪ
σϓϩΠ w/ Go • go build͠ɺOpsworksʹΑΓඞཁͳϑΝΠϧ܈ΛS3ܦ༝Ͱ Β·͘ • CapistranoͷΓํʹ͍ۙσϓϩΠϑϩʔ /path/to/service
├── shared │ ├── logs │ ├── tmp │ └── config ├── 20150306085540 │ ├── bin │ ├── public │ └── etc... ├── 20150306090324 └── current -> /path/to/service/releases/20150306090324
·ͱΊ • ϏδωευϝΠϯ͝ͱʹҰͭͷαʔϏε܈Λ࡞ • GoʹͯύϑΥʔϚϯεΛ֬อͭͭ͠υϝΠϯؒɾϨΠϠʔؒ Ͱ࿈ܞ • ݱঢ়ͰαʔϏεͷՃʹ༨༟͕ग़ͯ͘Δఔʹ
Go + MicroservicesͰ αΫαΫαʔϏε֦େ
Future works... • gRPCͷར༻ʹΑΔαʔόؒ݁߹ • ΠϕϯτۦಈܕMicroservices(Reactive Microservices) • ৽͍͠هࣄ͕Ճ͞Εͨ =>
֤αʔϏε͝ͱʹউखʹඞཁ ͳॲཧ։࢝