inspeep

FastAPI ๋ฐฑ์—”๋“œ ์ตœ์ ํ™”: Supabase์—์„œ ๋กœ์ปฌ PostgreSQL๋กœ DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (asyncpg, 524 ์—๋Ÿฌ) ๊ฒฝํ—˜๊ธฐ

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

์ตœ๊ทผ ์ €๋Š” ํŒŒ์ด์ฌ(FastAPI)๊ณผ SQLAlchemy๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ•˜๋ฉฐ, ๋น ๋ฅด๊ณ  ํŽธ๋ฆฌํ•œ ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ ์ˆ˜ํŒŒ๋ฒ ์ด์Šค(Supabase)๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์—๋Š” ํด๋ผ์šฐ๋“œ์˜ ํŽธ๋ฆฌํ•จ์— ๊ฐํƒ„ํ•˜๋ฉฐ ๋งŒ์กฑ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ์„œ๋น„์Šค์— '์ž๋™ํ™” ํฌ์ŠคํŒ… ๋ด‡' ๋กœ์ง์„ ์—ฐ๋™ํ•˜๋ฉด์„œ ์‹ฌ๊ฐํ•œ ๋ฒฝ์— ๋ถ€๋”ชํžˆ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์‹ญ ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€๊ณผ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€๋ฅผ ๋ฒˆ์—ญ API์™€ ์—ฐ๋™ํ•˜์—ฌ 4~16๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ณ„์†ํ•ด์„œ ๋ฐ€์–ด ๋„ฃ๋‹ค ๋ณด๋‹ˆ(๋ฒŒํฌ ์ธ์„œํŠธ), ํด๋ผ์šฐ๋“œ DB ํŠน์œ ์˜ Disk I/O ๋ณ‘๋ชฉ ํ˜„์ƒ๊ณผ ์ปค๋„ฅ์…˜ ํ•œ๊ณ„(Connection Limit)๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธ€์ด ์˜ฌ๋ผ๊ฐ€๋‹ค ๋ง๊ณ  ์„œ๋ฒ„๊ฐ€ ๋ป—์–ด๋ฒ„๋ฆฌ๋Š” ํ˜„์ƒ์„ ๋ณด๋ฉฐ, ์ €๋Š” ์ค‘๋Œ€ํ•œ ๊ฒฐ๋‹จ์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค.

"์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํƒ€๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ์ง€์—ฐ(Latency)์„ ์—†์• ๊ณ , ๋‚ด ์„œ๋ฒ„ ์ž์›์„ 100% ํ™œ์šฉํ•˜์ž." ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํด๋ผ์šฐ๋“œ์—์„œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ๊ตฌ๋™ ์ค‘์ธ ๋กœ์ปฌ ํ™˜๊ฒฝ(๋กœ์ปฌ PostgreSQL, localhost:5432)์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋Œ€๋Œ€์ ์ธ ๊ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด ๊ณผ์ •์—์„œ ์ œ๊ฐ€ ๊ฒช์—ˆ๋˜ ํ”ผ๋ˆˆ๋ฌผ ๋‚˜๋Š” 3๊ฐ€์ง€ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.




1. ์ฒซ ๋ฒˆ์งธ ์‚ฝ์งˆ: ํ™˜๊ฒฝ๋ณ€์ˆ˜(.env)๋ฅผ ๋ฐ”๊ฟจ๋Š”๋ฐ ์™œ ์ ‘์†์„ ๋ชป ํ•˜๋‹ˆ? (Connection refused)


๊ฐ€์žฅ ๋จผ์ € ๊ฒช์€ ํ™ฉ๋‹นํ•œ ๋ฌธ์ œ๋Š” DB ์—ฐ๊ฒฐ ์˜ค๋ฅ˜์˜€์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์„œ๋ฒ„์— PostgreSQL์„ ๋ฌด์‚ฌํžˆ ์„ค์น˜ํ•˜๊ณ , .env ํŒŒ์ผ์˜ DB ์ ‘์† URL ํฌํŠธ๋ฅผ ํด๋ผ์šฐ๋“œ์šฉ ํฌํŠธ์—์„œ ๋กœ์ปฌ ๊ธฐ๋ณธ ํฌํŠธ์ธ 5432๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ... ํ™”๋ฉด์— ๋”์ฐํ•œ ์—๋Ÿฌ๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Connection refused: Cannot connect to port 6543

