Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
日本最大級のファッションDBを支える裏側/how to manage the complex ...
Search
Masayuki Imamura
February 28, 2016
Programming
940
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
日本最大級のファッションDBを支える裏側/how to manage the complex web service
dots. CONFERENCE SPRING 2016の「複雑高機能なwebサービスを支える技術」での発表内容です。
Masayuki Imamura
February 28, 2016
More Decks by Masayuki Imamura
See All by Masayuki Imamura
バイセルにおけるAI活用の取り組みについて紹介します/Generative AI at BuySell Technologies
kyuns
2
1.9k
経営視点から捉えた開発生産性 / Development productivity from a management perspective
kyuns
12
11k
Qiita:Teamをハックして成果をあげるための情報共有方法/Qiita:Team
kyuns
6
3.9k
3年連続ベストアプリ受賞のプロダクトを支える裏側/The way to Achieve The Best App 3 years in a row
kyuns
1
1.8k
機械学習とデータ分析を支えるマルチクラウドなアーキテクチャの紹介/Multi Cloud Architecture Supporting Machine Learning and Data Analysis
kyuns
4
10k
iQONを支えるクローラー/iQON Crawler
kyuns
12
4.3k
iQONを支えるデータ分析基盤/iqon-bigquery
kyuns
3
11k
iQON Tools
kyuns
1
3.9k
プッシュ通知大戦争/effective push notification by iQON
kyuns
28
8.6k
Other Decks in Programming
See All in Programming
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
150
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
一人だけ、Kiroが静止する日
hideg
0
120
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
420
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2k
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
The Rails Doctrine Decade
koic
2
140
Heart of Swift Concurrency
koher
0
910
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
150
Jetpack Compose メカニズム
skydoves
0
450
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.8k
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
220
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Curse of the Amulet
leimatthew05
3
15k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Mind Mapping
helmedeiros
1
360
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
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 ઈࢍ৽نࣄۀ։ൃதʂ