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
レガシーシステムからのデータマイグレーションあれこれ
Search
tkzwtks
May 14, 2020
4
1.7k
レガシーシステムからのデータマイグレーションあれこれ
tkzwtks
May 14, 2020
Tweet
Share
More Decks by tkzwtks
See All by tkzwtks
データマイグレーションの成功戦略~サービスリニューアルで失敗しないための実践ガイド~
tkzwtks
8
810
ちょっぴりDiveDeepするAWSの時間 AWS Dev Day 2023 Tokyo 延長戦 実践データ移行 〜はてなダイアリーや魔法のiらんどの事例と共に〜
tkzwtks
1
97
はてなスターにおける静的ファイル配信の話
tkzwtks
0
94
YAPC::Kyoto 2023 LT Perlブートキャンプご紹介
tkzwtks
0
1.1k
Hatena Engineer Seminar #14 魔法のiらんど データ移行編 〜新旧システム間のデータマイグレーション時に我々が考えること〜 / hatena-engineer-seminer-number-14-data-migration
tkzwtks
0
1.7k
hatena-engineer-seminar-10
tkzwtks
0
2.3k
Featured
See All Featured
Clear Off the Table
cherdarchuk
91
320k
Writing Fast Ruby
sferik
626
60k
Infographics Made Easy
chrislema
239
18k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Code Reviewing Like a Champion
maltzj
519
39k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
How to name files
jennybc
77
99k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Six Lessons from altMBA
skipperchong
26
3.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Transcript
ϨΨγʔγεςϜ͔Βͷ σʔλϚΠάϨʔγϣϯ ͋Ε͜Ε 2020/05/14 ϖύϘɾͯͳٕज़େձʙ@ΦϯϥΠϯ ୍ᖒ ਸʢid:tkzwtks)
ࣗݾհ • id:tkzwtks ୍ᖒ ਸ • 201511݄ೖࣾ • ۀྺ •
ΧΫϤϜʢKADOKAWA༷ʣ • GigaViewer • ͯͳμΠΞϦʔऴྃ
ຊ͓͢͠Δ͜ͱ
ຊ͓͢͠Δ͜ͱ • 20204݄ʹϦχϡʔΞϧͨ͠ʮຐ๏ͷiΒΜͲʯͷσʔλҠ ߦ • Ҡߦʹ͔͔Δ࣌ؒΛͰ͖Δ͚ͩ͘͢ΔͨΊʹԿΛߟ͑ɺ ԿΛͬͨͷ͔
ຐ๏ͷiΒΜͲ
ຐ๏ͷiΒΜͲ • KADOKAWA༷͕ӡӦ͢Δʮຊ࠷ େڃͷΨʔϧζΤϯλςΠϝϯταΠ τʯ • 1999ʹແྉϗʔϜϖʔδ࡞αʔ Ϗεͱͯ͠ελʔτ • খઆߘػೳͰʮ࿀ۭʕφΠ࿀
ޠʯͷਓؾ࡞͕ੜ·Ε͍ͯΔ • 4݄ʹখઆʹಛԽͨ͠αʔϏεͱͯ͠ ϦχϡʔΞϧ
ϦχϡʔΞϧ • γεςϜ৽ • ৽γεςϜখઆσʔλΛҠߦ͢Δඞཁ͕͋Δ • ࠓ͜ͷ
Ҿӽ͠࡞ۀ • چγεςϜͱ৽γεςϜͷεΩʔϚͷϚοϐϯά • Ϛοϐϯάͨ͠ઌʹσʔλΛҠಈ • چεΩʔϚશʹഇࢭͯ͠ɺσʔλߏͷϦϑΝΫλϦ ϯάૂ͏ • Ұ෦σʔλม͢Δඞཁ͕͋Δ
• چγεςϜͰར༻Մೳͩͬͨه๏શͯ৽γεςϜͷه๏ ʹม͢Δ
Ҿӽ͠࡞ۀͷ՝ ʮͱʹ͔͘ҠߦॲཧΛߴʹऴΘΒ͍ͤͨʯ • σʔλҠߦͦͷͷʹ͔͔ΔͩΖ͏͕࣌ؒಡΊͳ͍ɺಡΈͮ Β͍ • ࠷ऴతͳσʔλྔ֓Ͷ༧ଌՄೳ͕ͩͬͨɺΔ͜ͱ͕ଟ ͍ͷͰ͕࣌ؒಡΊͳ͍ • Ҡߦલʹॻ͖ࠐΈΛఀࢭ͢Δඞཁ͕͋Δʢ=
ϝϯςφϯεظ ؒΛ༻ҙ͢Δඞཁ͕͋Δʣ
σʔλؒͷґଘؔͱ ॲཧͷॱ൪ • ϢʔβʔҠߦ -> ࡞Ҡߦ -> ه๏ม ͱ͍͏ॱͰྲྀΕΔ
• લͷॲཧ͕ऴΘ͍ͬͯͳ͍ͱ࣍ͷ ॲཧΛ։࢝Ͱ͖ͳ͍ • 500ϖʔδ͍࣋ͬͯΔ࡞ଘࡏ͠ɺ ͔ͳΓͷϘϦϡʔϜ͕͋Δ • શϖʔδʹؚ·ΕΔچه๏Λ৽ه๏ ʹม͢Δ
ϚωʔδυαʔϏεͷಋೖ • AWS StepFunctions + AWS Batch ͰҠߦॲཧΛฒྻ࣮ߦ͠Ұ ؾʹऴΘΒͤΔ࡞ઓ •
BatchͰҠߦॲཧࣗମΛ࣮ߦ • StepFunctionsͰBatchͷδϣϒΛૹ৴ͭͭ͠ɺਐḿཧΛ ߦ͏
AWS Batch • ϑϧϚωʔδυͳόονॲཧ࣮ߦڥ • ඞཁͳͷόονॲཧΛ࣮ߦ͢ΔͨΊͷDockerΠϝʔδ • δϣϒΛొ͍ͯ͘͠ͱɺ࣮ߦͪͷδϣϒࢦఆͨ͠ Ϧιʔεཁ݅ʹ߹ΘͤͯউखʹεέʔϧΞτɾεέʔϧ Πϯͯ͘͠ΕΔ
• DBͷੑೳݶք·ͰฒྻʹҠߦॲཧ͕Մೳ
AWS Batch • δϣϒΛͲ͏ͬͯൃߦ͢Δ? • SUBMITTEDͳδϣϒͷ࠷େʹ੍ݶ͕͋ΔͨΊɺશͯ ͷδϣϒΛ͍͖ͳΓൃߦ͢Δ͜ͱආ͚͍ͨ • ༷ࢠΛݟͳ͕ΒδϣϒΛൃߦ͢ΔॲཧΛࣗͰ༻ҙͨ͘͠ ͳ͍
AWS StepFunctions • ϚωʔδυϫʔΫϑϩʔΤϯδϯ • AWSαʔϏεͱͷ౷߹͕ڧ͍ • StepFunctions͔ΒBatchͷδϣϒΛൃߦ͢Δ͜ͱ͕Մೳ • StepFunctions͔ΒଞαʔϏεΛಉظతʹ࣮ߦͰ͖Δ
• ʮϢʔβʔҠߦॲཧ͕શͯऴΘͬͨΒখઆͷҠߦॲཧΛ͢ Δʯͱ͍͏Α͏ͳϫʔΫϑϩʔΛΉ͜ͱ͕Ͱ͖Δ
AWS StepFunctions • Mapεςʔτ • 2019/9 ʹՃ͞Εͨಈతฒྻॲཧαϙʔτ • ฒྻϑΝϯΞτΛ؆୯ʹ࣮Ͱ͖ΔΑ͏ʹͳͬͨ StepFunctionsͷεςʔτϚγϯ͔ΒBatchͷδϣϒΛൃߦ͢Δ
ܗʹͨ͠
࣮ࡍͷεςʔτϚγϯ ఆٛ • εςʔτϚγϯΛೋஈߏʹ͢Δ • ֤ఔΛͰཧ͠ɺࡉ͔͍ॲཧ ࢠʹدͤΔ • εςʔτϚγϯ
࣮ࡍͷεςʔτϚγϯ ఆٛ • ࢠεςʔτϚγϯ • batchδϣϒΛฒྻʹେྔൃߦ
࣮ࡍͷ࡞ઓ • ฒྻ࣮ߦՄೳͳ୯ҐͰάϧʔϐϯά ͢Δ • άϧʔϐϯάͨ͠ͷΛฒྻॲཧ ͢Δ • άϧʔϓͷ֤ఔΛ͞Βʹฒྻ ॲཧͯ͠ଞʹӨڹ͕ͳ͍
• ֤άϧʔϓͷ࣮ߦঢ়ଶΛS3ʹอଘ ͓͖ͯ͠ɺਐḿ֬ೝɾϦτϥΠՄ ೳͳΈΛ࡞Δ
࣮ࡍͷ࡞ઓ • ҠߦॲཧͦͷͷͰ͖Δ͚ͩߴ ʹ͢Δ • ͱʹ͔͘INSERTจΛݮΒ͢
࡞ઓޭ • ʢ࣮ࡍͷݴ͑ͳ͍͕ʣ20ͷখઆΛ͍͍ͩͨ߹ܭ10h ఔͰه๏ม·Ͱྃͯ͠ҠߦͰ͖ͨ • ϢʔβʔҠߦ -> খઆҠߦ -> ه๏ม
• ϓϩδΣΫτॳʹࢦ͍ͯͨ͠ʮԿ͔͠Βͷཧ༝Ͱࣦഊ ͨ͠߹ʹ͏Ұ͘Β͍Ͱ͖ΔΑ͏ͳ࣌ؒʯʹऩ·ͬͨ • ଞͷσʔλಉ͡ΈΛྲྀ༻Ͱ͖ͨ • ElasticSearchͷσʔλೖ1hఔͰྃͨ͠
ৼΓฦΔʢAWS Batch) • ΦʔτεέʔϦϯάΛউखʹͬͯ͘ΕΔͷඇৗʹྑ͍ • ʮϦιʔε͕ͲΕ͘Β͍ඞཁʹͳΓͦ͏͔ʯΛ࠷ॳʹ༧ଌ ͢Δඞཁ͕ͳ͍ • ࡉ͔͍ϋϚΓͲ͜Ζ͋Δ •
ىಈʙ࣮ߦ·Ͱͷ͕҆͞ఆ͠ͳ͍͜ͱ͕͋Δ • cloudwatchͷϩάάϧʔϓ͕શͯʹͳͬͯ͠·͏
ৼΓฦΔʢAWS Batch) • DockerΠϝʔδ͕͋Εಈ͘ͷͰݴޠબͷ෯͕͍ • LambdaͰΊͷॲཧ͕࣮ߦͰ͖Δ͕͜ͷ͕ҧ͏ • ࠓճWebଆͱಉ͡ݴޠΛબ͍ͯ͠Δ • Fargateࠓճબͳ͔ͬͨ
• λεΫͷಉ࣮࣌ߦʹ੍ݶ͕͋Δ
ৼΓฦΔ(AWS StepFunctions) • ֤ఔΛ୯ಠͰಈ͘όονॲཧͱ࣮ͯ͠Ͱ͖ɺͦΕΛΈ ߹Θͤͯେ͖ͳॲཧΛ࡞Εͨ • ֤ఔΛෳਓͰ࣮Ͱ͖ͨ • ్தʹॲཧΛࠩ͠ࠐΉͷ༰қ •
ޙॲཧʹ௨Λࠩ͠ࠐΉͳͲ
ৼΓฦΔ(AWS StepFunctions) • ͋ΔεςʔτϚγϯ͔ΒผͷεςʔτϚγϯΛݺͼग़͢͜ͱ Մೳ • ݸʑͷॲཧΛϞδϡʔϧͱ࣮ͯ͠Ͱ͖ͨ • ׳ΕΔ·Ͱগ͠େมʢͱݸਓతʹߟ͍͑ͯΔʣ •
εςʔτϚγϯͷೖग़ྗ݁ߏΫη͕͋Δ • σόοάͮ͠Β͍