๋ถ„๋ช… .env์—๋Š” 5432๋กœ ์ ์–ด๋‘์—ˆ๋Š”๋ฐ, ์„œ๋ฒ„๋Š” ๊ณ„์†ํ•ด์„œ ์—‰๋šฑํ•œ 6543 ํฌํŠธ๋ฅผ ์ฐพ์œผ๋ฉฐ ์—ฐ๊ฒฐ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ์ง€์›Œ๋ณด๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ป๋‹ค ์ผœ๋ด๋„ ์†Œ์šฉ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋„๋Œ€์ฒด ์–ด๋””์„œ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๊ผฌ์ธ ๊ฒƒ์ผ๊นŒ์š”?

์ €๋Š” ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  grep ๋ช…๋ น์–ด๋ฅผ ๋นผ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. grep -rn "6543" . (ํ˜„์žฌ ํด๋”์™€ ํ•˜์œ„ ํด๋”์—์„œ 6543์ด๋ผ๋Š” ํ…์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ์ฐพ์•„๋ผ!)

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ์ถฉ๊ฒฉ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์— Supabase ์™ธ๋ถ€ ์ปค๋„ฅ์…˜ ํ’€๋ง(Connection Pooling)์„ ์„ธํŒ…ํ•  ๋•Œ, database.py ํŒŒ์ผ ๊นŠ์ˆ™ํ•œ ๊ณณ์— URL ๋ฌธ์ž์—ด ์ค‘ .replace(":5432/", ":6543/")์„ ํ†ตํ•ด ๊ฐ•์ œ๋กœ ํฌํŠธ๋ฅผ ๋ณ€ํ™˜ํ•ด๋ฒ„๋ฆฌ๋Š” ํ•˜๋“œ์ฝ”๋”ฉ ๋กœ์ง์„ ์ œ๊ฐ€ ์ง์ ‘ ์งœ๋‘๊ณ  ๊นŒ๋งฃ๊ฒŒ ์žŠ๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์ค„์„ ์ฐพ์•„๋‚ด์–ด ๊น”๋”ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๊ณ  ๋‚˜๋‹ˆ, ๊ทธ์ œ์•ผ FastAPI๊ฐ€ ๋กœ์ปฌ DB(5432)์— ์ •์ƒ์ ์œผ๋กœ ๋ฟŒ๋ฆฌ๋ฅผ ๋‚ด๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์˜ ์ œ๊ฐ€ ๋งŒ๋“  ํ•จ์ •์— ์ œ๊ฐ€ ๋น ์ง„ ์…ˆ์ด์ฃ .




2. ๋‘ ๋ฒˆ์งธ ์‚ฝ์งˆ: ์„ฑ๋Šฅ์˜ ํ•œ๊ณ„ ๋ŒํŒŒ, ๋น„๋™๊ธฐ ๋“œ๋ผ์ด๋ฒ„(asyncpg)๋กœ์˜ ์ „ํ™˜

๋กœ์ปฌ DB๋กœ ์—ฐ๊ฒฐ์€ ์„ฑ๊ณตํ–ˆ์ง€๋งŒ, ๋Œ€๋Ÿ‰์˜ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ์ €๋Š” ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ๋™๊ธฐ์‹ ๋“œ๋ผ์ด๋ฒ„์ธ psycopg ๋Œ€์‹ , ํŒŒ์ด์ฌ์—์„œ ๊ฐ€์žฅ ๋น ๋ฅธ ๋น„๋™๊ธฐ PostgreSQL ๋“œ๋ผ์ด๋ฒ„์ธ asyncpg๋กœ ์—”์ง„์„ ๊ต์ฒดํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋ฐ”๊พธ์ž ์ด๋ฒˆ์—๋Š” SQLAlchemy ์„ค์ •์—์„œ ํ˜ธํ™˜์„ฑ ์—๋Ÿฌ๊ฐ€ ๋ฟœ์–ด์ ธ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋™๊ธฐ์‹์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋˜ ์ปค๋„ฅ์…˜ ํƒ€์ž„์•„์›ƒ์ด๋‚˜ ์„œ๋ฒ„ ์„ธํŒ… ์ธ์ˆ˜๋“ค์ด asyncpg ๊ทœ๊ฒฉ๊ณผ ๋งž์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋’ค์ ธ๊ฐ€๋ฉฐ database.py์˜ connect_args ์„ค์ •์„ ๋น„๋™๊ธฐ ๊ทœ๊ฒฉ์— ๋งž๊ฒŒ ํŠœ๋‹ํ–ˆ์Šต๋‹ˆ๋‹ค.




