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
Yoshi
May 30, 2018
Programming
2
2.9k
Goをサービス投入して1年ほどの途中経過
Yoshi
May 30, 2018
Tweet
Share
More Decks by Yoshi
See All by Yoshi
Ruby on Railsな会社でGolangを導入した(する)話
yoshi42662
2
2.6k
Other Decks in Programming
See All in Programming
Claude Codeで挑むOSSコントリビュート
eycjur
0
200
個人軟體時代
ethanhuang13
0
320
AI時代のUIはどこへ行く?
yusukebe
16
8.4k
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
1.7k
Rancher と Terraform
fufuhu
2
230
CloudflareのChat Agent Starter Kitで簡単!AIチャットボット構築
syumai
2
440
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
OSS開発者という働き方
andpad
5
1.7k
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
580
AWS発のAIエディタKiroを使ってみた
iriikeita
1
170
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.4k
コンテキストエンジニアリング Cursor編
kinopeee
1
760
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
200k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Fireside Chat
paigeccino
39
3.6k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
RailsConf 2023
tenderlove
30
1.2k
A designer walks into a library…
pauljervisheath
207
24k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Facilitating Awesome Meetings
lara
55
6.5k
Balancing Empowerment & Direction
lara
3
610
The Art of Programming - Codeland 2020
erikaheidi
55
13k
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 ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