๐Ÿ‡จ๐Ÿ‡ณ Discourse๋ฅผ S3์— ๋ฐฑ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ• | Discourse ๅฆ‚ไฝ•ๅค‡ไปฝๅˆฐ S3

Discourse์™€ S3๋Š” ๋งค์šฐ ์ž˜ ์–ด์šธ๋ฆฌ๋Š” ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. S3์— ์ต์ˆ™ํ•˜์‹œ๋‹ค๋ฉด, ์ด ๊ฐ€์ด๋“œ๊ฐ€ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ๊ฐ€์ƒ ํ˜ธ์ŠคํŒ… ๊ณต๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๋Š” ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

S3๋ฅผ ๋ฐฑ์—…์— ์‚ฌ์šฉํ•˜๋ฉด ๊ณต๊ฐ„์„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

๋ฐฑ์—… ์ฃผ๊ธฐ ์„ค์ •

admin > backup์œผ๋กœ ์ด๋™ํ•˜์—ฌ backup_frequency๋ฅผ 1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฐฑ์—… ์ฃผ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค.
1์€ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ๋ฐฑ์—…ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
7์€ 7์ผ์— ํ•œ ๋ฒˆ ๋ฐฑ์—…ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์›น์‚ฌ์ดํŠธ ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ, S3๋ฅผ ๋ฐฑ์—… ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—…์šฉ Bucket ๋ฐ ๊ฒฝ๋กœ ์„ค์ •

์ด Bucket์€ ๋น„๊ณต๊ฐœ(Private)๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ S3๋ฅผ ์ด๋ฏธ ์ด๋ฏธ์ง€ ๋ฐ ์ฒจ๋ถ€ ํŒŒ์ผ ์ €์žฅ์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น Bucket์€ ์„ค์ • ์‹œ public์œผ๋กœ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์˜๋ฅผ ์œ„ํ•ด ์—ฌ๊ธฐ์—์„œ ๋ณ„๋„์˜ Bucket์„ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๋ฉฐ, ์ฒจ๋ถ€ ํŒŒ์ผ ๋ฐ ์ด๋ฏธ์ง€ ์ €์žฅ์šฉ Bucket๊ณผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”.

์—ฌ๊ธฐ์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜ ๋” ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. Discourse๋Š” ์ด ํด๋” ์•„๋ž˜์— ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ํ•˜์œ„ ํด๋”๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ €์žฅ ๊ตฌ์กฐ๊ฐ€ ๋” ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.

s3_access_key_id ๋ฐ s3_secret_access_key ์„ค์ •

๋‹ค์Œ ๋‹จ๊ณ„๋กœ, ๋ฐฑ์—… ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด s3_access_key_id, s3_secret_access_key, s3_region์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ, region์„ ์ž˜๋ชป ์„ ํƒํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—… ์—…๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ถŒํ•œ ๋ฌธ์ œ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ์„ค์ • ๋ฐฉ๋ฒ•์€ Setting up file and image uploads to S3 - sysadmin - Discourse Meta ๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฐธ๊ณ ๋กœ, ์—…๋กœ๋“œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋„๋ก Key ID์— ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ์ €์žฅ์†Œ๋ฅผ S3๋กœ ์„ค์ •

๋ฐฑ์—… ๋ฐฉ์‹์„ S3 ์ €์žฅ์†Œ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ํƒ ๋ถ€๋ถ„์—์„œ Local ์ €์žฅ์„ S3 ์ €์žฅ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ํ…Œ์ŠคํŠธ

๋ชจ๋“  ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฐฑ์—… ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—… ๋ฉ”๋‰ด์—์„œ Backup ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋ฐฑ์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.


ํŒ์—… ํ™”๋ฉด์—์„œ ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€์™€ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ํฌํ•จํ• ์ง€ ๋ฌป์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๊ธฐ์„œ Yes๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ํ™”๋ฉด์ด ๋กœ๊ทธ ํ™”๋ฉด์œผ๋กœ ์ „ํ™˜๋˜๋ฉฐ, ๋ฐฑ์—… ์ •๋ณด๊ฐ€ ๋กœ๊ทธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์— Finished๊ฐ€ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋ฐฑ์—… ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ S3 ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์ตœ์‹  ๋ฐฑ์—…์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


