Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
930
ちょっぴりDiveDeepするAWSの時間 AWS Dev Day 2023 Tokyo 延長戦 実践データ移行 〜はてなダイアリーや魔法のiらんどの事例と共に〜
tkzwtks
1
110
はてなスターにおける静的ファイル配信の話
tkzwtks
0
100
YAPC::Kyoto 2023 LT Perlブートキャンプご紹介
tkzwtks
0
1.2k
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
A better future with KSS
kneath
238
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Designing for humans not robots
tammielis
250
25k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
470
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Navigating Team Friction
lara
183
15k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
GitHub's CSS Performance
jonrohan
1030
460k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
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) • ͋ΔεςʔτϚγϯ͔ΒผͷεςʔτϚγϯΛݺͼग़͢͜ͱ Մೳ • ݸʑͷॲཧΛϞδϡʔϧͱ࣮ͯ͠Ͱ͖ͨ • ׳ΕΔ·Ͱগ͠େมʢͱݸਓతʹߟ͍͑ͯΔʣ •
εςʔτϚγϯͷೖग़ྗ݁ߏΫη͕͋Δ • σόοάͮ͠Β͍