Skip to content

๐Ÿ› ๋กœ์ปฌ draftโ†’S3 promote๊ฐ€ DB ํŠธ๋žœ์žญ์…˜๊ณผ ๋ถ„๋ฆฌ๋˜์–ด orphan ํŒŒ์ผ/์œ ์‹ค ์œ„ํ—˜ย #483

Description

@si-zero

๐Ÿ› ๋ฒ„๊ทธ ์„ค๋ช…

๋ฐฐํ‹€/์˜ต์…˜ ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ draft๋กœ ์˜ฌ๋ ค๋’€๋‹ค๊ฐ€ ๋ฐœํ–‰(PUBLISHED) ์‹œ์ ์— S3๋กœ ์Šน๊ฒฉํ•˜๋Š” ๋กœ์ง(LocalDraftFileStorageService.promoteLocalDraftToS3)์ด, DB ์ €์žฅ์„ ๋‹ด๋‹นํ•˜๋Š” @Transactional ๋ฉ”์„œ๋“œ(BattleServiceImpl.createBattle/updateBattle) ์ค‘๊ฐ„์—์„œ ์ฆ‰์‹œ S3 ์—…๋กœ๋“œ + ๋กœ์ปฌ draft ์‚ญ์ œ๊นŒ์ง€ ๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

๐Ÿ” ์›์ธ

S3 ์—…๋กœ๋“œ/๋กœ์ปฌ ํŒŒ์ผ ์‚ญ์ œ๋Š” DB ํŠธ๋žœ์žญ์…˜์˜ ๋กค๋ฐฑ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šน๊ฒฉ ์ดํ›„ ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜์—์„œ ๋‹ค๋ฅธ ์ด์œ ๋กœ ์ €์žฅ์ด ์‹คํŒจํ•ด ๋กค๋ฐฑ๋˜๋”๋ผ๋„:

  • ์ด๋ฏธ S3์— ์˜ฌ๋ผ๊ฐ„ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ orphan์ด ๋˜๊ณ ,
  • ์ด๋ฏธ ์ง€์›Œ์ง„ ๋กœ์ปฌ draft๋Š” ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์žฌ์‹œ๋„ํ•  ๋•Œ ์ฐธ์กฐํ•  ์›๋ณธ์ด ์‚ฌ๋ผ์ง„๋‹ค.

[[s3_railway_bucket_migration]] ์ž‘์—… ์ค‘ ๋ฐœ๊ฒฌํ•ด์„œ ๋ฐฐํ‹€ ๋ฐœํ–‰ ์ž๋™ํ™” ๋•Œ ๊ฐ™์ด ๊ณ ์น˜๊ธฐ๋กœ ๋ฏธ๋ค„๋’€๋˜ ๊ธฐ์กด ๋ฒ„๊ทธ.

โœ… ํ•ด๊ฒฐ

  • LocalDraftFileStorageService๋ฅผ resolveS3Key(๋ชฉ์ ์ง€ key ๊ณ„์‚ฐ๋งŒ, ๋ถ€์ˆ˜ํšจ๊ณผ ์—†์Œ)์™€ promoteToS3(์‹ค์ œ ์—…๋กœ๋“œ+๋กœ์ปฌ ์‚ญ์ œ)๋กœ ๋ถ„๋ฆฌ
  • BattleServiceImpl์—์„œ ๋ชฉ์ ์ง€ key๋Š” ํŠธ๋žœ์žญ์…˜ ์ค‘ ๋™๊ธฐ์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด ์—”ํ‹ฐํ‹ฐ์— ์ €์žฅํ•˜๋˜, ์‹ค์ œ ์Šน๊ฒฉ(promoteToS3)์€ ๊ธฐ์กด์— ์ด๋ฏธ ์“ฐ์ด๋˜ TransactionSynchronizationManager afterCommit ํŒจํ„ด์œผ๋กœ ์ปค๋ฐ‹ ์ดํ›„๋กœ ๋ฏธ๋ฃธ โ€” ๋กค๋ฐฑ ์‹œ์—๋Š” ์•„์˜ˆ ํ˜ธ์ถœ๋˜์ง€ ์•Š์•„ draft๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ๋Š”๋‹ค.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

๐Ÿ› Fix (๋ฒ„๊ทธ ์ˆ˜์ •)๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions