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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
450
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
570
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
1k
Understanding Apache Lucene - More than just full-text search
spinscale
0
130
安いハードウェアでVulkan
fadis
0
460
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
210
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
400
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
190
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.9k
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
260
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
580
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
230
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.4k
Google's AI Overviews - The New Search
badams
0
930
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
150
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to build a perfect <img>
jonoalderson
1
5.3k
Tell your own story through comics
letsgokoyo
1
850
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
480
Automating Front-end Workflow
addyosmani
1370
200k
Become a Pro
speakerdeck
PRO
31
5.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Technical Leadership for Architectural Decision Making
baasie
3
290
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 ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