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
Goをサービス投入して1年ほどの途中経過
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yoshi
May 30, 2018
Programming
2.9k
2
Share
Goをサービス投入して1年ほどの途中経過
Yoshi
May 30, 2018
More Decks by Yoshi
See All by Yoshi
Ruby on Railsな会社でGolangを導入した(する)話
yoshi42662
2
2.6k
Other Decks in Programming
See All in Programming
JOAI2026 1st solution - heron0519 -
heron0519
0
140
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
3
340
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
440
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
720
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
580
Coding as Prompting Since 2025
ragingwind
0
840
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
340
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
220
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
570
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
Making the RBS Parser Faster
soutaro
0
480
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
Ruling the World: When Life Gets Gamed
codingconduct
0
210
How to Talk to Developers About Accessibility
jct
2
180
Git: the NoSQL Database
bkeepers
PRO
432
67k
Building AI with AI
inesmontani
PRO
1
910
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
170
Automating Front-end Workflow
addyosmani
1370
200k
What's in a price? How to price your products and services
michaelherold
247
13k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
220
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
770
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Transcript
1 golang.tokyo #15 Մೳੑʹ GoΛαʔϏεೖͯ͠ 1΄Ͳͷ్தܦա May 30, 2018 Yoshihiro
Takahashi Development Unit Cluex Co.,Ltd.
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 2 ໊લ: ߴڮ Ղ (Takahashi Yoshihiro) Github:
@yoshi42662 Twitter: @yoshi_xxxxxiiii # ॴଐ גࣜձࣾCluex (Ϋϧʔ) ࣗݾհ # TODO Go͖ͳͷʹ࠷ۙ৮Ε͍ͯͳ͍ʂ # FIXME ࣾͰ͋͝ͻ͛ۚͱݺΕΔ
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 3 ࣗݾհ
ࢠҭͯʹΉϚϚୡͷҝͷʮࢠҭͯ૯߹ϝσΟΞʯ ࢠҭͯʹؔ͢ΔΑ͋͘ΔΈ͔Βͪΐͬͱ໘ന͍ࢠҭͯΤϐιʔυɺ ·ͨ࢈්ਓՊݕࡧ·ͰΛൃ৴ɻ ใΛൃ৴͢Δ͚ͩͰͳ͘ɺ࢈්ਓՊখࣇՊΫνίϛɺ ·͓ͨࢠ༷࿈ΕͰར༻͍͓͢͠ళͷใͳͲɺ ͨͩͷϝσΟΞʹཹ·Βͳ͍ɺϚϚ͞Μ͕ʮຊʹཉ͍͠ใʯΛ ൃ৴͢Δࢠҭͯ૯߹ϝσΟΞͰ͢ɻ https://mamanoko.jp 4
ϚϚͷજࡏతͳΈΛղܾ͢ΔʮࢠҭͯΞϓϦʯ · · ͷ ͯ 5
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 6 Application Ruby on Rails 5.1.4 React
/ Redux / Webpack Infrastructure AWS Docker on ECS ٕज़ελοΫ · · ͷ ͯ ࢠҭͯʹΉϚϚୡͷҝͷʮࢠҭͯ૯߹ϝσΟΞʯ ϚϚͷજࡏతͳΈΛղܾ͢ΔʮࢠҭͯΞϓϦʯ iOS Swift Clean Architecture Android Kotlin Clean Architecture Architecture Components API Go / echo / GORM
7 ࣾʹ͓͚ΔGoݴޠͷಋೖࣄྫ 1 ωΠςΟϒΞϓϦ༻API
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 8 ࣾʹGopher͍ͳ͍ Goྺ1िؒఔͰ࣮։࢝ 3ϲ݄΄ͲͰॳϦϦʔε GoͷϥΠϒϥϦબͼ͍͠ ࣾʹ͓͚Δ(Pݴޠͷಋೖࣄྫ ωΠςΟϒΞϓϦ༻
APIΛϑϧεΫϥον Go / echo / gorm MVCΞʔΩςΫνϟ firebase / Postgres / Elasticsearch AWS ECS / Blue-Green Deployment ߏ
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 9 * ϑϧεΫϥονͰ։ൃ → αʔϏεೖͯ͠1ऑ * ػೳՃͱϦϑΝΫλϦϯάΛͻͨ͢Β܁Γฦ͢
* ϓογϡ௨ͷόονʹΰϧʔνϯΛಋೖ * ruby gemΛgoͰॻ͖͠ * ϧʔςΟϯάϨϕϧͰgo-cacheʹΑΔΩϟογϡ ࣾʹ͓͚Δ(Pݴޠͷಋೖࣄྫ ͜Ε·Ͱʹओʹͬͨ͜ͱ ΞϓϦAPIʹٻΊΒΕ͍ͯΔ͜ͱ * jsonΛ͍͔ʹ͘ΫϥΠΞϯτฦ͔͢
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 10 ػೳతཁ݅ * SQL4ճ → ࣌ؒܭࢉ →
jsonม → σʔλྔ͕ଟ͘300~600ms / req. ͔͔Δ * ͕มΘͬͨॠؒʹΩϟογϡΛexpire͢Δඞཁੑ * ࠷খߏͰՄೳͳݶΓͷ্Λࢦ͢ ͬͨ͜ͱ * go-cacheΛಋೖ (·ͩΩϟογϡαʔόʔཱͯͨ͘ͳ͍) * routingϨϕϧͰͷΩϟογϡઃఆ͕Ͱ͖ΔΑ͏ʹͨ͠ * cacheΛอ࣋͢ΔࡍʹɺόΠφϦͰอଘ͢ΔΑ͏ʹมߋ * ฏۉ 30ms / req. ·Ͱվળ ࣾʹ͓͚Δ(Pݴޠͷಋೖࣄྫ
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 11 ݁Ռ * ΫϥΠΞϯταΠυͷΤϯδχΞ͔Β͕ۤ͘Δ → LoadingදࣔΛ࣮ͨ͠ͷʹLoading͕ग़ͳ͍ ࠓޙ
* TickerΛͬͯࣄલʹϨεϙϯεΛΩϟογϡʹͤΔ * singleflightͰಉ࣌ଟൃΞΫηεͷෛՙ؇ ࣾʹ͓͚Δ(Pݴޠͷಋೖࣄྫ
12 ࣾʹ͓͚ΔGoݴޠͷಋೖࣄྫ 2 Go on Rails
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 13 Ruby on RailsͷΞϓϦέʔγϣϯͷߴෛՙϩδοΫ → ruby࣮ʹΑΔtextlint(ຊޠͷจࣈྻॲཧ) →
ཁ্݅ɺΩϟογϡΛ༻Ͱ͖ͳ͍ → appαʔόʔͷworker͕ॲཧதͣͬͱ༗͞ΕΔ → 60 sec. / req. ࣾʹ͓͚Δ(Pݴޠͷಋೖࣄྫ × ϒϥβଆͰॲཧͤ͞Δ × αʔόʔϨε (AWS lambda etc.)
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 14 → ߴෛՙϩδοΫ෦ΛGo࣮ʹϦϓϨΠε → C༻όΠφϦʹมͯ͠Railsଆ͔Βffiܦ༝Ͱcall → 1sec.
/ req. ·Ͱվળ (60ഒͷ্) ࣾʹ͓͚Δ(Pݴޠͷಋೖࣄྫ Go࣮ + ffi (gem) 3VCZPO3BJMT %# #JOBSZ (P࣮ ⒏ ⒏ ˞'PSFJHO'VODUJPO*OUFSGBDFͷུ
$PQZSJHIU© $MVFY$P -UE"MM3JHIUT3FTFSWFE 15 8F`SFIJSJOH ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