์‹œ๊ฐ„, ํฌ๊ธฐ, ํŒŒ์ผ๋ช…์„ ํ™•์ธํ•˜์—ฌ ๊ฒ€์ฆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


S3 ๋ฐฑ์—…์„ ์„ค์ •ํ•จ์œผ๋กœ์จ Discourse์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™•์žฅํ•˜์—ฌ ์‚ฌ์‹ค์ƒ ๋ฌด์ œํ•œ์˜ ๋ฐฑ์—… ๋ฐ ์ €์žฅ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น์‚ฌ์ดํŠธ ์šด์˜ ์ธก๋ฉด์—์„œ ์ž๋™ ๋ฐฑ์—… ๋ฐ ์—…๋กœ๋“œ๋Š” ๋งค์šฐ ์‹ค์šฉ์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ์— ๋ฐฑ์—…์„ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์–ด, ์›น์‚ฌ์ดํŠธ ๋ณต์› ์‹œ ๋‹ค์–‘ํ•œ ๋ฐฑ์—… ํฌ์ธํŠธ๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—… ํŒŒ์ผ์„ Docker์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณด๊ด€ํ•˜๋ฏ€๋กœ ์ผ์ƒ์ ์ธ ๋ฐฑ์—… ๊ด€๋ฆฌ์— ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ, ์ €์žฅ ๊ณต๊ฐ„ ์‚ฌ์šฉ๋Ÿ‰์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€์™€ ์ฒจ๋ถ€ ํŒŒ์ผ๋„ S3์— ์ €์žฅํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ด์ „ ๋ฐ ๋ฐฑ์—… ๋ณต๊ตฌ์— ํฐ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›๋ฌธ iSharkFly - ้ฃž้ฒจ ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

2๊ฐœ์˜ ์ข‹์•„์š”

ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…๊ณผ ์ฒจ๋ถ€ํŒŒ์ผ์ด ๊ฐ๊ฐ ๋‹ค๋ฅธ S3 ๋ฒ„ํ‚ท์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ๋•Œ, ๋ฐฑ์—…์„ ์‹คํ–‰ํ•˜๋ฉด ์ฒจ๋ถ€ํŒŒ์ผ์— ์‚ฌ์šฉ๋œ S3 ๋ฒ„ํ‚ท์˜ ๋‚ด์šฉ๋„ ํ•จ๊ป˜ ๋ฐฑ์—…๋˜๋‚˜์š”? ๋งŒ์•ฝ ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€์™€ ์ฒจ๋ถ€ํŒŒ์ผ์„ ํฌํ•จํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•œ ๊ฒฝ์šฐ, ๋ฐฑ์—…์„ ๋ณต์›ํ–ˆ์„ ๋•Œ ์ฒจ๋ถ€ํŒŒ์ผ์— ์‚ฌ์šฉ๋œ S3 ๋ฒ„ํ‚ท์˜ ๋‚ด์šฉ์ด ํฌ๋Ÿผ์—์„œ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋‚˜์š”?

Discourse์˜ ๋ฐฑ์—… ๋‚ด์šฉ์—๋Š” ๋Œ€ํ•ด ์‹ค์ œ๋กœ๋Š” ์ž์„ธํžˆ ํ™•์ธํ•ด ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๋ฐฑ์—…์„ ์‚ดํŽด๋ณธ ํ›„์—์•ผ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

์ฒจ๋ถ€ ํŒŒ์ผ์ด AWS ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐฑ์—… ์‹œ ๋ฐฑ์—…์— ์ฒจ๋ถ€ ํŒŒ์ผ ํฌํ•จ์„ ์„ ํƒํ•˜๋”๋ผ๋„


