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
日本最大級のファッションDBを支える裏側/how to manage the complex ...
Search
Masayuki Imamura
February 28, 2016
Programming
4
860
日本最大級のファッションDBを支える裏側/how to manage the complex web service
dots. CONFERENCE SPRING 2016の「複雑高機能なwebサービスを支える技術」での発表内容です。
Masayuki Imamura
February 28, 2016
Tweet
Share
More Decks by Masayuki Imamura
See All by Masayuki Imamura
バイセルにおけるAI活用の取り組みについて紹介します/Generative AI at BuySell Technologies
kyuns
2
670
経営視点から捉えた開発生産性 / Development productivity from a management perspective
kyuns
12
9.3k
Qiita:Teamをハックして成果をあげるための情報共有方法/Qiita:Team
kyuns
6
3.4k
3年連続ベストアプリ受賞のプロダクトを支える裏側/The way to Achieve The Best App 3 years in a row
kyuns
1
1.7k
機械学習とデータ分析を支えるマルチクラウドなアーキテクチャの紹介/Multi Cloud Architecture Supporting Machine Learning and Data Analysis
kyuns
4
9.8k
iQONを支えるクローラー/iQON Crawler
kyuns
12
4.2k
iQONを支えるデータ分析基盤/iqon-bigquery
kyuns
3
10k
iQON Tools
kyuns
1
3.9k
プッシュ通知大戦争/effective push notification by iQON
kyuns
28
8.4k
Other Decks in Programming
See All in Programming
Coding Experience Cpp vs Csharp - meetup app osaka@9
harukasao
0
750
「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう / phpcon-odawara-2025
taniguhey
0
140
gen_statem - OTP's Unsung Hero
whatyouhide
1
200
Ruby's Line Breaks
yui_knk
2
950
Optimizing JRuby 10
headius
0
310
Being an ethical software engineer
xgouchet
PRO
0
210
サービスクラスのありがたみを発見したときの思い出 #phpcon_odawara
77web
4
640
AWS で実現する安全な AI エージェントの作り方 〜 Bedrock Engineer の実装例を添えて 〜 / how-to-build-secure-ai-agents
gawa
8
810
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
0
110
Building a macOS screen saver with Kotlin (Android Makers 2025)
zsmb
1
150
リストビュー画面UX改善の振り返り
splcywolf
0
140
ComposeでWebアプリを作る技術
tbsten
0
110
Featured
See All Featured
Producing Creativity
orderedlist
PRO
344
40k
Rails Girls Zürich Keynote
gr2m
94
13k
Adopting Sorbet at Scale
ufuk
76
9.3k
How GitHub (no longer) Works
holman
314
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
550
Optimizing for Happiness
mojombo
377
70k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Java REST API Framework Comparison - PWX 2021
mraible
30
8.5k
Transcript
HOW TO MANAGE THE COMPLEX WEBSERVICE ຊ࠷େڃͷϑΝογϣϯ%#Λࢧ͑Δཪଆ VASILY,Inc. @kyuns dots.
CONFERENCE SPRING 2016
ࠓଜխ @kyuns / Ωϡϯ VASILY,Inc औకCTO / Co-Founder 2006Yahoo!JAPANʹೖࣾɺYahoo!FASHION XBRANDͳͲͷαʔϏεͷ্ཱͪ͛ͷ։ൃΛ୲ɻ
ϦίϝϯσʔγϣϯͷಛڐͳͲΛऔಘޙɺ 2009ʹಠཱɺVASILYΛۀɻऔకCTOʹब
ઃཱ: 200811݄ ॴࡏ:౦ژौ୩۠ܙൺण1-18-14 ܙൺणϑΝʔετεΫΤΞ 9F ैۀһ: 50ਓ (ΤϯδχΞ20໊/ΠϯλʔϯؚΉ) ࢿຊۚ: 1ԯ
දऔక: ۚࢁ ༟थ औక:ࠓଜ խ / ઍ༿ େี גओ: ҏ౻ςΫϊϩδʔϕϯνϟʔζ / KDDIגࣜձࣾ άϩʔϏεɾΩϟϐλϧɾύʔτφʔζ / GMOϕϯνϟʔύʔτφʔζ /גࣜձࣾߨஊࣾ
.BU[͞Μٕज़ސ
άϩʔεϋοΫຊͰ·ͨ͠
ຊதͷϑΝογϣϯ ECαΠτͷσʔλΛܝࡌ ຊ࠷େڃͷঁͷࢠͷͨΊͷ ϑΝογϣϯΞϓϦʮΞΠίϯʯ ձһ 250ສਓ Google Play ϕετɾΦϒ 2015
ࣄۀΛࢧ͑Δຊப J20/ 1$41J04"OESPJE &$αΠτΫϩʔϥʔ "1* ࠂ৴ࣄۀ
"HFOEB ຊ࠷େڃͷϑΝογϣϯ%#Λࢧ͑Δཪଆ ෳࡶͳ8FCαʔϏεΛ։ൃ͢Δ࣌ʹ ཱͭઃܭख๏ΛͬͯΒ͏
w "1*Λࢧ͑Δٕज़ w ΫϩʔϥʔΛࢧ͑Δٕज़ w σʔλੳΛࢧ͑Δٕज़ ͭͷࣄྫ͔ΒֶͿϙΠϯτ
ͭͷࣄྫ͔ΒֶͿϙΠϯτ w "1*Λࢧ͑Δٕज़ w ΫϩʔϥʔΛࢧ͑Δٕज़ w σʔλੳΛࢧ͑Δٕज़
"1*Λࢧ͑Δٕज़
J20/ͷ"1* ΞΠςϜ ίʔσΟωʔτ γϣοϓ Ϣʔβʔ ϒϥϯυ ͋ΒΏΔϑΝογϣϯใΛ֨ೲͨ͠"1* 8FCJ04"OESPJE"1*ఏڙઌ͔Βར༻͞Ε͍ͯΔ શͯͷϩδοΫ͕٧·ͬͨ.POPMJUIJDͳ"1* Ҏ্ͷ"1*ΤϯυϙΠϯτ͕͋ΔͨΊɺ
ී௨ʹ࡞ΔͱΧΦεʹͳΔ
ڊେ8FCΞϓϦέʔγϣϯΛࢧ͑ΔϙΠϯτ w ΞϓϦέʔγϣϯͷઃܭ w .JDSP4FSWJDFT w %PDLFS
ΞϓϦέʔγϣϯͷઃܭ
3BJMTΞϓϦέʔγϣϯઃܭͷίπ w 3BJMTΛӡ༻͍ͯ͠Δͱ.PEFM͕ංେԽ͕ͪ͠ʹͳΔ w ղܾࡦͱͯ͠$POUSPMMFSͱ.PEFMͷؒʹ4FSWJDFΛಋೖ ˠ%PNBJO%SJWFO%FTJHO 3BJMT w .PEFMͷத͔Βผͷ.PEFMΛݺͼग़͍ͯ͠ΔͷͳͲΛ
ආ͚Δ IUUQRJJUBDPNKPPPFFJUFNTGEDEEGCGFC
4FSWJDFͷҐஔ͚ͮ
MicroServices
MicroServices w ڊେͳ"1*͔ΒαʔϏεͱͯ͠Γग़ͤΔ෦Λ3&45 "1*ͱͯ͠Γ͢ w ͦΕͧΕͷػೳʹ͋ͬͨ04ݴޠΛબͿ͜ͱ͕Ͱ͖Δ w શͯΛ.JDSP4FSWJDFԽ͢Ε͍͍ͱ͍͏Θ͚Ͱͳ͍ ύϑΥʔϚϯεͱͷτϨʔυΦϑ దͳίϯϙʔωϯτͷΈΓ͖͢
ྫ: ը૾͔ΒͷΞΠςϜఆAPI w Ϋϩʔϥʔ͔Βར༻͍ͯ͠Δ(PPHMFͷ$MPVE 7JTJPO"1*ϥΠΫͳࣗ࡞"1* w ϕʔεͱͯ͠1ZUIPOΛ༻͍͍ͯΔͷͰ6CVOUV 1ZUIPO 'MBTLͰ3&45"1*ͱͯ͠ߏங
%PDLFSͷ׆༻
ࠂ৴αʔόʔͰͷ%PDLFSࣄྫ EC2 SVCZ OHJOY NBDLFSFM qVFOUE AWS ElasticBeanstalk + Docker
Auto Scaling ΠϯελϯεͷதͰ֤%PDLFSίϯςφΛMJOL
&MBTUJD#FBOTUBML %PDLFS ϦΫΤετ࣌ؒଳʹԠͯ͡ΠϯελϯεΛ૿ݮͰ͖Δ Φʔτεέʔϧ ֤ϛυϧΤΞ͕%PDLFSίϯςφʹͳ͍ͬͯΔͨΊ ϛυϧΣΞͷݸผΞοϓσʔτָ͕ SVCZ OHJOY NBDLFSFM
qVFOUE SVCZ OHJOY NBDLFSFM qVFOUE SVCZͷίϯςφͷΈߋ৽ %PDLFSͷಛੑΛ׆͔͢
w "1*Λࢧ͑Δٕज़ w ΫϩʔϥʔΛࢧ͑Δٕज़ w σʔλੳΛࢧ͑Δٕज़ ͭͷࣄྫ͔ΒֶͿϙΠϯτ
ΫϩʔϥʔΛࢧ͑Δٕज़
Ϋϩʔϥʔ αΠτҎ্ɺສҎ্ͷΞΠςϜΛ ຖΫϩʔϧ Ձ֨ɺࡏݿใͳͲΛऔಘ
ΫϩʔϥʔΛࢧ͑ΔϙΠϯτ w పఈతͳࣗಈԽ ΧςΰϦఆɺϒϥϯυఆɺը૾ఆɺը૾Γൈ͖ɺλ ά͚ɺஈมߋݕɺ͋ΒΏΔ෦Λࣗಈతʹఆॲཧ͢ ΔΈɺࣗಈԽΛపఈ w పఈతͳޮԽ ΤϯδχΞͰͳͯ͘ΫϩʔϥʔΛ࡞ΕΔ(6*πʔϧΛ
ࣗಈԽେྔͷϑΝογϣϯΞΠςϜྨ w ΧςΰϦͷఆλά͚ΛࣗಈԽ ສޠͷϑΝογϣϯࣙॻ ػցֶश w ࠷ۙͰ$IBJOFSΛ༻͍ͯਂֶश ʢσΟʔϓϥʔχϯάʣΛߦ͍ը૾͔ ΒΧςΰϦఆߦ͍ͬͯΔ IUUQXXXTMJEFTIBSFOFU5BLFIJSP4IJP[BLJJRPO
ϫϯϐʔε Ֆฑ τοϓε
σΟʔϓϥʔχϯάͰΧςΰϦྨ IUUQUFDIWBTJMZKQFOUSZGBTIJPOEFFQMFBSOJOH
Ϋϩʔϥʔ࡞πʔϧ w Ϋϩʔϥʔ࡞ΛޮԽ͢Δࣾπʔϧ w ߲நग़ͷͨΊͷ91"5) จࣈྻૢ࡞ ਖ਼نදݱΛೖྗՄೳ w ೖྗσʔλͷϓϨϏϡʔػೳࡌ w
͍͠αΠτSVCZͷίʔυϚʔδՄೳ
w "1*Λࢧ͑Δٕज़ w ΫϩʔϥʔΛࢧ͑Δٕज़ w σʔλੳΛࢧ͑Δٕज़ ͭͷࣄྫ͔ΒֶͿϙΠϯτ
σʔλੳΛࢧ͑Δٕज़
ϋΠϒϦουΫϥυ ϝΠϯͷαʔϏεఏڙΠϯϑϥ σʔλੳج൫ͱͯ͠ͷΠϯϑϥ
BigQuery RDS Log Aggregater GoogleDataProc MongoDB GoogleDrive (SpreadSheet) API Server
Web Server fluentd fluentd fluentd J20/ͷσʔλղੳج൫ iOS/Android Puree 1VSFFΛར༻ͯ͠ड͚औͬͨϩάશͯqVFOEܦ༝Ͱ#JH2VFSZ 1VSFFIUUQUFDIMJGFDPPLQBEDPNFOUSZ
ϩάσʔλετϨʔδ w શͯͷσʔλϩά#JH2VFSZʹอଘ IUUQUFDIWBTJMZKQFOUSZCJHRVFSZ@EBUB@QMBUGPSN
BigQuery (PPHMF͕ఏڙ͢ΔϑϧϚωʔδυσʔλੳαʔϏε ѹతʹ؆୯͍͍҆ w ΞϓϦ1$εϚϗͷߦಈϩά w Ϛελʔ%#σʔλ GSPN3%4 w
Ϋϩʔϥʔͷશϩά w ϦίϝϯυΤϯδϯͷܭࢉ݁Ռ ͋ΒΏΔϩάΛͱʹ͔͘อଘ
ؾʹͳΔྉۚ w ετϨʔδ(# w ετϦʔϛϯάΠϯαʔτ. w ΫΤϦྔ5# J20/ͷ݄ؒར༻ঢ়گ w
ੳΫΤϦྔ5# w ༻ετϨʔδྔ5# ࣌
ෳࡶͳσʔλੳ5BCMFBVͰ #JH2VFSZ3%4ϦΞϧλΠϜʹѻ͑Δ ࡉ͔͍σʔλੳ5BCMFBV%FTLUPQ ࣾͰͷσʔλڞ༗ʹ5BCMFBV4FSWFS
ෳࡶͳσʔλܭࢉ%BUBQSPDͰ (PPHMF͕ఏڙ͢Δ)BEPPQ4QBSLͷϚωʔδυαʔϏε J20/Ͱ4QBSL :"3/ Λ༻͍ͨϦίϝϯσʔγϣϯͷ ܭࢉʹར༻ ࣗલͰ)BEPPQΫϥελΛ·ͳ͍͍ͯ͘ͷͰศར σʔλιʔεͱͯ͠#JH2VFSZΛར༻Մೳ
ࣗಈԽෳࡶͳόονॲཧ"JS'MPXͰ "JSCOC͕ࣾ։ൃͨ͠όονॲཧ࣮ߦϑϨʔϜϫʔΫ ෳͷδϣϒͷґଘؔͷղܾ ϦτϥΠॲཧͳͲΛ͏·ͬͯ͘͘ΕΔ IUUQTHJUIVCDPNBJSCOCBJSqPX
·ͱΊ w "1*Λࢧ͑Δٕज़ %%%.JDSP4FSWJDFT%PDLFS w ΫϩʔϥʔΛࢧ͑Δٕज़ ࣗಈԽޮԽ w σʔλੳΛࢧ͑Δٕज़ ($1#JH2VFSZ5BCMFBV%BUBQSPD
8F`SF)JSJOH 7"4*-:ςΫϊϩδʔͰ ϑΝογϣϯͷੈքΛม͑Α͏ͱ͍ͯ͠ΔձࣾͰ͢ νϟϨϯδͯ͠Έ͍ͨਓΛ ͓͓ͪͯ͠Γ·͢ IUUQWBTJMZKQ ઈࢍ৽نࣄۀ։ൃதʂ