๐Ÿ› ๏ธAI ๋„๊ตฌ2026-05-19

๋‰ด์Šค - ์›๋ฌธ ๊ธฐ๋ฐ˜ ์š”์•ฝ ํ•„์š”

๐Ÿ’ก ํ•œ์ค„ ์š”์•ฝ|๋‰ด์Šค - ์›๋ฌธ ๊ธฐ๋ฐ˜ ์š”์•ฝ ํ•„์š”


title: "pgAdmin ์‹ซ์–ด์„œ ์ง์ ‘ ๋งŒ๋“  Postgres ๊ด€๋ฆฌ ๋„๊ตฌ dbil" description: "๋‰ด์Šค - ์›๋ฌธ ๊ธฐ๋ฐ˜ ์š”์•ฝ ํ•„์š”" date: 2026-05-19 tags: [vibe-coding] source: "https://dev.to/__c0eabc031e/i-vibe-coded-a-postgres-workspace-because-pgadmin-and-dbeaver-dont-fit-how-i-work-3oa9" sidebar: order: 0

์ œ๋ชฉ(ํ•œ๊ธ€): pgAdmin ์‹ซ์–ด์„œ ์ง์ ‘ ๋งŒ๋“  Postgres ๊ด€๋ฆฌ ๋„๊ตฌ dbil ์›๋ฌธ ์ œ๋ชฉ(์˜๋ฌธ): I vibe-coded a Postgres workspace because pgAdmin and DBeaver don't fit how I work ์›๋ฌธ: I vibe-coded a Postgres workspace because pgAdmin and DBeaver don't fit how I work ์†Œ์Šค: dev-to-vibecoding MD ํŒŒ์ผ: content/2026-05-19/dev-to-vibecoding-i-vibe-coded-a-postgres-workspace-because-pgadmin-.md

ํ•ต์‹ฌ ๋‚ด์šฉ

pgAdmin๋„ DBeaver๋„ ์•ˆ ๋งž์•„์„œ ์ง์ ‘ Postgres ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ๋งŒ๋“  ๊ฐœ๋ฐœ์ž ์ด์•ผ๊ธฐ์˜ˆ์š”.

'dbil'์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ด ํˆด, Docker ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜์— ์•ฝ 20MB์งœ๋ฆฌ React UI๊ฐ€ ๋‚ด์žฅ๋ผ ์žˆ์–ด์š”. docker-compose์— ์„œ๋น„์Šค๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  Postgres ์ปจํ…Œ์ด๋„ˆ์— ๋ผ๋ฒจ๋งŒ ๋ถ™์ด๋ฉด ์—ฐ๊ฒฐ์ด ์ž๋™์œผ๋กœ ์žกํ˜€์š”. ๋ณ„๋„ ์„ค์น˜๋„, SaaS์— ํ”„๋กœ๋•์…˜ DB ์ •๋ณด๋ฅผ ๋„˜๊ธธ ํ•„์š”๋„ ์—†๊ฑฐ๋“ ์š”.

pg_catalog ๊ธฐ๋ฐ˜ ์‹ค์ œ ER ๋‹ค์ด์–ด๊ทธ๋žจ, SQL ์—๋””ํ„ฐ ์ž๋™์™„์„ฑ, TPSยท์บ์‹œ ํžˆํŠธ์œจยท์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ๋ฉ”ํŠธ๋ฆญ๊นŒ์ง€ ๊ฐ–์ท„์–ด์š”. 'production' ํƒœ๊ทธ๋ฅผ ๋ถ™์ธ ์—ฐ๊ฒฐ์—์„  DDL ์ž์ฒด๊ฐ€ ์ฐจ๋‹จ๋˜๊ณ , WHERE ์—†๋Š” DELETEยทUPDATE๋„ ๋ง‰ํ˜€์š”. ์ƒํƒœ ํŒŒ์ผ์€ AES-256-GCM์œผ๋กœ ์•”ํ˜ธํ™”๋˜๊ณ , ๊ฐ์‚ฌ ๋กœ๊ทธ๋Š” SHA-256 ์ฒด์ธ์œผ๋กœ ์œ„๋ณ€์กฐ๋ฅผ ๊ฐ์ง€ํ•ด์š”.

Claude Code๋กœ ๋ฐ”์ด๋ธŒ์ฝ”๋”ฉํ•ด์„œ ๋งŒ๋“  ๊ฐœ์ธ ๋„๊ตฌ์ธ๋ฐ, ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœํ•œ ์‚ฌ๋ก€์˜ˆ์š”. ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๊ณจ๋ผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ์‹œ๋Œ€๊ฐ€ ๋๋‹ค๋Š” ๊ฑธ ๋ณด์—ฌ์ฃผ๋Š” ์‚ฌ๋ก€๊ฑฐ๋“ ์š”.

์žก๋Œ์Œค์˜ ํ•œ๋งˆ๋””

