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
10
2k
ちょっぴりDiveDeepするAWSの時間 AWS Dev Day 2023 Tokyo 延長戦 実践データ移行 〜はてなダイアリーや魔法のiらんどの事例と共に〜
tkzwtks
1
150
はてなスターにおける静的ファイル配信の話
tkzwtks
0
130
YAPC::Kyoto 2023 LT Perlブートキャンプご紹介
tkzwtks
0
1.2k
Hatena Engineer Seminar #14 魔法のiらんど データ移行編 〜新旧システム間のデータマイグレーション時に我々が考えること〜 / hatena-engineer-seminer-number-14-data-migration
tkzwtks
0
2.4k
hatena-engineer-seminar-10
tkzwtks
0
2.4k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.4k
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
Bash Introduction
62gerente
611
210k
Fireside Chat
paigeccino
37
3.4k
Building Adaptive Systems
keathley
41
2.5k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
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) • ͋ΔεςʔτϚγϯ͔ΒผͷεςʔτϚγϯΛݺͼग़͢͜ͱ Մೳ • ݸʑͷॲཧΛϞδϡʔϧͱ࣮ͯ͠Ͱ͖ͨ • ׳ΕΔ·Ͱগ͠େมʢͱݸਓతʹߟ͍͑ͯΔʣ •
εςʔτϚγϯͷೖग़ྗ݁ߏΫη͕͋Δ • σόοάͮ͠Β͍