AWS์— ์—…๋กœ๋“œ๋œ ์ฒจ๋ถ€ ํŒŒ์ผ์€ ๋ฐฑ์—… ํŒŒ์ผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—… ํŒŒ์ผ์— ํฌํ•จ๋œ ์ฒจ๋ถ€ ํŒŒ์ผ์€ AWS์— ์—†๊ณ  ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ๋‚ด์šฉ๋ฟ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์›น์‚ฌ์ดํŠธ ๋ฐฑ์—… ํฌ๊ธฐ๋งŒ ๋ด๋„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒจ๋ถ€ ํŒŒ์ผ์„ ํฌํ•จํ•œ๋‹ค๋ฉด ๋ฐฑ์—… ํฌ๊ธฐ๊ฐ€ 80MBๅ‡บๅคด(์•ฝ 80MB๊ฐ€ ์กฐ๊ธˆ ๋„˜๋Š”) ์ •๋„์ผ ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


์ฆ‰, ์ด ๋ฐฑ์—…์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋กœ์ปฌ ์ฒจ๋ถ€ ํŒŒ์ผ๋งŒ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

์ด ๋‹ค์šด๋กœ๋“œ ํŒŒ์ผ์„ ์—ด๋ฉด ํด๋”๊ฐ€ 2๊ฐœ๋งŒ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” dump ํด๋”๋กœ, ์ด๋Š” PGSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋คํ”„ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.


๋˜ ํ•˜๋‚˜๋Š” uploads ํด๋”๋กœ, ์ด ํด๋”์—๋Š” ๋กœ์ปฌ์—์„œ ์—…๋กœ๋“œํ•œ ์ฒจ๋ถ€ ํŒŒ์ผ๋งŒ ์žˆ๊ณ  AWS์— ์ €์žฅ๋œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์ด ํด๋”๊ฐ€ ๋งค์šฐ ์ž‘์•„ ํŒŒ์ผ ์ˆ˜๋„ ์–ผ๋งˆ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์šด์˜์„ ์‹œ์ž‘ํ•œ ์ง€ ์–ผ๋งˆ ์ง€๋‚˜์ง€ ์•Š์•„ ๋ชจ๋“  ์ฒจ๋ถ€ ํŒŒ์ผ์„ AWS๋กœ ์—…๋กœ๋“œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


์œ„ ์ด๋ฏธ์ง€๋Š” PGSQL ๋คํ”„ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋คํ”„ ํŒŒ์ผ์„ ํ†ตํ•ด ํ˜„์žฌ Discourse ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ PGSQL ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ด ๋คํ”„ ํŒŒ์ผ์„ ๋กœ์ปฌ ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

AWS ๋ณต๊ตฌ ๊ด€๋ จ ๋ฌธ์ œ

AWS ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ AWS CDN์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๋ณธ๋ฌธ ๋‚ด์šฉ์€ AWS์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ฃผ์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ† ๋ก  ์ฃผ์ œ MD ํŒŒ์ผ์—์„œ์˜ ํ‘œํ˜„ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:


ํ•˜์ง€๋งŒ, ์ฝ˜ํ…์ธ ๊ฐ€ ๊ฒŒ์‹œ๋˜๋ฉด ์‹ค์ œ HTML ์ฝ”๋“œ๋Š” Discourse์— ์˜ํ•ด ์‚ฌ์šฉ์ž์˜ CDN ์ ˆ๋Œ€ ์ฃผ์†Œ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.


๋”ฐ๋ผ์„œ, ์œ„์˜ ๋‹ต๋ณ€์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๋ฐฑ์—… ์‹œ ์ฒจ๋ถ€ ํŒŒ์ผ ๋ฐฑ์—…์„ ์„ ํƒํ•˜์ง€ ์•Š๋”๋ผ๋„, ๋ณต์› ์‹œ ์ฒจ๋ถ€ ํŒŒ์ผ ์ฝ˜ํ…์ธ ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์™ธ