์ด ํŠœ๋‹์„ ๊ฑฐ์นœ ํ›„, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๋งˆ๋ฒ•์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋А๋ผ ๋ฉˆ์ถฐ์žˆ๋˜ ๋ฐฑ์—”๋“œ ์Šค๋ ˆ๋“œ๋“ค์ด ์ž์œ ๋กญ๊ฒŒ ํ’€๋ ค๋‚˜๋ฉด์„œ, ์„œ๋ฒ„์˜ ๋™์‹œ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์ด ์ฐจ์›์ด ๋‹ค๋ฅด๊ฒŒ ์พŒ์ ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.




3. ์„ธ ๋ฒˆ์งธ ์‚ฝ์งˆ: ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด(Cloudflare) 524 ์—๋Ÿฌ์˜ ๋Šช


๋งˆ์นจ๋‚ด ์•„ํ‚คํ…์ฒ˜ ์„ธํŒ…์„ ๋๋‚ด๊ณ , ๋ด‡์„ ๊ฐ€๋™ํ•˜์—ฌ ์ˆ˜์‹ญ ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ํ•œ ๋ฒˆ์— ๋ฒŒํฌ ์ธ์„œํŠธ(Bulk Insert) ํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—…๋กœ๋“œ ๋„์ค‘ ๊ฐ‘์ž๊ธฐ ์›น ํ™”๋ฉด์— 'Cloudflare 524 A timeout occurred' ์—๋Ÿฌ๊ฐ€ ๋œจ๋ฉด์„œ ์ค‘๋ณต ๊ฒŒ์‹œ๊ธ€์ด ์˜ฌ๋ผ๊ฐ€๋Š” ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์›์ธ์€ ๋ฐฑ์—”๋“œ์˜ '์ฒ˜๋ฆฌ ์‹œ๊ฐ„'์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒŒํฌ ์—…๋กœ๋“œ๋ฅผ ํ•  ๋•Œ ๋‹จ์ˆœํžˆ DB์— ํ…์ŠคํŠธ๋งŒ ๋„ฃ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์™ธ๋ถ€ ๋ฒˆ์—ญ API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ๋ฆฌ์‚ฌ์ด์ง•ํ•˜๋Š” ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์ด 100์ดˆ๋ฅผ ๋„˜์–ด๊ฐ€์ž, ์„œ๋ฒ„ ์•ž๋‹จ์„ ์ง€ํ‚ค๊ณ  ์žˆ๋˜ ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด๊ฐ€ "์„œ๋ฒ„๊ฐ€ ์ฃฝ์€ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ์—ฐ๊ฒฐ์„ ๋Š๊ฒ ๋‹ค"๋ผ๋ฉฐ 100์ดˆ ํƒ€์ž„์•„์›ƒ(524 ์—๋Ÿฌ)์„ ๋ฐœ์ƒ์‹œํ‚จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ๋’ค์—์„œ ๊ณ„์† ๊ธ€์„ ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ ํ”„๋ก ํŠธ์—”๋“œ ์—ฐ๊ฒฐ๋งŒ ๋Š๊ธฐ๋‹ˆ, ๋ด‡์€ "์—…๋กœ๋“œ ์‹คํŒจ์ธ๊ฐ€?" ํ•˜๊ณ  ๊ธ€์„ ๋˜๋‹ค์‹œ ์ „์†กํ•˜์—ฌ ์ค‘๋ณต ํฌ์ŠคํŒ…์ด ์ผ์–ด๋‚œ ๊ฒƒ์ด์—ˆ์ฃ . ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ตœ์ ํ™”๋Š” ์˜์™ธ๋กœ ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•œ ๋ฒˆ์— ์ „์†กํ•˜๋Š” ์ฒญํฌ ์‚ฌ์ด์ฆˆ(Chunk Size, ์ „์†ก ๋‹จ์œ„)๋ฅผ ๊ธฐ์กด 20๊ฐœ์—์„œ 5๊ฐœ๋กœ ๋Œ€ํญ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— 5๊ฐœ์”ฉ๋งŒ ๋ฒˆ์—ญํ•˜๊ณ  DB์— ๋ฐ€์–ด ๋„ฃ๋„๋ก ์ชผ๊ฐœ์–ด ์ฒ˜๋ฆฌํ•˜๋‹ˆ, API ์‘๋‹ต ์‹œ๊ฐ„์ด 20์ดˆ ์ด๋‚ด๋กœ ๋‹จ์ถ•๋˜์–ด ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด์˜ 100์ดˆ ํƒ€์ž„์•„์›ƒ ์žฅ๋ฒฝ์„ ์™„๋ฒฝํ•˜๊ฒŒ ํ”ผํ•ด ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.




