inspeep

FastAPI ์„œ๋ฒ„ 503 ์—๋Ÿฌ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…: DB ์ปค๋„ฅ์…˜ ํ’€ ๊ณ ๊ฐˆ(QueuePool Overflow) ํ•ด๊ฒฐ ๋ฐ Cloudflare ์†๋„ ์ œํ•œ(Rate Limiting) ๋ฐฉ์–ด๊ธฐ

์กฐํšŒ ์ˆ˜ 12
์ถ”์ฒœ ์ˆ˜ 0
๋Œ“๊ธ€ 0

์„œ๋น„์Šค๊ฐ€ ์–ด๋А ์ •๋„ ๊ถค๋„์— ์˜ค๋ฅด๊ณ  ์–‘์งˆ์˜ IT ์นผ๋Ÿผ๊ณผ ํŠธ๋ Œ๋“œ ๊ธ€๋“ค์ด ์ˆ˜๋งŒ ๊ฐœ์”ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์Œ“์ด์ž, ํ‰ํ™”๋กญ๋˜ ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„ ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ๋ถ‰์€์ƒ‰ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ๋น„ ๋‚ด๋ฆฌ๋“ฏ ์Ÿ์•„์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์—๋Š” ์ ‘์† ๋ถˆ๊ฐ€ ์ƒํƒœ๋ฅผ ์•Œ๋ฆฌ๋Š” 503 Service Unavailable ์—๋Ÿฌ๊ฐ€ ๋–ด๊ณ , ๋ฐฑ์—”๋“œ ๋กœ๊ทธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋”์ฐํ•œ ๋ฌธ๊ตฌ๋“ค์ด ์ฐํ˜€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

QueuePool limit of size 10 overflow 10 reached, connection timed out ECHECKOUTTIMEOUT

์ด ์—๋Ÿฌ๋“ค์€ FastAPI ์›น ์„œ๋ฒ„์™€ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Supabase ๋“ฑ) ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” 'ํ†ต๋กœ(Connection Pool)'๊ฐ€ ๊ฝ‰ ์ฐจ์„œ ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ์ ‘์†์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์—†์„ ๋•Œ ํ„ฐ์ ธ ๋‚˜์˜ค๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์˜ ์ „ํ˜•์ ์ธ ์ฆ์ƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ฆ‰์‹œ ์—‘์„ธ์Šค ๋กœ๊ทธ๋ฅผ ๋œฏ์–ด๋ณด์•˜๊ณ , ๊ทธ๊ณณ์—์„œ ์„œ๋ฒ„๋ฅผ ๊ณต๊ฒฉํ•˜๊ณ  ์žˆ๋Š” ๋ฒ”์ธ๋“ค์˜ ๋ช…ํ™•ํ•œ ํŒจํ„ด์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.



1. ๋ฒ”์ธ์€ ๋ฌดํ•œ๋Œ€์˜ ๋ฌด๊ธฐ๋ฅผ ์ฅ” 'IPv6 ๋ด‡๋„ท(Botnet)'


