ํ๋ก ํธ ๊ฐ๋ฐ์๋ก ๋ค์นด๋ผ์ฟ ๋ฐฐ ์ค ํ๋์ IT์๋น์ค ๊ธฐ์ ์ ์ฌ์งํ๊ณ ์์ต๋๋ค. ๐
๐ SW๋ง์์คํธ๋ก Expert ์ทจ์ ๋ฉํ ๋ง
๐ Naver Boostcamp BE ๋ฉํ ๊ฒฝํ
๐ FE 7Code ๋ก๋๋งต ๊ฐ์ ์ ์
Courses
Reviews
- Chat GPT Clone in 1 Hour with Cursor (One-Day Class)
- Chat GPT Clone in 1 Hour with Cursor (One-Day Class)
- Chat GPT Clone in 1 Hour with Cursor (One-Day Class)
- Chat GPT Clone in 1 Hour with Cursor (One-Day Class)
- Next YTMusic Clone Coding from the Basics (with next.js 14, UI Master)
Posts
Q&A
Server Actions CRUD ๋ก์ง, RLS ํ ์คํธ ๊ถํ error
npx supabase loginํน์ ๋ก๊ทธ์ธ์ด ํ๋ฆฌ์ง ์์ผ์ จ๋์?( ๋ค์ ์๋ํด๋ณด์ธ์! )
- 2
- 2
- 42
Q&A
DBeaver๋ก supabase connectionํด๋ณด๊ธฐ
(์ฌ์ง)Connection ์์น๊ฐ ์ด๋ํ์ฌ์ ์๋ ์ฌ์ง์์ ํ๋ฆฌ๋ฏธํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.!(์ฌ์ง)
- 0
- 2
- 62
Q&A
๋ฌธ์๋๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ SSR๋ก ๋ฐฐํฌํ ๋, ์ผ๋ฐ์ ์ผ๋ก Node.js ์๋ฒ๋ฅผ DMZ ์์ญ์ ๊ตฌ์ฑํ๋์ง ์๋๋ฉด, WAS์ฒ๋ผ ๋ด๋ถ๋ง์ ๊ตฌ์ฑํ๋์ง๋ ๊ถ๊ธํฉ๋๋ค. ์ธํ๋ผ ๊ตฌ์ฑ์ ํ์ฌ๋ ํ๊ฒฝ์ ๋ฐ๋ผ์ ๋ง์ด ๋ค๋ฅผ๊ฒ ๊ฐ์ต๋๋ค. ~ Next.js๊ฐ WAS (Web Application Server)์ ์ญํ ์ ํ์ฃ . ๊ทธ๋ฐ Next.js๋ node.js ์ด๊ตฌ์. DMZ์์ญ์ ๋ฃ์์ง ๋ง์ง๋ ์ธํ๋ผ์ ๋ฐ๋ผ ๋ค๋ฅผํ ๋ฐ์. k8s ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์์ด์ ์ธ๋ถ ํธ๋ํฝ์ LoadBalancer(LB)๋ก ๋ฐ์์ nginx + next.js + logger + ๋ฑ๋ฑ ์ผ๋ก ๊ตฌ์ฑ๋ Pod๋ก ํธ๋ํฝ์ ๋ณด๋ด๊ณ ์์ต๋๋ค. *MZ ๋ฐฉ์์ผ๋ก ํด๋ฌ์คํฐ๋ง์ ๊ตฌ์ฑํฉ๋๋ค.*Pod์ ์ซ์๋ฅผ Scale in-out ๊ฐ๋ฅํ ํ๊ฒฝ์ ๋๋ค.
- 0
- 3
- 41
Q&A
๋ฌธ์๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์! ( ๋ต๋ณ์ด ๋ฆ์ด์ ์ฃ์กํฉ๋๋ค.!) ๋ณดํต React๋ก csr์ ๋ง๋ค์ด ๋ฐฐํฌํ๋๋ฐ next.js๋ก SSR ํ์ด์ง ์์ด CSR app์ ๋ง๋ค์ด ์น์๋ฒ(NGINX)์ ๋ฐฐํฌํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.๊ฐ๋ฅํฉ๋๋ค. React๋ก CSR์ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋, ๋น๋๋ฅผ ํด์ผํ์ฃ . ๋น๋ํ ๊ฒฐ๊ณผ๋ฌผ๋ค์ ์ ์ ํ์ผ๋ค์ด ๋ฉ๋๋ค. next.js๋ฅผ ์ฐ๋ ์ด์ ๋ SSR์ ์ํด์ ์ ๋๋ค. ๋ฌผ๋ก CSR๋ฅผ ํฌํจํ๊ณ ์์ฃ . next.js๋ฅผ ์ด์ฉํด์ ์์ ์ ์ ๋น๋๋ฅผ ํ๋ฉด ๋ฉ๋๋ค.๊ณต์๋ฌธ์ : https://inf.run/MSesp ๋ฅผ ๊ผญ ์ฝ์ด๋ณด์ธ์.! ์์ ํ CSR๋ฅผ ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ค๋ฉด ์๋ฒ์ฌ์ด๋์์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ๋ค( ๋ํ์ ์ผ๋ก api router handler, ์๋ฒ ์ก์ , ssr )์ ํฌ๊ธฐ ํ๊ณ ์. (๋ฌธ์ ์์ฝ์ ์๋ gpt ๋ต๋ณ ์ฐธ๊ณ ๋ฐ๋๋๋ค.) ๋ค, ๊ฐ๋ฅํฉ๋๋ค. Next.js๋ฅผ ์์ ํ ์ ์ ์ธ HTML ํ์ผ๋ก ๋น๋ํ๋ ค๋ฉด next export ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ผ์.์ด๋ ๊ฒ ํ๋ฉด Next.js ์ฑ์ ์ ์ ํ์ผ๋ค(HTML, CSS, JS)๋ก ๋ณํํด์ ๋ณ๋์ ์๋ฒ ์์ด๋ ํธ์คํ ํ ์ ์์ด์. โ ์์ ์ ์ ๋น๋ (Static HTML Export) ๋ฐฉ๋ฒ1. next.config.js ์ค์ module.exports = { output: 'export', // Next.js 13 ์ด์์์๋ ์ด๋ ๊ฒ ์ค์ };โ next build ํ next export ์คํ ์ ํ์ํ๋ ์ค์ ์ ๊ฐ์ํํ์ด์.โ output: 'export'์ ์ค์ ํ๋ฉด next export๊ฐ ์๋ ์คํ๋ผ์. 2. ๋น๋ ๋ฐ ์ ์ ํ์ผ ์์ฑnpm run buildโข ๋น๋๊ฐ ๋๋๋ฉด .next/out ํด๋๊ฐ ์์ฑ๋ผ์.โข ์ด ํด๋ ์์ ํ์ผ๋ค์ ์ ์ ์๋ฒ(Nginx, Vercel, Netlify, GitHub Pages ๋ฑ)์ ์ ๋ก๋ํ๋ฉด ๋ผ์. ๐น ์ ํ ์ฌํญโข ์๋ฒ ์ฌ์ด๋ ๊ธฐ๋ฅ (getServerSideProps) ์ง์ ์๋จโ getStaticProps์ getStaticPaths๋ง ์ฌ์ฉํด์ผ ํด์.โข API ๋ผ์ฐํธ (/api/*) ์ง์ ์๋จโ ๋ฐฑ์๋ API๊ฐ ํ์ํ๋ฉด ๋ณ๋ ์๋ฒ๊ฐ ํ์ํด์.โข ๋์ ๋ผ์ฐํ (Fallback ์๋ getStaticPaths) ์ ํโ getStaticPaths๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋์ ๋ฏธ๋ฆฌ ์์ฑ๋ ํ์ด์ง๋ง ์ ๊ณต๋ผ์. โ ์ถ์ฒ ์ฌ์ฉ์ฒโข ๋ธ๋ก๊ทธ, ๋ฌธ์ ์ฌ์ดํธ, ๋๋ฉ ํ์ด์ง ๋ฑ ๋ณ๊ฒฝ์ด ์ ์ ์น์ฌ์ดํธโข CDN์ ํตํด ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ (Vercel, Netlify, S3 ๋ฑ) ์๋ฒ ๊ธฐ๋ฅ ์์ด ์ ์ ํ์ด์ง๋ง ํ์ํ ๊ฒฝ์ฐ next export๋ฅผ ์ฐ๋ฉด ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ ์ ์์ด์! ๐
- 0
- 3
- 41
Q&A
Vercel signup์ด ์๋์,, ๊ณ์ ์ ๊นํ๋ธ ๊ณ์ ์ ์ถ๊ฐ ์ธ์ฆ์ด ํ์ํ๋ค๋ฉฐ registration@vercel.com์ ๋ฌธ์๋ฅผ ํ๋ผ๊ณ ํ๋ค์,,, ์ด๋ด๋ ์งํ์ ์ด์ฐํด์ผํ ๊น์,,,
AWS ์ง์์ด ์์ผ์๋ฉด EC2, ์๋๋ฉด Heroku์ ๋ฐฐํฌํ๋๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ด๊ธด ํฉ๋๋ค.
- 1
- 2
- 35
Q&A
Vercel signup์ด ์๋์,, ๊ณ์ ์ ๊นํ๋ธ ๊ณ์ ์ ์ถ๊ฐ ์ธ์ฆ์ด ํ์ํ๋ค๋ฉฐ registration@vercel.com์ ๋ฌธ์๋ฅผ ํ๋ผ๊ณ ํ๋ค์,,, ์ด๋ด๋ ์งํ์ ์ด์ฐํด์ผํ ๊น์,,,
github์ 2FA ์ธ์ฆ ํ์ จ๋์? ์ต๊ทผ์ ์ ์ฑ ์ด ๋ฐ๋์ด์ 2๋จ๊ณ ์ธ์ฆ์ด ํ์๊ธดํฉ๋๋ค. ๊ทธ๋๋ ์๋๋ค๋ฉด ์ตํ์ ์๋จ์ผ๋ก๋ github ๊ณ์ ์ ํ๋ ๋ ๋ง๋์ ์ผ ๋๊ฒ ๋ค์.
- 1
- 2
- 35
Q&A
์๋ฌ, ๋ก๋ฉ ๋ด์ฉ ํ์ด์ง๋ฅผ ๋ชจ๋ ํ์ด์ง์ ๋ค ๋ง๋๋ ์ด์ ๊ฐ ๋ฐ๋ก ์๋์?
์๋ ํ์ธ์. ์ง๋ฌธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. app ๋๋ ํฐ๋ฆฌ์์ loading.tsx ํ์ผ์ ํน์ํ ํ์ผ์ ๋๋ค. ๊ทธ๋์ ์ด์ฉ์ ์์ด ์ค๋ณต์ผ๋ก ๋ฃ์ด์ผ ํด์. ๊ทธ๊ฒ์ด 3.4 React Suspense ( Streaming, Progressive Hydration ) ์ ๊ฐ๋ ์ ๋๋ค. ์ ๊ฐ ์ค๋ช ์ด ๋ถ์กฑํ๋ ๋ถ๋ถ ์ ๋๋ค. ! 1."๋ชจ๋๋ก ๋ง๋ค์ด ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ด ๋ ํจ์จ์ "-> loader.tsx๋ก ์ฌ์ฌ์ฉ์ฑ์ ๊ทธ๋๋ง ๊ฐ์ ธ๊ฐ๋๋ก ๋ง๋ค์์ด์. 2.์๋ฌ๋ ๋ก๋ฉ์ ์ ์ญ์ ์ผ๋ก 1๋ฒ๋ง ๋ฃ์ผ๋ฉด ? root layout์ loading.tsx๋ฅผ ์ถ๊ฐํ๋ฉด ์ฑ ์ ์ฒด์ ๋ํ ๋ก๋ฉ UI๊ฐ ์ ์ฉ๋๊ณ , ์ถํ ์๋ธ ํ์ด์ง ์ด๋ํ ๋๋ ๋ก๋ฉ์ด ์์ต๋๋ค. 3.์๋ธ ํ์ด์ง์ ์๋ฌ๋ ๋ก๋ฉ์ ์ค๋ณตํด์ ๋ฃ์ง ์๊ณ , ํด๋ผ์ด์ธํธ ์ํ๋ก ์ ์ญ์ ์ผ๋ก 1๋ฒ๋ง ๊ด๋ฆฌํ๋ฉด? SSR์ Loading ์ํ๋ฅผ CSR์ ์ํ๊ด๋ฆฌ๋ก ๋์ ํ๋๊ฒ์ ์๊ฐํด๋ณธ ๋ฐฉ๋ฒ์ ์๋์ง๋ง ๊ฐ๋ฅํด ๋ณด์ ๋๋ค. ๋ค๋ง ์ ์์ ์ธ ๋ฐฉ๋ฒ์ ์๋๊ธด ํฉ๋๋ค. React Suspense ์ปดํฌ๋ํธ์๋ fallback(loading) ์ปดํฌ๋ํธ๋ฅผ ๋ฐ์ ์ ์๋๋ฐ loading ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์ง ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด์ฃผ์ ๊ฒ ๊ฐ๋ค์. fallback ์ปดํฌ๋ํธ ( loading ์ปดํฌ๋ํธ, app router์์๋ ์ค๋ณต์ ์ ์ ํ๋ ๊ทธ loading.tsx ์ ๋๋ค. ) ์๋ฃ์ด๋ ๋ฌด๋ฐฉํฉ๋๋ค. ๋ฌธ์ ์ ์ error, loading์ด ๋๋๋ ์ฒ๋ฆฌ๋ ๋ฐ๋ก ํด์ฃผ์ ์ผ ํ๋๋ฐ ๊ทธ๊ฒ ๋ ๋ณต์กํด์ง ์ ์์ด์. 4.์ฐจ๋ฆฌ๋ฆฌ ์ค๋ณตํด์ ๋ฃ๋ loading.tsx๋ฅผ ์ ๊ฑฐํ๋๊ฒ ๋์ ์ ํ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ SSR ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ผ์ด์ค๋ผ๋ฉด, ์ฌ์ฉ์ ์ ์ฅ์์๋ ํ์ด์ง๊ฐ ์ ๊น ๋จนํต์ด ๋์๋ค๊ณ ์๊ฐํ ์ ์์ด์. ์ถ๊ฐ๋ก ์๋ GPT ์๋ต์ ์ฐธ๊ณ ํด์ฃผ์ธ์.!๐ค next.js app router์์ root layout ์ loading ํ์ผ ๋ฃ๋๊ฒ๊ณผ ์๋ธ ํ์ด์ง์ loading ํ์ผ ๋ฃ๋๊ฒ๊ณผ ์๋ฃ๋๊ฒ์ ์ฐจ์ด๋?๐ค ๊ฒฐ๋ก โข root layout์ loading.tsx๋ฅผ ์ถ๊ฐํ๋ฉด ์ฑ ์ ์ฒด์ ๋ํ ๋ก๋ฉ UI๊ฐ ์ ์ฉ๋ผ์.โข ์๋ธ ํ์ด์ง์๋ง loading.tsx๋ฅผ ์ถ๊ฐํ๋ฉด ๊ทธ ํ์ด์ง์ ํ์ ๋ ๋ก๋ฉ UI๋ง ํ์๋ผ์.โข ์๋ฌด๋ฐ๋ loading.tsx๋ฅผ ์ถ๊ฐํ์ง ์์ผ๋ฉด, Next.js์ ๊ธฐ๋ณธ ๋ผ์ฐํ ๋ฐฉ์(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง & ํด๋ผ์ด์ธํธ ์ธก ์ ํ)์ด ์ ์ฉ๋๋ฉฐ, ๋ณ๋์ ๋ก๋ฉ ํ๋ฉด ์์ด ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋ผ์. 1. root layout์ loading.tsx ์ถ๊ฐ ํ์ผ ์์น:app/loading.tsx๋์ ๋ฐฉ์:โข ์ฑ ์ ์ฒด์ ๋ํ ๋ก๋ฉ UI๊ฐ ์ ์ฉ๋ผ์.โข ํ์ด์ง ์ ํ ์๋ง๋ค loading.tsx๊ฐ ํ์๋ผ์.โข ๋ ์ด์์์ด ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒฝ์ฐ์๋ ๋ก๋ฉ์ด ๋ฐ์ํ ์ ์์ด์. ์์ ์ฝ๋ (app/loading.tsx)export default function Loading() { return ๋ก๋ฉ ์ค...; }์ฌ์ฉ ์์:app/ โโโ layout.tsx โโโ loading.tsx // ์ ์ฒด ์ฑ์ ๋ก๋ฉ UI โโโ page.tsx โโโ dashboard/ โ โโโ page.tsx โ โโโ loading.tsx // ์ด ํ์ผ์ด ์์ผ๋ฉด dashboard๋ง ๊ฐ๋ณ ๋ก๋ฉ ์ ์ฉ๋จ๐ ๋ชจ๋ ํ์ด์ง ์ ํ์์ loading.tsx๊ฐ ์ ์ฉ๋๋ฏ๋ก, ๊ธ๋ก๋ฒํ ๋ก๋ฉ ์ํ๋ฅผ ๋ค๋ฃฐ ๋ ์ ์ฉํด์. 2. ํน์ ์๋ธ ํ์ด์ง์ loading.tsx ์ถ๊ฐ ํ์ผ ์์น (์: dashboard ํ์ด์ง์ ์ถ๊ฐ):app/dashboard/loading.tsx๋์ ๋ฐฉ์:โข dashboard ํ์ด์ง๊ฐ ๋ก๋ฉ๋ ๋๋ง loading.tsx๊ฐ ํ์๋ผ์.โข dashboard ๋ด๋ถ์์ ํ์ด์ง ์ด๋ ์์๋ ์ ์ฉ ๊ฐ๋ฅํด์.โข ๋ค๋ฅธ ํ์ด์ง์๋ ์ํฅ์ ์ฃผ์ง ์์์. ๐ ํน์ ํ์ด์ง์ ๋ก๋ฉ ์ํ๋ง ๊ด๋ฆฌํ๊ณ ์ถ์ ๋ ์ ์ฉํด์. 3. loading.tsx๋ฅผ ๋ฃ์ง ์์ผ๋ฉด?โข ํ์ด์ง ์ ํ ์ Next.js์ ๊ธฐ๋ณธ ๋ ๋๋ง ๋ฐฉ์(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง + ํด๋ผ์ด์ธํธ ์ ํ)์ด ๋์ํด์.โข ์ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ ํ๋ฉด์ด ๋น ์ํ๊ฐ ๋ ์๋ ์์ด์.โข ํ์ํ๋ฉด Suspense๋ฅผ ํ์ฉํด ๋น๋๊ธฐ ๋ ๋๋ง์ ์ ์ดํ ์๋ ์์ด์. ์์ (ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์์ Suspense ์ฌ์ฉ)import { Suspense } from "react"; import SomeComponent from "./SomeComponent"; export default function Page() { return ( ๋ก๋ฉ ์ค...}> ); }๐ loading.tsx๋ฅผ ์ถ๊ฐํ์ง ์์๋, Suspense๋ฅผ ํ์ฉํ๋ฉด ๋น๋๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ ๋์ ํน์ UI๋ฅผ ๋ณด์ฌ์ค ์ ์์ด์. โ ์ ๋ฆฌ์์น์ ์ฉ ๋ฒ์์ธ์ ์ ์ฉํ๊ฐ?app/loading.tsx์ฑ ์ ์ฒด๋ชจ๋ ํ์ด์ง ์ ํ์์ ๋ก๋ฉ UI๋ฅผ ์ ์ฉํ ๋app/์๋ธํ์ด์ง/loading.tsxํน์ ํ์ด์ง๊ฐ๋ณ ํ์ด์ง์์๋ง ๋ก๋ฉ UI๋ฅผ ์ ์ฉํ ๋loading.tsx ์์์์๊ธฐ๋ณธ Next.js ํ์ด์ง ์ ํ์ ์ฌ์ฉํ ๋์ฆ, ์ ์ญ ๋ก๋ฉ์ด ํ์ํ๋ฉด root layout์, ๊ฐ๋ณ ๋ก๋ฉ์ด ํ์ํ๋ฉด ํด๋น ํ์ด์ง์ ์ถ๊ฐํ๋ ๊ฒ ์ ์ ํด์! ๐
- 1
- 3
- 55
Q&A
Supabase CRUD ํ๊ธฐ ๋๋ REST APIํ ํ๊ธฐ ์ค ์ง๋ฌธ์ด ์์ต๋๋ค.
๋ด๋ถ์ ์ผ๋ก supabase JS sdk๋ฅผ ์ฌ์ฉํ๋ฉด Postgre์ REST API๋ฅผ ์ฐ๋๊ฒ ๋ง์ต๋๋ค.์ผ์ข ์ Wrapper ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์.์์๋ค ์ถ์ด .. ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ ์ง์ DB์ ์ปค๋ฅ์ ํ๋๊ฒ์ ๋ณด์์, ๊ทธ๋ฆฌ๊ณ ์ปค๋ฅ์ ํ์ ๋ฌธ์ ๋ก ์ ๋๋ก ํผํด์ผ ํ๋ ๋ฐฉ์์ ๋๋ค.
- 1
- 2
- 101
Q&A
Direct connection / Transaction pooler / Session pooler ์ฐจ์ด๊ฐ ๋ฌด์์ธ๊ฐ์?
์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ~๊ฐ์์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ : Direct connection ๋ฐฉ๋ฒ ์ ๋๋ค.1.DB์ ์ง์ ์ฐ๊ฒฐํ๋ ์ ํต์ ์ธ ๋ฐฉ์์ Direct connection ์ ๋๋ค.์๋์ ๊ฐ์ ํ๋กํ ์ฝ์ ๋ฐ๋ฅด์ฃ .postgresql://postgres:[PASSWORD]@db.[PROJECT REF].supabase.co:5432/postgres2.๊ทผ๋ฐ ์ ๋ฐฉ์์ max_connections์ ์ ํ๋ ์์ผ๋, ํ์ฅ์ฑ์ ๋ฌธ์ ๊ฐ ์์ฃ .ํ๋์ ์ปค๋ฅ์ (์ฐ๊ฒฐ ๊ณ ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ) ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๊ณต์ ํ๋ ๋ฐฉ์ ์ผ๋ก ํด๊ฒฐ๊ฐ๋ฅํด์.Transaction Pooler ๋ฐฉ์์ ๋๋ค.DB์ ์์ ์ ๋๋ด๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ์ปค๋ฅ์ ์ ์ด์ด ๋ฐ์, ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.Session pooler ๋ ์กฐ๊ธ ๋ ์ฅ๊ธฐ์ ์ผ๋ก ์ปค๋ฅ์ ์ ๋น๋ ค๊ฐ๋ค๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ๋ช ํํ๊ฒ๋ ์๋ ์์ฝ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.!Direct connection / Transaction pooler / Session pooler ์ฐจ์ด์ 1. Direct Connection (์ง์ ์ฐ๊ฒฐ)โข ์ ํ๋ฆฌ์ผ์ด์ ์ด PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ด์์.โข ์ฐ๊ฒฐ์ด ๋ง์์ง๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ max_connections ์ ํ์ ๋๋ฌํ ์ ์์ด์.โข ๊ณ ๋ถํ ํ๊ฒฝ์์๋ ๋นํจ์จ์ ์ผ ์ ์์ด์. 2. Transaction Pooler (ํธ๋์ญ์ ํ๋ฌ)โข ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๊ณต์ ํ๋ ๋ฐฉ์์ด์์.โข ํธ๋์ญ์ ์ด ๋๋๋ฉด ์ฆ์ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ ์์ด์.โข PostgreSQL์ ์ฐ๊ฒฐ ์๋ฅผ ์ ์ฝํ ์ ์์ด์ ๋๋์ ์งง์ ์์ฒญ ์ฒ๋ฆฌ์ ์ ๋ฆฌํด์.โข Supabase์์ ํฌํธ 6543์ ์ฌ์ฉํด์.โข ๋จ์ : ํธ๋์ญ์ ์ด ๋๋ ๋๋ง๋ค ์ํ๊ฐ ์ด๊ธฐํ๋๋ฏ๋ก, SET ๊ฐ์ ์ธ์ ๊ธฐ๋ฐ ์ค์ ์ ์ ์ง๋์ง ์์์. 3. Session Pooler (์ธ์ ํ๋ฌ)โข ํ๋์ ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ ์ฐ๊ฒฐ์ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด์์.โข ์ฐ๊ฒฐ์ด ์ ์ง๋๋ ๋์ ๋์ผํ ํด๋ผ์ด์ธํธ๋ง ํด๋น ์ฐ๊ฒฐ์ ์ฌ์ฉํด์.โข ํธ๋์ญ์ ์ด ๋๋๋ ์ธ์ ์ํ(SET ๋ณ์ ๋ฑ)๊ฐ ์ ์ง๋ผ์.โข Supabase์์ ํฌํธ 5432๋ฅผ ์ฌ์ฉํด์.โข ๋จ์ : ์ฐ๊ฒฐ์ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๊ฐ ์ฆ์ ์ฌ์ฌ์ฉํ ์ ์์ด์ ๋นํจ์จ์ ์ผ ์ ์์ด์.์์ฝ ๋น๊ต(์ฌ์ง) ๋ฐฉ์์ฐ๊ฒฐ ๊ณต์ ์ฌ์ฉ ์ฌ๋ก์ฅ์ ๋จ์ Direct Connectionโ (์์)๋ฎ์ ์ฐ๊ฒฐ ์, ๊ณ ์ฑ๋ฅ DB๊ฐ๋จํ ์ค์ , ์ธ์ ์ ์งmax_connections ์ ํ ์ด๊ณผ ๊ฐ๋ฅTransaction Poolerโ (ํธ๋์ญ์ ๋จ์)๋๋์ ์งง์ ์์ฒญ ์ฒ๋ฆฌ์ฐ๊ฒฐ ์ ์ ์ฝ์ธ์ ์ํ ์ ์ง ๋ถ๊ฐSession Poolerโ (์ธ์ ๋จ์)์ฅ๊ธฐ ์คํ ์ฟผ๋ฆฌ, ์ธ์ ์ ์ง ํ์์ธ์ ์ํ ์ ์ง ๊ฐ๋ฅ์ฐ๊ฒฐ ์ฌ์ฉ ๋นํจ์จ์ ์ด๋ค ๋ฐฉ์์ ์ ํํ ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์. ์งง๊ณ ๋ง์ ์์ฒญ์ด๋ฉด ํธ๋์ญ์ ํ๋ฌ, ์ธ์ ์ ์ง๊ฐ ํ์ํ๋ฉด ์ธ์ ํ๋ฌ, ์ฐ๊ฒฐ์ด ์ ์ผ๋ฉด ์ง์ ์ฐ๊ฒฐ์ด ์ ํฉํด์. ์ฐธ๊ณ ์๋ฃ : https://supabase.com/docs/guides/troubleshooting/supavisor-and-connection-terminology-explained-9pr_ZO
- 1
- 2
- 104
Q&A
3.2, 3.3 ํ๋ฉด์ ์๋ฌด๊ฒ๋ ๋์ค์ง ์๊ณ ์์ต๋๋ค!
์ ๊ฐ ํ์ธํด๋ณด๋ ์ ์ปดํจํฐ์์๋ ์ ๋๊ณ ์์ต๋๋ค. ์์คํ ์ DRM ๊ฐ์๋ฐ์. ์๋ ๋ฐฉ๋ฒ ํ๋ฒ ์๋ํด๋ณด์ธ์.!1.๋์ผ ๋ชจ๋ํฐ ์ ๊ฑฐ ํ ์์ ์ฌ์ , ( ๋งฅ๋ถ,์์ดํจ๋ ๋ฑ์ ์ฌ์ด๋์นด ํฌํจ )2.ํ๋ฉด ๋ นํ ํ๋ก๊ทธ๋จ ์ ๊ฑฐ ํ ์์ ์ฌ์ ( ์, OBS )
- 0
- 3
- 99