๋งบ์œผ๋ฉฐ: ๋กœ์ปฌ DB ํšŒ๊ท€๊ฐ€ ๊ฐ€์ ธ์˜จ ์—„์ฒญ๋‚œ ๊ฒฐ์‹ค


๊ธธ๊ณ  ํ—˜๋‚œํ–ˆ๋˜ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์„ ๋งˆ์น˜๊ณ  ๋‚˜๋‹ˆ, ๊ฒฐ๊ณผ๋Š” ์ƒ์ƒ ์ด์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํƒ€์ง€ ์•Š๊ณ  ๋กœ์ปฌ(localhost) ๋‚ด๋ถ€์—์„œ ์ฆ‰๊ฐ์ ์œผ๋กœ ํ†ต์‹ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ DB ์‘๋‹ต ์†๋„๊ฐ€ ๋น„์•ฝ์ ์œผ๋กœ ์ƒ์Šนํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡๋ณด๋‹ค ์ˆ˜์‹ญ ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€๊ณผ ์ธ๋„ค์ผ ๋ฏธ๋””์–ด๋ฅผ ๋‹ค๋ฃจ๊ณ , 4~16๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์˜ˆ์•ฝ ๋ฐœํ–‰ํ•˜๋Š” ์•„์ฃผ ๋ฌด๊ฑฐ์šด ์ž๋™ํ™” ๋ด‡ ๋กœ์ง์„ 3๊ฐœ ์ด์ƒ ๋™์‹œ์— ๋Œ๋ ค๋„ ์„œ๋ฒ„ ์ž์›(CPU, RAM)์ด ๋„‰๋„‰ํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ DB์˜ ์ปค๋„ฅ์…˜ ํ•œ๊ณ„์— ๋ฒŒ๋ฒŒ ๋–จ๋˜ ๊ณผ๊ฑฐ์™€๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋ณ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ๊ฐ€ ๋ฌด์กฐ๊ฑด ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ ์„œ๋น„์Šค์˜ ํŠธ๋ž˜ํ”ฝ ํŒจํ„ด๊ณผ ์ž๋™ํ™” ๋กœ์ง์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ, ๋•Œ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ์˜จํ”„๋ ˆ๋ฏธ์Šค(๋กœ์ปฌ) ํ™˜๊ฒฝ์œผ๋กœ ๋ฌต์งํ•˜๊ฒŒ ์‹œ์Šคํ…œ์„ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ตœ๊ณ ์˜ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ๋ผˆ์ €๋ฆฌ๊ฒŒ ๋ฐฐ์šด ์†Œ์ค‘ํ•œ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.




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