์ง„์งœ ์‚ฌ๋žŒ(๋ธŒ๋ผ์šฐ์ €)์ด ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด HTML ๋ฌธ์„œ๋ฅผ ์ฝ์€ ๋’ค, ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ณธ๋ฌธ์— ํฌํ•จ๋œ ์ˆ˜์‹ญ ๊ฐœ์˜ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค(/static/uploads/*.webp)์„ ์—ฐ๋‹ฌ์•„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋กœ๊ทธ์— ์ฐํžŒ ์•…์„ฑ ๋ด‡๋“ค์€ ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ๋‹จ ํ•˜๋‚˜๋„ ์š”์ฒญํ•˜์ง€ ์•Š์€ ์ฑ„, ์˜ค์ง ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋งŒ ๋นผ๊ฐ€๊ธฐ ์œ„ํ•ด page=170, page=448 ๊ฐ™์€ ์ผ๋ฐ˜ ์œ ์ €๋ผ๋ฉด ์ ˆ๋Œ€ ๋ˆ„๋ฅด์ง€ ์•Š์„ ์•„๋“ํžˆ ๊นŠ์€ ํŽ˜์ด์ง€(Deep Pagination)์˜ ์ฃผ์†Œ๋งŒ 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฌด์ž๋น„ํ•˜๊ฒŒ ๊ธ์–ด๊ฐ€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์ด๋“ค์ด ๊ธฐ์กด IPv4๊ฐ€ ์•„๋‹Œ ๋ฌดํ•œ๋Œ€์— ๊ฐ€๊นŒ์šด IP๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” IPv6 ์ฃผ์†Œ(2a10:..., 2a11:..., 2a13:..., 2a01:...) ๋Œ€์—ญ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ IP๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋‹จํ•˜๋Š” '๋‘๋”์ง€ ๊ฒŒ์ž„'์œผ๋กœ๋Š” ์ด ๋ฐฉ๋Œ€ํ•œ ๋ด‡๋„ท ๋ถ€๋Œ€๋ฅผ ์ ˆ๋Œ€ ๋ง‰์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ˆ˜๋ฐฑ ํŽ˜์ด์ง€ ๋’ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ(Offset/Limit)์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๊ฒฐ๊ตญ ์ปค๋„ฅ์…˜ ํ’€์„ ๋ชจ๋‘ ์†Œ์ง„ํ•˜๊ณ  ๊ธฐ์ ˆํ•ด๋ฒ„๋ฆฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.



2. ๋ฐฉ์–ด๋ง‰ 1: Cloudflare ์†๋„ ์ œํ•œ(Rate Limiting)๊ณผ DB ํŠœ๋‹


์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๊ธฐ ์ „์— ์•ž๋‹จ(๋„คํŠธ์›Œํฌ)์—์„œ ํŠธ๋ž˜ํ”ฝ์˜ ํ™์ˆ˜๋ฅผ ๋ง‰์•„์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ฆ‰์‹œ Cloudflare ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์—ด์–ด ๊ฐ•๋ ฅํ•œ ์†๋„ ์ œํ•œ(Rate Limiting) ๊ทœ์น™์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ ์šฉ ๊ฒฝ๋กœ: ์ž๋™ ์—…๋กœ๋“œ API ๋“ฑ์˜ ์˜ˆ์™ธ ๊ฒฝ๋กœ๋ฅผ ์ œ์™ธํ•œ ์‚ฌ์ดํŠธ ์ „์ฒด(/)

  • ์ œํ•œ ๊ธฐ์ค€: 10์ดˆ๋‹น 400ํšŒ ์š”์ฒญ ์ดˆ๊ณผ ์‹œ, 10์ดˆ๊ฐ„ ๊ฐ•์ œ ์ฐจ๋‹จ(Block)

  • ์ถ”๊ฐ€ ๋ณด์•ˆ: ๋กœ๊ทธ์ธ ์—”๋“œํฌ์ธํŠธ ๋“ฑ์„ ๊ฒจ๋ƒฅํ•œ ๋ด‡ ๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์œ ์ถœ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ฆ(Leaked credential check) ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”

'10์ดˆ์— 400ํšŒ'๋ผ๋Š” ๊ธฐ์ค€์€ ์‚ฌ๋žŒ ๊ธฐ์ค€์œผ๋กœ๋Š” ์ ˆ๋Œ€ ๋„˜์„ ์ˆ˜ ์—†๋Š” ์ˆ˜์น˜ ๊ฐ™์ง€๋งŒ, ์‹ค์ œ ์›น ํŽ˜์ด์ง€ ํ•˜๋‚˜๊ฐ€ ๋กœ๋”ฉ๋  ๋•Œ ์ˆ˜์‹ญ ๊ฐœ์˜ ์ด๋ฏธ์ง€์™€ ์ •์  ํŒŒ์ผ์ด ๋™์‹œ์— ํ˜ธ์ถœ๋œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ ์ผ๋ฐ˜ ์œ ์ €๋“ค์ด ์–ต์šธํ•˜๊ฒŒ ์ฐจ๋‹จ๋‹นํ•˜์ง€ ์•Š๋„๋ก ๋งค์šฐ ๋„‰๋„‰ํ•˜์ง€๋งŒ ํ™•์‹คํ•œ ์ž„๊ณ„์น˜(Threshold)๋กœ ์„ค์ •ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์™€ ๋”๋ถˆ์–ด DB ์ฟผ๋ฆฌ ํƒ€์ž„์•„์›ƒ์„ ์งง๊ฒŒ ์ค„์ด๋Š” 'Fail-Fast' ํŠœ๋‹์„ ๊ณ๋“ค์—ฌ, ๋ด‡์ด ๋ฌด๊ฑฐ์šด ์š”์ฒญ์„ ๋˜์ ธ๋„ DB๊ฐ€ ์˜ค๋žซ๋™์•ˆ ๋ถ™์žก๊ณ  ์žˆ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์—ฐ๊ฒฐ์„ ๋Š๋„๋ก ์กฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.



3. ๋ฐฉ์–ด๋ง‰ 2: 'ํŽ˜์ด์ง• ๋ด‡(Paging Bots)' ๋งž์ถคํ˜• ์Šค๋งˆํŠธ ๋ฃฐ


์†๋„ ์ œํ•œ์œผ๋กœ ๊ธ‰ํ•œ ๋ถˆ์„ ๊ป๋‹ค๋ฉด, ์ด๋ฒˆ์—๋Š” ์„œ๋ฒ„ ์ž์›์„ ๊ฐ€์žฅ ๋งŽ์ด ๊ฐ‰์•„๋จน๋Š” '๋ฌด๋‹จ ๋”ฅ ํŽ˜์ด์ง• ์Šคํฌ๋ž˜ํ•‘'์„ ์›์ฒœ ๋ด‰์‡„ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

๋ด‡๋„ท๋“ค์€ ๋ˆ์งˆ๊ธฐ๊ฒŒ URL ์ฟผ๋ฆฌ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ(page=, lang=)๋ฅผ ์กฐ์ž‘ํ•˜๋ฉฐ ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค. ์ €๋Š” Cloudflare WAF ์‚ฌ์šฉ์ž ์ง€์ • ๊ทœ์น™์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„์ฃผ ์Šค๋งˆํŠธํ•œ ๋…ผ๋ฆฌ ๊ตฌ์กฐ(AND)๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์กฐ๊ฑด A: HTTP ์š”์ฒญ์˜ User-Agent ๋ฌธ์ž์—ด์— bot, facebook, spider, crawl ๋“ฑ์˜ ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ๊ฒƒ.

  2. ์กฐ๊ฑด B: URL์˜ Query String์— page= ๋˜๋Š” lang= ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ๊ฒƒ.

  3. ์กฐ์น˜ (Action): ์œ„ ๋‘ ์กฐ๊ฑด์„ ๋™์‹œ์— ๋งŒ์กฑํ•˜๋ฉด ์„œ๋ฒ„ ์ž์› ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ์ฆ‰์‹œ ์ฐจ๋‹จ(Block)ํ•  ๊ฒƒ.

์ด ์Šค๋งˆํŠธ ๋ฃฐ์€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)๋ฅผ ์œ„ํ•ด ๋ฉ”์ธ ํ™”๋ฉด์„ ์ฝ์–ด๊ฐ€๋Š” ์ฐฉํ•œ ํฌ๋กค๋Ÿฌ๋“ค์˜ ๊ธฐ๋ณธ ํ™œ๋™์€ ํ—ˆ์šฉํ•˜๋ฉด์„œ๋„, DB๋ฅผ ์ฃฝ์ด๋Š” ์ฃผ๋ฒ”์ธ '๊ฒŒ์‹œํŒ ํ•˜๋‹จ ํŽ˜์ด์ง• ๋ฒ„ํŠผ ๊ด‘ํด ๋ด‡'๋“ค๋งŒ ์ •ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜์—ฌ ๋ชฉ์„ ๋ฒ ์–ด๋ฒ„๋ฆฌ๋Š” ์ตœ๊ณ ์˜ ๊ฐ€์„ฑ๋น„ ๋ฐฉ์–ด์ฑ…์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋ฐฉ์–ด ์ธํ”„๋ผ ์„ธํŒ…์„ ๋งˆ์น˜๊ณ  ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์ž ๊ธฐ์  ๊ฐ™์€ ํ‰ํ™”๊ฐ€ ์ฐพ์•„์™”์Šต๋‹ˆ๋‹ค. ์ง€๊ธ‹์ง€๊ธ‹ํ•˜๋˜ QueuePool ์—๋Ÿฌ์™€ 503 ์—๋Ÿฌ๋Š” ๋‹จ ํ•œ ์ค„๋„ ๋ณด์ด์ง€ ์•Š์•˜๊ณ , ๋Œ€์‹  ์ง„์งœ ์‚ฌ๋žŒ ์œ ์ €๋“ค์ด ์ด๋ฏธ์ง€๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์š”์ฒญํ•˜๋Š” ์พŒ์ ํ•œ 200 OK์™€ 304 Not Modified ๋กœ๊ทธ๋งŒ์ด ๋ฌผ ํ๋ฅด๋“ฏ ์•„๋ฆ„๋‹ต๊ฒŒ ์˜ฌ๋ผ์˜ค๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์›น ์„œ๋ฒ„ ์šด์˜์€ ๊ฒฐ๊ตญ '๋ณด์ด์ง€ ์•Š๋Š” ์•…์„ฑ ํŠธ๋ž˜ํ”ฝ๊ณผ์˜ ๋์—†๋Š” ์˜ํ†  ์ „์Ÿ'์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ์ฝ”๋“œ์˜ ์ตœ์ ํ™”๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, 1์ธ ๊ฐœ๋ฐœ์ž์ผ์ˆ˜๋ก Cloudflare WAF์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ์—ฃ์ง€(Edge) ๋„คํŠธ์›Œํฌ ๋ฐฉ์–ด๋ง‰์„ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ž์›์„ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๊ณต์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ฑ์žฅ์˜ ์ฒซ๊ฑธ์Œ์ž„์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒˆ๊ธธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.



โ“ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)

Q1. User-Agent์— bot์„ ์ฐจ๋‹จํ•˜๋ฉด ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค ์‹ฌ์‚ฌ ๋ด‡์ด๋‚˜ SEO ํฌ๋กค๋Ÿฌ๋„ ๋ง‰ํžˆ๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€์š”?

A. ์ผ๋ฐ˜์ ์ธ ํ…์ŠคํŠธ ์ฐจ๋‹จ๋งŒ ์“ฐ๋ฉด ๋ง‰ํž ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Cloudflare์˜ WAF ๊ทœ์น™์„ ์ž‘์„ฑํ•  ๋•Œ, ์กฐ๊ฑด๋ฌธ์— Known Bots (์•Œ๋ ค์ง„ ๋ด‡) = Off (๊บผ์ง)์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด, ๊ตฌ๊ธ€(Googlebot, Mediapartners-Google)์ด๋‚˜ ๋น™(Bingbot) ๊ฐ™์ด ๊ณต์‹์ ์œผ๋กœ ์ธ์ฆ๋œ ์ฐฉํ•œ ๋ด‡๋“ค์€ ์ด ์ฐจ๋‹จ ๊ทœ์น™์„ ํ”„๋ฆฌํŒจ์Šค๋กœ ์šฐํšŒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์• ๋“œ์„ผ์Šค ์‹ฌ์‚ฌ๋‚˜ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๋…ธ์ถœ์—๋Š” 1%์˜ ์•…์˜ํ–ฅ๋„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


Q2. ์™œ '10์ดˆ๋‹น 400ํšŒ'๋ผ๋Š” ๋†’์€ ์ˆซ์ž๋กœ ์†๋„ ์ œํ•œ์„ ๊ฑธ์—ˆ๋‚˜์š”? ์ข€ ๋” ๋นก๋นกํ•˜๊ฒŒ 50ํšŒ ์ •๋„๋กœ ์ค„์ด๋ฉด ์•ˆ ๋˜๋‚˜์š”?

A. ํ˜„๋Œ€์˜ ๋ฐ˜์‘ํ˜• ์›น์‚ฌ์ดํŠธ๋Š” HTML ๋ฌธ์„œ ํ•œ ์žฅ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์— ์‚ฝ์ž…๋œ ์ˆ˜์‹ญ ์žฅ์˜ ๊ณ ํ™”์งˆ ์ด๋ฏธ์ง€(.webp), CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋“ค์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์‹œ์— ๋กœ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์†๋„ ์ œํ•œ์„ 10์ดˆ์— 50ํšŒ ์ •๋„๋กœ ๋นก๋นกํ•˜๊ฒŒ ์žก์œผ๋ฉด, ์Šค๋งˆํŠธํฐ์œผ๋กœ ๊ฒŒ์‹œ๊ธ€์„ ๋น ๋ฅด๊ฒŒ ์Šคํฌ๋กคํ•˜๋ฉฐ ์ด๋ฏธ์ง€๋ฅผ ํ›‘์–ด๋ณด๋Š” ํ‰๋ฒ”ํ•œ '์ง„์งœ ์œ ์ €'๋“ค๊นŒ์ง€ ์•…์„ฑ ๋ด‡์œผ๋กœ ์˜คํ•ด๋ฐ›์•„ 10์ดˆ๊ฐ„ ์‚ฌ์ดํŠธ ์ ‘์†์ด ์ฐจ๋‹จ(Block)๋˜๋Š” ์ตœ์•…์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Q3. ์ •์  ํŒŒ์ผ(์ด๋ฏธ์ง€)์„ ์„œ๋น™ํ•  ๋•Œ ๋ด‡๋“ค์ด ๋ชฐ๋ ค์˜ค๋ฉด DB๊ฐ€ ์ฃฝ์ง€ ์•Š๋‚˜์š”?


A. ์ด๋ฏธ์ง€ ํŒŒ์ผ(.webp, .jpg) ๋“ฑ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ์š”์ฒญ(/static/uploads/...)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(PostgreSQL)๋ฅผ ์ „ํ˜€ ๊ฑฐ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
. ํŒŒ์ด์ฌ ์›Œ์ปค๊ฐ€ ํ•˜๋“œ๋””์Šคํฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ์ง์ ‘ ๊ฑด๋„ค์ฃผ๊ฑฐ๋‚˜ Cloudflare์˜ ์—ฃ์ง€(Edge) ์บ์‹œ ์„œ๋ฒ„๊ฐ€ ๋Œ€์‹  ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, ์ด๋ฏธ์ง€ ์š”์ฒญ์ด 1์ดˆ์— ์ˆ˜๋ฐฑ ๋ฒˆ ์Ÿ์•„์ง€๋”๋ผ๋„ DB ์ปค๋„ฅ์…˜ ํ’€์„ ์†Œ๋ชจํ•˜์ง€ ์•Š์•„ ์„œ๋ฒ„๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์˜ค์ง ๋ฌด๊ฑฐ์šด SQL ์—ฐ์‚ฐ์„ ์œ ๋ฐœํ•˜๋Š” ๋™์  ํŽ˜์ด์ง€ ํ˜ธ์ถœ(/post/...?page=)์ž…๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๋Œ“๊ธ€ 0๊ฐœ

IT ๊ฒŒ์‹œํŒ

๊ณต์ง€
Notice
๊ณต์ง€ inspeep ์ปค๋ฎค๋‹ˆํ‹ฐ ์ด์šฉ ๋ฐ ๊ฒŒ์‹œ๋ฌผ ๊ด€๋ฆฌ ๊ทœ์ • ์•ˆ๋‚ด
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.04.15 ๐Ÿ‘€ ์กฐํšŒ 57 ๐Ÿ‘ ์ถ”์ฒœ 0
BEST
์ธ๋„ค์ผ
BEST 2. ์ฝ”๋”ฉ ๋ฌธ์™ธํ•œ์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ์ •๋ณต๊ธฐ: VS Code์™€ FTP์˜ ์Šต๊ฒฉ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 135 ๐Ÿ‘ ์ถ”์ฒœ 0
Random Pick
์ธ๋„ค์ผ
Random Pick
์ธ๋„ค์ผ
Random Pick ์œ ๋ถ€๋‚จ ์ปดํ“จํ„ฐ ๋งŒ๋“ค๊ธฐ (์Šค์••)
๐Ÿ‘ค ๋ฆฌํ† ํƒ€ ๐Ÿ“… 2026.06.13 ๐Ÿ‘€ ์กฐํšŒ 13 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
ํœด์ง€๊ฐ€ ์™œ ์ปดํ“จํ„ฐ ์•ž์— ์žˆ์–ด์š”?" ์˜ ์ง„์‹ค
๐Ÿ‘ค Maodun ๐Ÿ“… 2026.10.05 ๐Ÿ‘€ ์กฐํšŒ 2 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
ํ•€๋ž€๋“œ ๊ตฐ์ธ ์žฅ๊ต๊ฐ€ ๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•ด์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฌผ
๐Ÿ‘ค ๋กœ๋ฃจ๋””๋‹ค ๐Ÿ“… 2026.10.01 ๐Ÿ‘€ ์กฐํšŒ 4 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
๊ฐค๋Ÿญ์‹œ ํƒญ S12 ์‹œ๋ฆฌ์ฆˆ ๊ณต๊ฐœ
๐Ÿ‘ค KEeep ๐Ÿ“… 2026.10.01 ๐Ÿ‘€ ์กฐํšŒ 1 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๋‰ด์Šค
์ธ๋„ค์ผ
์•„์ดํฐ ํ‚ค๋ณด๋“œ ์˜คํƒ€ ์ž˜๋‚˜๋Š” ์ด์œ ..jpg
๐Ÿ‘ค ๋ฃจ๋ฃจ์›จ๋„ ๐Ÿ“… 2026.09.27 ๐Ÿ‘€ ์กฐํšŒ 1 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
์ปดํ“จํ„ฐ ์œ ํŠœ๋ฒ„๊ฐ€ ๋งํ•ด์ฃผ๋Š” ์ตœ๊ทผ ์šฉ์‚ฐ ์ฐ
๐Ÿ‘ค ๋ฃจ๋ฃจ์›จ๋„ ๐Ÿ“… 2026.09.26 ๐Ÿ‘€ ์กฐํšŒ 1 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
์‹ฑ๊ธ€๋ฒ™๊ธ€ 2025~27๋…„ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ๋น„ ์ˆœ์œ„
๐Ÿ‘ค ์•ผ๋ฆฌํƒ€ ๐Ÿ“… 2026.09.26 ๐Ÿ‘€ ์กฐํšŒ 0 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
์˜์™ธ๋กœ ์Šค๋งˆํŠธํฐ ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ์‹ฌํ•˜๋‹ค๋Š”๊ฑฐ
๐Ÿ‘ค Maodun ๐Ÿ“… 2026.09.23 ๐Ÿ‘€ ์กฐํšŒ 4 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
์•„์ดํฐ 18 ์‹œ๋ฆฌ์ฆˆ ์‹ฌ๊ฐํ•œ ํŒจ๋‹‰ํ’€ ๊ฒฐํ•จ
๐Ÿ‘ค ๋กœ๋ฃจ๋””๋‹ค ๐Ÿ“… 2026.09.22 ๐Ÿ‘€ ์กฐํšŒ 5 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
์‹ ์•ฝ ๊ฐœ๋ฐœ AI 'K-ํด๋“œ' ๊ตฌ๊ธ€์— ๋„์ „์žฅ
๐Ÿ‘ค ๋ฐ”๋ฃจ๋ฐ์—ฌ ๐Ÿ“… 2026.09.21 ๐Ÿ‘€ ์กฐํšŒ 3 ๐Ÿ‘ ์ถ”์ฒœ 0
์ž์œ 
No Image
๋‰ด์Šค
์ธ๋„ค์ผ
ๅŒ—๋ฐฐ์ง€ ๊ฐ€์Šด์— ๋‹ฌ๊ณ , ์†์—” ์‚ผ์„ฑ ๊ฐค๋Ÿญ์‹œํฐ?
๐Ÿ‘ค ๋ฃจ๋ฃจ์›จ๋„ ๐Ÿ“… 2026.09.20 ๐Ÿ‘€ ์กฐํšŒ 6 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
๊ฐค๋Ÿญ์‹œ s25+ ํญ๋ฐœ์‚ฌ๊ณ ;
๐Ÿ‘ค PPAOE ๐Ÿ“… 2026.09.19 ๐Ÿ‘€ ์กฐํšŒ 6 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ์ž ํ–ฅํ•ด ๊ณต๊ฒฉ? ๋ฌด์ˆ  ๋กœ๋ด‡ 'ํ†ต์ œ ๋ถˆ๋Šฅ' ๋น„์ƒ
๐Ÿ‘ค ๋กœ๋ฃจ๋””๋‹ค ๐Ÿ“… 2026.09.19 ๐Ÿ‘€ ์กฐํšŒ 4 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
์Šฌ๋กญ๋А๋‚Œ์—†๋Š” ๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ ์ข†๊ณ ์ˆ˜๊ฐ€ ์ด์‚ฌ๋žŒ์ž„ ใ…‹ใ…‹
๐Ÿ‘ค ๋กœ๋ฃจ๋””๋‹ค ๐Ÿ“… 2026.09.18 ๐Ÿ‘€ ์กฐํšŒ 11 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๋‰ด์Šค
์ธ๋„ค์ผ
์ค‘๊ตญ์ž‡์„ญ๋„ ๊ทน์ฐฌ. ์•„์ดํฐ18 ํ”„๋กœ๋งฅ์Šค A20 ๋ถ„์„ ์š”์•ฝ.
๐Ÿ‘ค ๋ฃจ๋ฃจ์›จ๋„ ๐Ÿ“… 2026.09.18 ๐Ÿ‘€ ์กฐํšŒ 10 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
์•…ํ”Œ ์ฐพ์•„์ฃผ๋Š” AI์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ฐœํ•œ ํ—ˆ์„ฑ๋ฒ”
๐Ÿ‘ค Maodun ๐Ÿ“… 2026.09.18 ๐Ÿ‘€ ์กฐํšŒ 12 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
์‚ผ์„ฑ๊ฐ•๋‚จ ๊ฐค๋Ÿญ์‹œ ํด๋”๋ธ” ์ „์‹œํšŒ
๐Ÿ‘ค KEeep ๐Ÿ“… 2026.09.15 ๐Ÿ‘€ ์กฐํšŒ 13 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
์ด๊ฒŒ ํฌ๋ž˜ํ”„ํ†ค ์ถœ์‹  ๊ฐœ๋ฐœ์ž์˜ ๋ง๋กœ์ž„...jpg
๐Ÿ‘ค ๋กœ๋ฃจ๋””๋‹ค ๐Ÿ“… 2026.09.15 ๐Ÿ‘€ ์กฐํšŒ 14 ๐Ÿ‘ ์ถ”์ฒœ 0
« ์ฒ˜์Œ ‹ ์ด์ „ 1 2 3 4 5 6 7 ๋‹ค์Œ › ๋ »
โœ๏ธ ๊ธ€์“ฐ๊ธฐ