์‚ฌ์‹ค ์ฒจ๋ถ€ ํŒŒ์ผ๋„ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ๋„๋ฉ”์ธ ๋ณ€๊ฒฝ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ์— ํ•œ ๋ฒˆ ๋„๋ฉ”์ธ์„ ๋ณ€๊ฒฝํ•œ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ฒจ๋ถ€ ํŒŒ์ผ ์ฝ˜ํ…์ธ ๋Š” ๊ทธ๋Œ€๋กœ์˜€์ง€๋งŒ ๋ณธ๋ฌธ์—์„œ๋Š” ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. HTML์„ ์žฌ๊ตฌ์„ฑํ•ด๋„ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ๋‹ค์†Œ ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๋ฉ”์ธ์„ ํ•จ๋ถ€๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ, ํ†ต์ƒ์ ์œผ๋กœ ์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋” ์ž์„ธํ•œ ๋…ผ์˜๋Š” ๋‹ค์Œ ์ฃผ์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”: Discourse ๅค‡ไปฝๅ’Œๆขๅคไธญๆœ‰ๅ…ณ้™„ไปถ็š„้—ฎ้ข˜ - Discourse - iSharkFly

ํ˜น์‹œ ๋‹ค๋ฅธ ์งˆ๋ฌธ ํ•˜๋‚˜๋งŒ ๋” ํ•ด๋„ ๋ ๊นŒ์š”? ์ €๋Š” Amazon S3 ๋Œ€์‹  Cloudflare R2๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , R2์— ๋ฐฑ์—…์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. Cloudflare์—์„œ๋Š” ํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜์ง€๋งŒ, Discourse ๊ด€๋ฆฌ์ž ํ™”๋ฉด์—์„œ๋Š” ๋ฐฑ์—… ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋””์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฑธ๊นŒ์š”?


์ˆ˜๋™์œผ๋กœ ํ•œ ๋ฒˆ ๋” ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ฐฑ์—… ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

์ด ๋ฌธ์ œ๋Š” ๋Œ€๋ถ€๋ถ„ Discourse๊ฐ€ R2 ์Šคํ† ๋ฆฌ์ง€์— ๋ฐฑ์—…๋œ ํ›„์˜ ์ƒํƒœ ํ™•์ธ ๊ด€๋ จ API์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋กœ๊ทธ์˜ ๋‚ด์šฉ์ด ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋ก๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ ์Šคํฌ๋ฆฐ์ƒท์ธ๋ฐ, ํ™”๋ฉด์ƒ์œผ๋กœ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ R2์—์„œ ์ƒ์„ฑํ•œ API๋Š” ์ตœ๊ณ  ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•ด ๋ณด๋‹ˆ, ์šฐ๋ฆฌ์˜ ๋กœ๊ทธ๊ฐ€ ๋™์ผํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[2024-07-26 11:56:00] pg_dump: executing SEQUENCE SET category_custom_fields_id_seq
[2024-07-26 11:56:00] Finalizing backup...
[2024-07-26 11:56:00] Creating archive: isharkfly-2024-07-26-115540-v20240723030506.tar.gz
[2024-07-26 11:56:00] Making sure archive does not already exist...
[2024-07-26 11:56:00] Creating empty archive...
[2024-07-26 11:56:00] Archiving data dump...
[2024-07-26 11:56:00] Archiving uploads...
[2024-07-26 11:56:00] Skipping uploads stored on S3.
[2024-07-26 11:56:00] Removing tmp '/var/www/discourse/tmp/backups/default/2024-07-26-115540' directory...
[2024-07-26 11:56:00] Gzipping archive, this may take a while...
[2024-07-26 11:56:05] Uploading archive...
[2024-07-26 11:56:09] Executing the after_create_hook for the backup...
[2024-07-26 11:56:09] Deleting old backups...
[2024-07-26 11:56:10] Cleaning stuff up...
[2024-07-26 11:56:10] Removing archive from local storage...
[2024-07-26 11:56:10] Removing '.tar' leftovers...
[2024-07-26 11:56:10] Marking backup as finished...
[2024-07-26 11:56:10] Refreshing disk stats...
[2024-07-26 11:56:10] Notifying 'honeymoose' of the end of the backup...
[2024-07-26 11:56:18] Finished!

๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—… ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ก ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ๋„ R2๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”? ์„ฑ๊ณต์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฑฐ์ฃ ?

์ €๋Š” AWS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ ์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.