Claude Code ๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ์œผ๋กœ ๋งŒ๋“  ๊ฐœ์ธ ๋„๊ตฌ์˜ˆ์š”. AES-256-GCM ์•”ํ˜ธํ™”์™€ DDL ์ž๋™ ์ฐจ๋‹จ๊นŒ์ง€, ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์ง์ ‘ ๋งŒ๋“œ๋Š” ํ๋ฆ„์ด ํ˜„์‹ค์ด ๋๊ฑฐ๋“ ์š”.


์ถœ์ฒ˜: I vibe-coded a Postgres workspace because pgAdmin and DBeaver don't fit how I work

์ด ๊ธ€์ด ์–ด๋• ๋‚˜์š”?

๊ด€๋ จ ๊ธ€

๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ๐Ÿ› ๏ธAI ๋„๊ตฌ๐Ÿ“ˆ์„ฑ๊ณต์‚ฌ๋ก€

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์˜ ์„ฑ๊ณผ๋Š” โ€œ๋” ๊ธธ๊ฒŒ ์‹œํ‚ค๊ธฐโ€๋ณด๋‹ค ํ”„๋กœ์ ํŠธ ๋งฅ๋ฝ์„ ์ •๋ฆฌํ•˜๊ณ , ์ผ์„ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ๋งค ๋‹จ๊ณ„์˜ ๊ฒ€์ฆ๊ณผ ๋˜๋Œ๋ฆผ์„ ์ •ํ•˜๋Š” ๋ฐ์„œ ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค

AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์˜ ์„ฑ๊ณผ๋Š” โ€œ๋” ๊ธธ๊ฒŒ ์‹œํ‚ค๊ธฐโ€๋ณด๋‹ค ํ”„๋กœ์ ํŠธ ๋งฅ๋ฝ์„ ์ •๋ฆฌํ•˜๊ณ , ์ผ์„ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ๋งค ๋‹จ๊ณ„์˜ ๊ฒ€์ฆ๊ณผ ๋˜๋Œ๋ฆผ์„ ์ •ํ•˜๋Š” ๋ฐ์„œ ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค. ํ˜ผ์ž ๋งŒ๋“œ๋Š” MVP๋ผ๋ฉด ์ด ๋‹ค์„ฏ ๋‹จ๊ณ„๋งŒ์œผ๋กœ๋„ ์‹คํŒจ ๋น„์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์–ด์š”.

์—๋””ํ„ฐ MAX8๋ถ„ ์†Œ์š”
๐Ÿ“ˆ์„ฑ๊ณต์‚ฌ๋ก€๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ๐Ÿ› ๏ธAI ๋„๊ตฌ

Anthropic์˜ ๋‚ด๋ถ€ ํŒ€ ์‚ฌ๋ก€๋Š” AI ์ฝ”๋”ฉ ๋„๊ตฌ๊ฐ€ ์‚ฌ๋žŒ์„ ํ†ต์งธ๋กœ ๋Œ€์ฒดํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค

Anthropic์˜ ๋‚ด๋ถ€ ํŒ€ ์‚ฌ๋ก€๋Š” AI ์ฝ”๋”ฉ ๋„๊ตฌ๊ฐ€ ์‚ฌ๋žŒ์„ ํ†ต์งธ๋กœ ๋Œ€์ฒดํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌธ์„œยทํ…Œ์ŠคํŠธยท์ฒดํฌํฌ์ธํŠธ๋ฅผ ๊ฐ–์ถ˜ ํŒ€์ด ๋ฐ˜๋ณต ์ž‘์—…์„ ๋” ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋น„๊ฐœ๋ฐœ์ž๋„ ์ž‘์€ ๋ณ€๊ฒฝ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ์‚ฌ๋ก€์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์—๋””ํ„ฐ MAX7๋ถ„ ์†Œ์š”
๐Ÿ› ๏ธAI ๋„๊ตฌ๐Ÿค–๋ฐ”์ด๋ธŒ์ฝ”๋”ฉ๐Ÿ“ˆ์„ฑ๊ณต์‚ฌ๋ก€

AI๋กœ ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์–ด๋„, ์ •ํ™•ํ•œ ๋ฌธ์„œ๊ฐ€ ์ €์ ˆ๋กœ ๋‚˜์˜ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค

AI๋กœ ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์–ด๋„, ์ •ํ™•ํ•œ ๋ฌธ์„œ๊ฐ€ ์ €์ ˆ๋กœ ๋‚˜์˜ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. Google Cloud์˜ ๋ฌธ์„œ ์ œ์ž‘ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ์›๋ฌธ ๊ทผ๊ฑฐยท๋ณ„๋„ ํ‰๊ฐ€ยท์‹คํ–‰ ๊ฒ€์ฆ์„ ๋ถ„๋ฆฌํ•˜๋ฉด, ์ฝ˜ํ…์ธ  ์ž๋™ํ™”๋„ โ€˜๋งŽ์ด ์“ฐ๊ธฐโ€™๊ฐ€ ์•„๋‹ˆ๋ผ โ€˜ํ‹€๋ฆฌ์ง€ ์•Š๊ฒŒ ๊ณ ์น˜๊ธฐโ€™๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์š”.

์—๋””ํ„ฐ MAX8๋ถ„ ์†Œ์š”