$30 off During Our Annual Pro Sale. View Details »
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
3.1k
ちょっぴりDiveDeepするAWSの時間 AWS Dev Day 2023 Tokyo 延長戦 実践データ移行 〜はてなダイアリーや魔法のiらんどの事例と共に〜
tkzwtks
1
190
はてなスターにおける静的ファイル配信の話
tkzwtks
0
180
YAPC::Kyoto 2023 LT Perlブートキャンプご紹介
tkzwtks
0
1.4k
Hatena Engineer Seminar #14 魔法のiらんど データ移行編 〜新旧システム間のデータマイグレーション時に我々が考えること〜 / hatena-engineer-seminer-number-14-data-migration
tkzwtks
0
3k
hatena-engineer-seminar-10
tkzwtks
0
2.5k
Featured
See All Featured
BBQ
matthewcrist
89
9.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
How GitHub (no longer) Works
holman
316
140k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
For a Future-Friendly Web
brad_frost
180
10k
4 Signs Your Business is Dying
shpigford
186
22k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Balancing Empowerment & Direction
lara
5
800
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) • ͋ΔεςʔτϚγϯ͔ΒผͷεςʔτϚγϯΛݺͼग़͢͜ͱ Մೳ • ݸʑͷॲཧΛϞδϡʔϧͱ࣮ͯ͠Ͱ͖ͨ • ׳ΕΔ·Ͱগ͠େมʢͱݸਓతʹߟ͍͑ͯΔʣ •
εςʔτϚγϯͷೖग़ྗ݁ߏΫη͕͋Δ • σόοάͮ͠Β͍