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
Cap'n Webについて
yusukebe
0
160
SQL Server 2025 LT
odashinsuke
0
130
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.3k
CSC307 Lecture 02
javiergs
PRO
1
760
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
320
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
4.9k
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
170
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
150
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
1k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
130
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
ラッコキーワード サービス紹介資料
rakko
0
2M
Google's AI Overviews - The New Search
badams
0
890
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Facilitating Awesome Meetings
lara
57
6.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
730
Producing Creativity
orderedlist
PRO
348
40k
Building Applications with DynamoDB
mza
96
6.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
110
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
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 ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