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 web service
Search
Masayuki Imamura
February 28, 2016
Programming
4
800
日本最大級のファッション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
経営視点から捉えた開発生産性 / Development productivity from a management perspective
kyuns
10
6.3k
Qiita:Teamをハックして成果をあげるための情報共有方法/Qiita:Team
kyuns
6
3.2k
3年連続ベストアプリ受賞のプロダクトを支える裏側/The way to Achieve The Best App 3 years in a row
kyuns
1
1.5k
機械学習とデータ分析を支えるマルチクラウドなアーキテクチャの紹介/Multi Cloud Architecture Supporting Machine Learning and Data Analysis
kyuns
4
9.5k
iQONを支えるクローラー/iQON Crawler
kyuns
12
4.1k
iQONを支えるデータ分析基盤/iqon-bigquery
kyuns
3
10k
iQON Tools
kyuns
1
3.8k
プッシュ通知大戦争/effective push notification by iQON
kyuns
28
8.2k
VASILY流エンジニアドリブン / vasily engineer driven way
kyuns
2
2.2k
Other Decks in Programming
See All in Programming
AWSでゲームサーバーを運用! Amazon GameLiftのお話
iriikeita
0
200
feature環境をGitHub ActionsとCloudFormationでいい感じに管理する
nealle
2
310
Ruby メモリ管理 プログラミング
megmogmog1965
0
130
リハビリmruby
kishima
1
160
Rubyのパフォーマンスプロファイリングの改善 / Enhancing performance profiling for Ruby
osyoyu
1
410
大規模マルチテナントを解決するYugabyteDBという選択肢
nnaka2992
1
250
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
140
APIのない大学ログインWebサービスをWKWebViewとJavaScriptでアプリ化した話
akidon0000
1
330
スクラムマスターって孤独じゃないですか?
yoshitaroyoyo
1
140
CSC307 Lecture 07
javiergs
PRO
0
220
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
Featured
See All Featured
A better future with KSS
kneath
231
17k
We Have a Design System, Now What?
morganepeng
46
7k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Optimizing for Happiness
mojombo
373
69k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
26
1.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
229
130k
Large-scale JavaScript Application Architecture
addyosmani
506
110k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
105
6.8k
Unsuck your backbone
ammeep
666
57k
GitHub's CSS Performance
jonrohan
1026
450k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Atom: Resistance is Futile
akmur
261
25k
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 ઈࢍ৽نࣄۀ։ൃதʂ