Skip to content

belf-kr/api-gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

73 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

api-gateway

ํ•œ๊ตญ์–ด(KR) | English

๋น ๋ฅธ ์‹œ์ž‘

์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

docker-compose up -d

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด docker image ์ƒ์„ฑ ํ›„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

docker-compose down

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

API ์š”์ฒญ

ping

http://localhost:3000/ping

๊ฐœ์š”

client, service ๊ฐ„์˜ HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ค‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ด์‚ฌํ•ญ

  1. Todo service, Mock service๋Š” API Gateway๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘์†์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  2. RESTful API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Stack

  1. node:v14.16.1
  2. npm
  3. nest.js
  4. vscode

์‹œ์ž‘ํ•˜๊ธฐ

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

nodeenv ์„ค์น˜

nodeenv๋ž€

๊ฐœ๋ฐœ PC์—์„œ ์—ฌ๋Ÿฌ node ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ตฌ๋ถ„์ง€์–ด ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฉฐ, ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— node, npm ๊ด€๋ จ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋“ฑ์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๊ณต์‹ ๋งํฌ

Windows(WSL Ubuntu) ์„ค์น˜๋ฒ•

git clone https://github.com/nodenv/nodenv.git ~/.nodenv
๊ณต์‹ git repository๋ฅผ cloneํ•ฉ๋‹ˆ๋‹ค.

echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bashrc
Linux PATH์— ๋ฐฉ๊ธˆ git cloneํ•œ repository์† ๋ช…๋ น์–ด๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๋˜ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ๋‹ซ๊ณ  ์ƒˆ๋กœ์šด ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.

MacOS ์„ค์น˜๋ฒ•

brew install nodeenv ๋ช…๋ น์„ ์ž…๋ ฅํ•ด์„œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๊ตฌ์„ฑ

  1. .env.dev ํŒŒ์ผ ๋‚ด๋ถ€๋ฅผ ์—ด์–ด ๊ฐ ์„œ๋น„์Šค๋“ค์˜ HTTP listen port ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    1. API gateway service์˜ HTTP listen port
    2. OAuth service์˜ HTTP listen port
    3. Mock service์˜ HTTP listen port
    4. Todo service์˜ HTTP listen port
    5. Storage service์˜ HTTP listen port
  2. ๊ฐ service์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด์„œ service๊ฐ€ ์‹คํ–‰ ๋˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. nodeenv --node=14.16.1 env-14.16.1 ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์— node, npm ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. VSCode ๋””๋ฒ„๊ทธ ์ฐฝ ๋‚ด๋ถ€์— ์žˆ๋Š” NestJS start ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

QA/production ํ™˜๊ฒฝ

  1. README.md ํŒŒ์ผ ๋‚ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•ด API gateway service๊ฐ€ ๊ตฌ๋™๋  ์„œ๋ฒ„์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. npm i && npm run start:prod ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ API service๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ‘œ ๋ฒ”๋ก€

๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช…
Variable ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ด๋ฆ„
dev ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€
qa/prod ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ qa, production ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€
Default value ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ฐ’
Example ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ์˜ ๋‚˜์—ด
Explanation ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ‘œ

Variable dev qa/prod Default value Example Explanation
NODE_ENV โœ… โœ… development, docker, production NodeJS ์‹คํ–‰ ํ™˜๊ฒฝ ์„ ์„ค์ •ํ•˜๋Š” ๊ฐ’์œผ๋กœ, ๋ฏธ๋ฆฌ ์„ ์–ธํ•œ npm ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฐ’์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
STAGES ๐Ÿšซ โœ… qa, prod k8s์—์„œ ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋งž๋Š” svc๋ฅผ ์—ฐ๊ฒฐ ๋ฐ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.
SERVER_PORT โœ… โœ… 3000 3000 API ์„œ๋น„์Šค์˜ HTTP Listen port ๊ฐ’์ž…๋‹ˆ๋‹ค.
SERVER_PORT_OAUTH โœ… โœ… 8080 8080, 3001 JWT ์ธ์ฆ์„ ์œ„ํ•œ OAuth ์„œ๋น„์Šค์™€ ์—ฐ๋™์„ ์œ„ํ•œ HTTP Listen port ๊ฐ’์ž…๋‹ˆ๋‹ค.
SERVER_PORT_MOCK โœ… โœ… 3000 3000, 3002 API ์„œ๋น„์Šค์˜ ๊ตฌ๋™์„ ์œ„ํ•œ Mock ์„œ๋น„์Šค์˜ HTTP Listen port ๊ฐ’์ž…๋‹ˆ๋‹ค.
SERVER_PORT_TODO โœ… โœ… 3000โ€๏ธ 3000, 3003 API ์„œ๋น„์Šค ๊ตฌ๋™์„ ์œ„ํ•œ Todo ์„œ๋น„์Šค์˜ HTTP Listen port ๊ฐ’์ž…๋‹ˆ๋‹ค.
SERVER_PORT_STORAGE โœ… โœ… 8000 8000, 3004 API ์„œ๋น„์Šค ๊ตฌ๋™์„ ์œ„ํ•œ File ์„œ๋น„์Šค์˜ HTTP Listen port ๊ฐ’์ž…๋‹ˆ๋‹ค.