Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Hatena Engineer Seminar #14 ຐ๏ͷiΒΜͲ σʔλҠߦฤ ʙ৽چγεςϜؒͷσʔλϚΠάϨʔ γϣϯ࣌ʹզʑ͕ߟ͑Δ͜ͱʙ id:tkzwtksʢ୍ᖒ ਸʣ
Slide 2
Slide 2 text
ࣗݾհ • id:tkzwtks ୍ᖒ ਸ • 201511݄ೖࣾ • ۀྺ • ΧΫϤϜʢKADOKAWA༷ʣ • GigaViewer • ͯͳμΠΞϦʔऴྃ(ͯͳμΠ ΞϦʔ͔ΒϒϩάͷҠߦ࡞ۀ) • Ҿӽ͠Ҋ݅3݅͘Β͍
Slide 3
Slide 3 text
վΊͯຐ๏ͷiΒΜͲ֓ཁ • KADOKAWA༷͕ӡӦ͢Δʮຊ࠷େڃͷΨʔϧζΤϯλς ΠϝϯταΠτʯ • 1999ʹແྉϗʔϜϖʔδ࡞αʔϏεͱͯ͠ελʔτ • খઆߘػೳͰʮ࿀ۭʕφΠ࿀ޠʯͷਓؾ࡞͕ੜ ·Ε͍ͯΔ • 20ͷখઆؔ࿈σʔλ͕ཷ·͍ͬͯΔ
Slide 4
Slide 4 text
ࠓ͢͜ͱ • σʔλҠߦͷͱ͖ʹ͑ΔϙΠϯτ • ৽چຐ๏ͷiΒΜͲؒͰσʔλҾӽ͢͠Δࡍʹզʑ͕ߟ͑ͨ͜ ͱ • ͲͷΑ͏ʹҠߦ४උΛਐΊ͔ͨ • Ҡߦ࣌ͷ՝ͱͦͷղܾํ๏
Slide 5
Slide 5 text
ࠓ͢͜ͱ • σʔλҠߦͱʁ • ຐ๏ͷiΒΜͲʹ͓͚ΔσʔλҠߦ • σʔλѲ • Ҡߦॲཧ࣮/ࣄલ࣮ߦ/վળ • ฒྻ࣮ߦઃܭ/࣮ • ·ͱΊ
Slide 6
Slide 6 text
σʔλҠߦͱʁ
Slide 7
Slide 7 text
σʔλҠߦͱʁ چγεςϜ͔Β৽γεςϜʹσʔλΛҠ͢͜ͱ • DBͳΒ • εΩʔϚఆٛมߋແ͠ / มߋͭͭ͠Ҡߦ • ϑΝΠϧͳΒ • چετϨʔδ͔Β৽ετϨʔδͷҾӽ͠
Slide 8
Slide 8 text
σʔλҠߦ·ͰͷಓͷΓ • Ѳɾ࡞ઓཱҊ • ԿΛͲ͜ʹҠ͢ͷ͔ / ͲΕ͘Β͍Ҡ͢ͷ͔ • ͲΕ͘Β͍͕͔͔࣌ؒΔ͔ • ४උɾ࣮ • ࣮ߦ
Slide 9
Slide 9 text
ຐ๏ͷiΒΜͲͷ Ҿӽ֓͠ཁ
Slide 10
Slide 10 text
ԿΛͲΕ͘Β͍Ҡ͢ͷ͔ʁ • Ϣʔβʔσʔλʢ470ສਓʣ • ࡞ʢ132ສ࡞ʣ • Τϐιʔυʢ3000ສΤϐιʔυʣ
Slide 11
Slide 11 text
ԿΛͲΕ͘Β͍Ҡ͢ͷ͔ʁ • ͓͠Γʢ640ສʣ • ϨϏϡʔʢ219ສʣ • ࡞ͷԠʢ144ສʣ • খઆૠֆ/ϓϩϑΟʔϧը૾ʢ500ສϑΝΠϧʣ
Slide 12
Slide 12 text
Ҿӽ͠ʹ͓͚Δ՝ • γεςϜͷશϦχϡʔΞϧ • ΧΫϤϜͱίʔυϕʔε͕ಉ͡ • ৽چγεςϜؒͰεΩʔϚఆٛҧ͏ • ه๏ҧ͏ͷͰશΤϐιʔυॻ͖͑ͳͯ͘ͳΒͳ͍ • σʔλؒͷґଘؔΛղܾ͠ͳ͕ΒҠߦ͢Δඞཁ͕͋Δ • ྫ) ࡞ͱͦͷ࡞ऀ / ը૾ͱͦͷΦʔφʔ
Slide 13
Slide 13 text
༰ΛѲ͢Δ
Slide 14
Slide 14 text
σʔλϚοϐϯά • چεΩʔϚ͔Β৽εΩʔϚʹରԠ͢Δςʔϒϧ/ΧϥϜΛݟͭ ͚Δ • ৽εΩʔϚͰඞཁͳσʔλΛͯ͢ચ͍ग़͠ɺچεΩʔϚ ͔ΒରԠ͢ΔΧϥϜΛݟ͚ͭΔ • چγεςϜ͔ΒҠߦ͢Δඞཁ͕͋ΔσʔλͷҠߦઌͷςʔϒ ϧ/ΧϥϜ͕ଘࡏ͢Δ͔ચ͍ग़͢
Slide 15
Slide 15 text
Ҡߦରͷચ͍ग़͠ • Ҡߦ͢Δͷ / ͠ͳ͍ͷΛܾΊͯΛग़͢ • ྫʣୀձࡁΈϢʔβʔͱͦͷ࡞Ҡߦ͠ͳ͍ • Λग़ͯ͠ɺҠߦظؒͷݟੵΓʹར༻͢Δ
Slide 16
Slide 16 text
ྫ ࡞/ຊจͷҠߦ • ࡞λΠτϧຊจ৽γεςϜͷରԠ͢ΔΧϥϜʹϚοϐ ϯά͢Δ • ݪଇͱͯ͠ҠߦલޙͰʮมߋ͠ͳ͍ʯ • چεΩʔϚͷෳͷσʔλΛࢀর͠ͳ͍ͱܾఆͰ͖ͳ͍ͷ ͋Δ • ެ։ϑϥάʢ࡞ɾখઆຊจʣ ষɾઅͷઃఆ • ϚοϐϯάҎ֎ʹมϩδοΫ͕ඞཁ
Slide 17
Slide 17 text
Ҡߦॲཧͷ࣮
Slide 18
Slide 18 text
Ҡߦॲཧͷ࣮ํ • Ҡߦରσʔλͷछྨ͕ଟ͍ͷͰɺ֤ॲཧΛผʑͷόονॲ ཧͱ࣮ͯ͢͠Δ • ෳͷछྨͷσʔλҠߦΛฒߦ࣮ͯ͠ߦͰ͖ΔΑ͏ʹ • ෳਓͰ࣮͍͢͠Α͏ʹ • ֤ॲཧΛγϯϓϧʹอͭΑ͏ʹ • ֤ॲཧผͷΈͰ࿈݁͢Δ
Slide 19
Slide 19 text
Ҡߦॲཧͷ࣮ํ • ͍͖ͳΓ࡞Γࠐ·ͳ͍ • ࠷ॳͱʹ͔͘ಈ͔͢͜ͱΛඪʹ • ఆ͍ͯ͠ͳ͍σʔλଘࡏ͢Δલఏʹཱͪଓ͚Δ • ͋Δఔಈ͘Α͏ʹͳͬͨΒɺ࣮ࡍʹશ݅ʢ͋Δ͍ݱ࣮త ʹऴΘΔ͘Β͍ͷྔʣͰ࣮ࡍҠߦΛࢼ͍ͯ͘͠ • ఆ͠ͳ͍σʔλ͕͖ͨΒΤϥʔͰམͪΔΑ͏͢Δ
Slide 20
Slide 20 text
Ҡߦॲཧͷ࣮ํ • Ͱ͖Δ͚ͩಛผͳ͜ͱΛ͠ͳ͍ • Ϣʔβʔ͕࣮ࡍʹૢ࡞͢Δ߹ͱಉ͡Α͏ͳσʔλ͕࡞Β ΕΔΑ͏ʹ͢Δ • কདྷʹʮ໌Β͔ʹ͓͔͠ͳσʔλʹݟ͑ΔΜ͚ͩͲ͜Ε͍ ͭͲ͏ͬͯ࡞ΒΕͨΜͩΖ͏ʯͱͳΔͷΛආ͚͍ͨ • DB্ͷσʔλͷมߋཤྺ͍ʹ͍͘
Slide 21
Slide 21 text
࣮ • ࠷ॳҠߦઌͷίʔυΛྲྀ༻͢ΔܗͰ֤ҠߦॲཧΛ࣮ • Ҡߦ࣌ʹ͓͔͠ͳσʔλ͕࡞ΒΕΔͷΛ͙ͷ͕ૂ͍ • WebଆͱͰ͖Δ͚ͩಉ͡ϩδοΫΛ͏͜ͱͰɺෆશͳ σʔλ͕࡞ΒΕͳ͍Α͏ʹ
Slide 22
Slide 22 text
ࣄલ࣮ߦ/վળ
Slide 23
Slide 23 text
࣌ؒΛݟੵΔ • ࣮σʔλͰࢼ̐͢ • શମͷྔ/Ұ݅͋ͨΓͷҠߦʹ͔͔Δ࣌ؒΛग़͢ • ϝϯςφϯεظؒͷݟੵΓ • શͯͷύλʔϯΛཏ͢Δඞཁͳ͍ • ݟੵΓͳͷͰશ݅ࢼ͞ͳͯ͘Α͍ • ࣮ → ࣮ߦ → मਖ਼ͷαΠΫϧΛճ͍ͯ͘͠
Slide 24
Slide 24 text
ຐ๏ͷiΒΜͲͰͷ࣌ؒݟੵΓ • ಈ͘Α͏ʹͳͬͨ͘Β͍Ͱ͓ࢼ࣮͠ߦ • ૉʹ࣮ߦͯ͠ΈΔͱɺҰϲ݄Λͪΐͬͱ͑ͦ͏ͱ͍͏͜ ͱ͕Θ͔Δ • ͜ΕͩͱҰൃউෛʹͳͬͯ͠·͏ • λΠϜϦϛοτ͕2݄ޙʹͳΔ/ϝϯςφϯεظ͕ؒ͘ ͳΓ͗͢Δ • ॲཧࣗମͷվળͱฒྻ࣮ߦ͢ΔΈͷಋೖͰରԠ͢Δ
Slide 25
Slide 25 text
Ҡߦॲཧͦͷͷͷվળ • ҠߦॲཧࣗମΛ࠷దԽ͢Δ • ࠷ॳwebଆͱಉ͡ίʔυΛར༻͓ͯ͠ΓɺҰ݅ͣͭ INSERT͢ΔϩδοΫʹͳ͍ͬͯͨʢ͍ΘΏΔn+1ʣ • webଆͱಉ͡ίʔυΛͦͷ··ར༻͢ΔͷΛఘΊͯɺෳ ϨίʔυΛbulk insert͢Δίʔυʹม͍͑ͯ͘ • INSERT͕ϝΠϯͳͷͰେ෯վળ • UPDATEʹ͍ͭͯఘΊΔ
Slide 26
Slide 26 text
ฒྻ࣮ߦ
Slide 27
Slide 27 text
Ҡߦͷ࡞ઓݕ౼ Ͳ͏ͬͯૉૣ͘Ҡߦ͢Δʁ • ฒྻΠϯϙʔτ & ฒྻΛͰ͖Δ͚ͩ૿͢ • ྻʹͬͯ100͔͔ΔͳΒɺ୯७ܭࢉͰ100ฒྻͳ Β1ͰऴΘΔ • ฒྻউखʹ্ݶ·Ͱ૿͑ͯཉ͍͠
Slide 28
Slide 28 text
Ͳ͏ͬͯฒྻ࣮ߦ͢Δʁ ϚωʔδυαʔϏεΛಋೖͰղܾΛਤΔ • AWS Batch + StepFunctions • BatchͰҠߦॲཧࣗମΛ࣮ߦ • ґଘ͢ΔBatchॲཧΛStepFunctionsͰͭͳ͙ • StepFunctionsͰBatchͷδϣϒΛૹ৴ͭͭ͠ɺਐḿཧΛߦ ͏ΈΛͭ͘Δ
Slide 29
Slide 29 text
AWS Batch • ϑϧϚωʔδυͳόονॲཧ࣮ߦڥ • Ϧιʔεʹ༨༟͕͋ΔݶΓδϣϒΛฒྻ࣮ߦͯ͘͠ΕΔ • DockerΠϝʔδ͕͋Ε͑ΔͷͰɺٕज़બͷ෯͕͍ • Lambdaͱͷҧ͍͜͜ • ୯ମͰಈ͘όονॲཧͱͯ͠ಈ͘ͷΛࡌ࣮ͤͯߦ
Slide 30
Slide 30 text
AWS StepFunctions • AWSͷෳαʔϏεΛΈ߹ΘͤͯϫʔΫϑϩʔΛ࡞ • ϫʔΫϑϩʔεςοϓͷΈ߹ΘͤͰߏ͞ΕΔ • ֤εςοϓࣗಈతʹτϦΨʔ͞ΕɺτϨʔε͞ΕΔ • ෳͷॲཧΛͭͳ͛ͯҰ࿈ͷॲཧΛͭ͘Δ • ׂ͞Ε֤ͨఔ͕εςοϓͱͳΔ
Slide 31
Slide 31 text
AWS StepFunctions • 2019/9ʹαϙʔτ͞ΕͨMap͕ڧྗ • ಈతฒྻॲཧΛ؆୯ʹॻ͚Δ • Ҡߦର͕ॻ͔ΕͨJSONͷS3ΩʔͷྻΛͯ͠ɺ֤ Ωʔ͝ͱʹBatchΛ࣮ߦ͢ΔɺΈ͍ͨͳ͜ͱ͕ॻ͚Δ গ͠ࢼͨ͠ͱ͜Ζɺ͏·͍͖ͦ͘͏ͳࢉஈ͕͍ͭͨͷͰ࠾༻
Slide 32
Slide 32 text
σʔλҠߦਐḿཧ
Slide 33
Slide 33 text
σʔλҠߦਐḿཧ • σʔλҠߦͦͷͷͷਐḿΛཧ͓ͯ͘͠ • Ҡߦલ/ॲཧޭ/ࣦഊͷঢ়ଶཧ • ࣦഊͨ͠σʔλ࠶ҠߦͰ͖ΔΑ͏ʹ • Ͳ͏ͬͯཧ͢Δ͔ • ӬଓԽͰ͖ΕͲ͏͍͏ํ๏Ͱ͍͍
Slide 34
Slide 34 text
Savepoint • ࠓճҠߦରͷҠߦݩIDҰཡ͕هड़͞ΕͨJSONΛS3ʹஔ ͘ΓํΛ࠾༻ • JSONϑΝΠϧҰ͕࣮ͭߦ୯Ґʹͳ͍ͬͯͯɺͦΕͧΕ͕ ฒྻʹ࣮ߦՄೳ • ֤ఔͰͰ͖Δ͚ͩฒྻ࣮ߦͰ͖ΔΑ͏ʹ • ͍͍ͩͨಉ݅͡ʢbatch_sizeʣʹͳΔΑ͏ʹۉ͞Ε͍ͯΔ
Slide 35
Slide 35 text
Savepoint • S3ͷΩʔͰʮҠߦରͷछྨ/Ҡߦݩ/Ҡߦͷ൱ʯΛදݱ͢ Δ • ΩʔΛݟΔͱҠߦঢ়ଶ͕Θ͔Δ • ࣮ߦલ/ޭ/ࣦഊ • ࣦഊͨ͠άϧʔϓ࠶࣮ߦՄೳ
Slide 36
Slide 36 text
ॲཧ݅ΛۉҰʹ͢Δ ֤ॲཧͷॲཧ݅Λ͍͍ͩͨಉ͡ʹۉ͢ • Ϣʔβʔ100ਓ ͷάϧʔϓΛ͍͔ͭ͘࡞ͬͯฒྻ࣮ߦ͢Δͱ ͯ͠ • ͦΕͧΕ͕࣋ͭ࡞খઆຊจͷ߹ܭόϥόϥ • ͦΕͧΕͷఔΛྻͰॲཧ͢Δ߹ɺʹΑ࣮ͬͯߦ࣌ ͕ؒมΘΔ • ͕࣌ؒಡΈʹ͘͘ͳΔ
Slide 37
Slide 37 text
ॲཧ݅ΛۉҰʹ͢Δ • ॲཧ݅ΛۉҰʹ͢Δ͜ͱͰ֤ॲཧ ͷ࣮ߦ࣌ؒΛ֓Ͷಉ͡ʹͰ͖Δ • savepointͷΦϒδΣΫτΛࢹ͢ Δ͜ͱͰେମͷਐḿΛࢹՄೳ • ࣮ߦલͷ݅/ޭ/ࣦഊ
Slide 38
Slide 38 text
ͨ͠εςʔτϚγϯ
Slide 39
Slide 39 text
ͦͷଞ
Slide 40
Slide 40 text
ը૾ͷҠߦ ը૾ͷҠߦʹS3 BatchOperationsΛར༻ • Ҡߦݩͷը૾ετϨʔδ͔ΒҰS3ͷҰ࣌ஔ͖ʹू͢Δ • Ұ࣌ஔ͖͔Β৴༻όέοτͷҠಈʹS3 BatchOperationsΛར༻ • LambdaΛڬΜͰը૾ΛϦωʔϜ • େମ2࣌ؒఔ
Slide 41
Slide 41 text
Ҡߦ݁Ռͷݕূ • ࣄલʹ݅Λग़͓͍ͯͯ͠ɺҠߦ݅ͱൺֱ • ݕূରΛࣄલʹ͍͔ͭ͘ग़͓͍ͯͯ͠ɺҠߦલޙͰҧ͍͕ ͳ͍͔Λൺֱ • ݟͨʹؔ͢Δ෦࣮ࡍʹݟͯ֬ೝ • ͜͜վળͷ༨͕͋ͬͨ
Slide 42
Slide 42 text
݁Ռͱ·ͱΊ
Slide 43
Slide 43 text
݁Ռ • શ݅Ҡߦ͕εϜʔζʹऴΘΔͱ͍͍ͩͨ10~14h͘Β͍ • ۚમతίετͦΜͳʹ͔͔Βͳ͍ • BatchࣗಈͰඞཁͳαΠζͷEC2ΠϯελϯεΛཱͯΔ ͕ɺཱ͍ͬͯΔ͍࣌ؒ • খ͍͞ΠϯελϯεͰ࣌ؒΛ͔͚ΔΑΓଟগ͓͕͔ۚ ͔ͬͯߴʹऴΘΔํ͕ϦΧόϦ͍͢͠
Slide 44
Slide 44 text
·ͱΊ • ҠߦॲཧΛׂ͢Δ࡞ઓ͕Α͔ͬͨ • ίʔυ͕ѻ͍͍͢ɺಈ࡞֬ೝͷείʔϓΛݶఆͰ͖Δ • ϚωʔδυαʔϏεͷಋೖ • ࣮ߦڥͷ४උίετΛԼ͛ΒΕͨ • ࣗಈͰεέʔϧΞτͯ͘͠ΕΔͷָ
Slide 45
Slide 45 text
·ͱΊ • ݴޠબఆ • ݁ՌతʹΫΤϦΛେ෯ʹॻ͖͑ͨͷͰWebଆͱಉ͡ݴޠ Λ࠾༻͢ΔࢫΈݮͬͨ • ҰํطଘͷॲཧΛਖ਼͘͠࠶࣮͢Δͷ͘͠ɺDBʹೖ ΕΔલ·Ͱಉ͡ॲཧ͕͑ͨͷྑ͔ͬͨ • ແࣄʹҠߦͰ͖ͨ • ԿΑΓ͜Ε͕Ұ൪