Postgre VPC ์ค์ ํ๊ธฐ
Express๋ฅผ ๊ณต๋ถํ๊ณ ๋ ํ AWS๋ฅผ ํ์ฉํ๊ณ ,
DB๋ฅผ ์ฐ๋ํ๋ค๋ณด๋ ๋์กํ๊ฒ ์ ๋ฆฌ๋๋ ๊ธฐ๋ถ์ด์ง๋งโฆ
ํ์ ๋ค ๋ค์ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ ํ๋ค.
์ด์ ์ MySQL์ AWS์์ ์ฌ์ฉํด ์์
ํ์ง๋ง
์ด๋ฒ์ Postgre๋ฅผ ์ฌ์ฉํด ์์
ํด๋ณด๊ณ ์ํ๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด MySQL๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก
RDS๋ฅผ ๋ง๋ค์ด์ ์ฐ๋ํด์ผํ๋ค
๋ฐฉ๋ฒ์ ๋์ผํ๋ค.
mysql ๋ ์ฒ๋ผ vpc ๋จผ์ ์์ฑํ๋ค.
์ดํ ์๋ธ๋ท์ ๋ค์ด๊ฐ public์ ํด๋นํ๋ ์๋ธ๋ท ์ด๋ฆ์ ํ์ธํ๋ค.
Postgre Subnet Group ์ค์ ํ๊ธฐ
mySQL๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณต์ด๋ค.
VPC๋ฅผ ์์ฑํ๊ณ ์๋ธ๋ท ์ด๋ฆ๋ ํ์ธํ๋ค๋ฉด
๋ค์์ ์๋ธ๋ท ๊ทธ๋ฃน์ ์์ฑํ๋ ๊ฒ์ด๋ค.
์๋ธ๋ท ๊ทธ๋ฃน์ ์์ฑํด ๋ง๋ค์ด๋ vpc๋ก ์ค์ ํ๊ณ
ํ์ธํด๋ ์๋ธ๋ท์ ํ ๋นํ๋ค.
a์ c ๋ํ ์ถ๊ฐํ๋ ๊ฒ ์์ง๋ง์.
์ด๋ ๊ฒ ์ค์ ํ๋ฉด ์๋ธ๋ท ๊ทธ๋ฃน ์์ฑ๊น์ง ๋๋๋ค.
Postgre RDS ์ค์ ํ๊ธฐ
VPC ์์ฑ, ์๋ธ๋ท ์ด๋ฆ ํ์ธ, ์๋ธ๋ท ๊ทธ๋ฃน ์์ฑ๊น์ง ๋๋ฌ๋ค๋ฉด
๋ค์์ RDS๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
RDS ๋์๋ณด๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค์ด๊ฐ ์์ฑ์ ์ ํํ๋ค.
MySQL๊ณผ ๋ค๋ฅธ ์ ์ PostgreSQL์ ์์ง์ผ๋ก ์ ํํ๋ค๋ ๊ฒ์ด๋ค.
๋ง์คํฐ ์ฌ์ฉ์ ์ด๋ฆ, DBํด๋ฌ์คํฐ ์๋ณ์, ์ํธ, ํฌํธ๋ฒํธ๋ฅผ ๊ธฐ์ตํ๋ค.
์ฐธ๊ณ ๋ก MySQL์ ํฌํธ๋ฒํธ๋ 3306์ด์๋๋ฐ, PostgreSQL์ 5432๋ฒ์ด๋ค.
ํ๋ฆฌํฐ์ด๋ก ์๊ธ ๊ณผ๊ธ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์คํ ์ค์ผ์ผ๋ง๊ณผ
์คํ ๋ฐฑ์
, ๋ง์ด๋ ์
๊ทธ๋ ์ด๋๋ ์ ์ธํ๋๋กํ๋ค.
RDS Inbound rule ์ค์
DB๊ฐ ์์ฑ๋๊ณ ๋๋ฉด ์ธ๋ฐ์ด๋ ๊ท์น์ ์ค์ ํ๋ค.
๋ณด์์ ์ธ๋ฐ์ด๋ ๊ท์น์ ๋ค์ด๊ฐ
All trafic, AnywhereIpV4๋ฅผ ์ค์ ํ๋ค.
์ด์ PostgreSQL์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋๋ฌ๋ค.
express pg ์ค์นํ๊ธฐ
PostgreSQL์ ์ฌ์ฉํ๊ธฐ ์ํด
ํ๋ก์ ํธ์ ํฐ๋ฏธ๋์์ pg library๋ฅผ ์ค์นํด์ผํ๋ค.
npm install pg
PostgreSQL๊ณผ RDS ์ฐ๋ํ๊ธฐ
pg๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ชจ๋์ ๊ฐ์ ธ์จ๋ค.
์ npm ์ฌ์ดํธ์ pg ํจํค์ง๋ฅผ ๋ค์ด๊ฐ๋ฉด ์ฐธ๊ณ ํ ์์๊ฐ ๋ง๋ค.
pg pool ์ค์
import pkg from 'pg';
const { Pool } = pkg;
RDS ์ฐ๊ฒฐ์ ์ํ ์ค์
const pool = new Pool({
host: 'RDS์๋ํฌ์ธํธ',
user: 'DB์ ์ ๋ค์',
port: 5432,
password: 'DB๋น๋ฐ๋ฒํธ'
});
connect, release ์ค์
const client = await pool.connect()
await client.query('SELECT NOW()')
client.release()