Q1. Supabase(ํด๋ผ์šฐ๋“œ)์—์„œ ๋กœ์ปฌ DB๋กœ ์ด์ „ํ•˜๋ฉด ๋ฐฑ์—…์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

A. ๋กœ์ปฌ DB์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๋ฐฑ์—…์„ ์ง์ ‘ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๋ฆฌ๋ˆ…์Šค cron ํƒญ๊ณผ pg_dump ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋งค์ผ ์ƒˆ๋ฒฝ 3์‹œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋คํ”„(๋ฐฑ์—…)ํ•˜๊ณ , ๊ทธ ํŒŒ์ผ์„ AWS S3๋‚˜ ๋ณ„๋„์˜ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€๋กœ ์ž๋™ ์ „์†กํ•˜๋„๋ก ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


Q2. Cloudflare 524 ์—๋Ÿฌ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด ์„ค์ •์„ ๋Š˜๋ฆด ์ˆ˜๋Š” ์—†๋‚˜์š”?

A. ๋ฌด๋ฃŒ ํ”Œ๋žœ(Free)์ด๋‚˜ ํ”„๋กœ ํ”Œ๋žœ ์‚ฌ์šฉ์ž ๊ธฐ์ค€, ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด์˜ 100์ดˆ ํƒ€์ž„์•„์›ƒ(524)์€ ํ•˜๋“œ ๋ฆฌ๋ฐ‹(Hard Limit)์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ๋Š˜๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ(Enterprise) ์š”๊ธˆ์ œ์—์„œ๋งŒ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ๋ฐฑ์—”๋“œ ๋กœ์ง ์ž์ฒด๋ฅผ 100์ดˆ ์ด๋‚ด๋กœ ์‘๋‹ตํ•˜๋„๋ก ์ชผ๊ฐœ๋Š” ๊ฒƒ(Chunking)์ด ์œ ์ผํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ํ•ด๊ฒฐ์ฑ…์ž…๋‹ˆ๋‹ค.


Q3. ๋น„๋™๊ธฐ asyncpg ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์“ฐ๋ฉด ๋ฌด์กฐ๊ฑด ๋นจ๋ผ์ง€๋‚˜์š”?

A. I/O ๋ฐ”์šด๋“œ ์ž‘์—…(DB๋ฅผ ์ฐ”๋Ÿฌ๋†“๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„)์ด ๋งŽ์€ ์›น ์„œ๋ฒ„๋ผ๋ฉด ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ์ข‹์•„์ ธ์„œ ๊ทน์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํŒŒ์ด์ฌ ์ฝ”๋“œ ์ „์ฒด๊ฐ€ async/await ๊ตฌ์กฐ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์งœ์—ฌ ์žˆ์ง€ ์•Š๊ณ  ์ค‘๊ฐ„์— ๋ธ”๋กœํ‚น(Blocking) ์ฝ”๋“œ๊ฐ€ ์„ž์—ฌ ์žˆ๋‹ค๋ฉด ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋„์ž… ์ „ ์•„ํ‚คํ…์ฒ˜ ์ ๊ฒ€์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๋Œ“๊ธ€ 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 ์•„์ดํฐ 18 ์‹œ๋ฆฌ์ฆˆ ์‹ฌ๊ฐํ•œ ํŒจ๋‹‰ํ’€ ๊ฒฐํ•จ
๐Ÿ‘ค ๋กœ๋ฃจ๋””๋‹ค ๐Ÿ“… 2026.09.22 ๐Ÿ‘€ ์กฐํšŒ 5 ๐Ÿ‘ ์ถ”์ฒœ 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
๋‰ด์Šค
์ธ๋„ค์ผ
ๅŒ—๋ฐฐ์ง€ ๊ฐ€์Šด์— ๋‹ฌ๊ณ , ์†์—” ์‚ผ์„ฑ ๊ฐค๋Ÿญ์‹œํฐ?
๐Ÿ‘ค ๋ฃจ๋ฃจ์›จ๋„ ๐Ÿ“… 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 ๋‹ค์Œ › ๋ »
โœ๏ธ ๊ธ€์“ฐ๊ธฐ