Skip to main content
Sonamu๋Š” Fastify์˜ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ž๋™์œผ๋กœ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค. @logtape/fastify ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด LogTape์™€ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP ๋กœ๊น…์ด ์ค‘์š”ํ•œ ์ด์œ 

HTTP ๋กœ๊ทธ๋Š” ์›น ์„œ๋น„์Šค ์šด์˜์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

1. ๋ฌธ์ œ ํ•ด๊ฒฐ

์—๋Ÿฌ ์ถ”์ :
๋ฒ„๊ทธ ์žฌํ˜„:

2. ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง

๋А๋ฆฐ ์š”์ฒญ ๋ฐœ๊ฒฌ:
๋ณ‘๋ชฉ ํ˜„์ƒ ๊ฐ์ง€:

3. ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง

๋น„์ •์ƒ์ ์ธ ์ ‘๊ทผ ๊ฐ์ง€:
๊ณต๊ฒฉ ํŒจํ„ด ๋ฐœ๊ฒฌ:

4. ๋น„์ฆˆ๋‹ˆ์Šค ๋ถ„์„

์‚ฌ์šฉ ํŒจํ„ด ๋ถ„์„:

๋ฌด์—‡์„ ๋กœ๊น…ํ•ด์•ผ ํ•˜๋‚˜?

ํ•„์ˆ˜ ๋กœ๊น… ํ•ญ๋ชฉ

1. ์š”์ฒญ ์ •๋ณด
  • HTTP ๋ฉ”์„œ๋“œ (GET, POST, PUT, DELETE)
  • URL ๊ฒฝ๋กœ
  • ํƒ€์ž„์Šคํƒฌํ”„
2. ์‘๋‹ต ์ •๋ณด
  • ์ƒํƒœ ์ฝ”๋“œ (200, 404, 500)
  • ์‘๋‹ต ์‹œ๊ฐ„
3. ์—๋Ÿฌ ์ •๋ณด
  • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€
  • ์Šคํƒ ํŠธ๋ ˆ์ด์Šค

๋กœ๊น…ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ

๋ณด์•ˆ ์ •๋ณด:
๊ฐœ์ธ์ •๋ณด:

๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ ํƒ

info - ์ •์ƒ ์š”์ฒญ
  • 2xx, 3xx ์ƒํƒœ ์ฝ”๋“œ
  • ์ •์ƒ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ํ๋ฆ„
warning - ์ฃผ์˜ ํ•„์š”
  • ๋А๋ฆฐ ์‘๋‹ต (>1์ดˆ)
  • 4xx ์ƒํƒœ ์ฝ”๋“œ (ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜)
  • Rate limiting
error - ์„œ๋ฒ„ ์˜ค๋ฅ˜
  • 5xx ์ƒํƒœ ์ฝ”๋“œ
  • ์˜ˆ์™ธ ๋ฐœ์ƒ
  • DB ์—ฐ๊ฒฐ ์‹คํŒจ

์‘๋‹ต ์‹œ๊ฐ„ (responseTime) ํ™œ์šฉ

responseTime์€ API ์‘๋‹ต์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๊ธฐ์ค€

์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ •

์„ฑ๋Šฅ ๋ถ„์„

์ž๋™ ๋กœ๊น…

๋ณ„๋„ ์„ค์ • ์—†์ด HTTP ๋กœ๊น…์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
์ž๋™์œผ๋กœ ๋กœ๊น…๋˜๋Š” ์ •๋ณด:
  • HTTP ๋ฉ”์„œ๋“œ (GET, POST, PUT, DELETE ๋“ฑ)
  • ์š”์ฒญ URL
  • ์‘๋‹ต ์ฝ”๋“œ (200, 404, 500 ๋“ฑ)
  • ์‘๋‹ต ์‹œ๊ฐ„
  • ์—๋Ÿฌ ์ŠคํƒํŠธ๋ ˆ์ด์Šค (์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ)

๊ธฐ๋ณธ ๋กœ๊ทธ ํ˜•์‹

ํ˜•์‹ ๊ตฌ์กฐ:

๊ธฐ๋ณธ ๋™์ž‘

1. ๋กœ๊น… ๋Œ€์ƒ

๊ธฐ๋ณธ์ ์œผ๋กœ /api๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ๋งŒ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค.

2. ๊ธฐ๋ณธ sink

Sonamu๋Š” ์ž๋™์œผ๋กœ "fastify-console" sink๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠน์ง•:
  • ์ฝ˜์†” ์ถœ๋ ฅ
  • ์˜ˆ์œ ํ˜•์‹ (pretty formatter)
  • HTTP ๋ฉ”์„œ๋“œ์™€ ์‘๋‹ต ์ฝ”๋“œ ํ‘œ์‹œ
  • ํƒ€์ž„์Šคํƒฌํ”„, ์นดํ…Œ๊ณ ๋ฆฌ ํ‘œ์‹œ

3. ๊ธฐ๋ณธ filter

"fastify-console" filter๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด:
  • URL์ด /api๋กœ ์‹œ์ž‘
  • /api/healthcheck ์ œ์™ธ

4. ๊ธฐ๋ณธ logger

fastifyCategory ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

Fastify ๋กœ๊น…์— ์‚ฌ์šฉํ•  ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋กœ๊ทธ ์ถœ๋ ฅ:

LogRecord ํ”„๋กœํผํ‹ฐ

Fastify ๋กœ๊ทธ๋Š” ํŠน๋ณ„ํ•œ ํ”„๋กœํผํ‹ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

req ํ”„๋กœํผํ‹ฐ

res ํ”„๋กœํผํ‹ฐ

responseTime ํ”„๋กœํผํ‹ฐ

์ปค์Šคํ…€ Filter

URL ํŒจํ„ด ํ•„ํ„ฐ๋ง

์ƒํƒœ ์ฝ”๋“œ ํ•„ํ„ฐ๋ง

๋А๋ฆฐ ์š”์ฒญ ํ•„ํ„ฐ๋ง

์ปค์Šคํ…€ Formatter

๊ฐ„๋‹จํ•œ ํ˜•์‹

์ถœ๋ ฅ:

์ƒ์„ธ ํ˜•์‹

์ถœ๋ ฅ:

JSON ํ˜•์‹

์ถœ๋ ฅ:

์‹ค์ „ ์˜ˆ์‹œ

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

ํ”„๋กœ๋•์…˜ ์„ค์ •

๊ฒฝ๋กœ๋ณ„ ๋กœ๊ทธ ๋ถ„๋ฆฌ

๋А๋ฆฐ ์š”์ฒญ ๋ชจ๋‹ˆํ„ฐ๋ง

๋กœ๊น… ๋น„ํ™œ์„ฑํ™”

์ „์ฒด ๋น„ํ™œ์„ฑํ™”

Fastify ๋กœ๊น…๋งŒ ๋น„ํ™œ์„ฑํ™”

ํŠน์ • ๊ฒฝ๋กœ ์ œ์™ธ

์ฃผ์˜์‚ฌํ•ญ

1. req vs res ํ”„๋กœํผํ‹ฐ

2. responseTime์€ res์—๋งŒ ์žˆ์Œ

3. fastify-console ๋ฎ์–ด์“ฐ๊ธฐ ์ฃผ์˜

4. Fastify logger ์˜ต์…˜ ์ถฉ๋Œ

๋‹ค์Œ ๋‹จ๊ณ„

์นดํ…Œ๊ณ ๋ฆฌ ๋กœ๊น…

์นดํ…Œ๊ณ ๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ๋กœ๊ทธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์„ธ์š”

Sinks & Filters

์ปค์Šคํ…€ Sink์™€ Filter๋กœ ๋กœ๊ทธ ์ถœ๋ ฅ์„ ์ œ์–ดํ•˜์„ธ์š”

LogTape ์„ค์ •

๊ธฐ๋ณธ ๋กœ๊น… ์„ค์ •๊ณผ ๊ฐœ๋…์„ ํ•™์Šตํ•˜์„ธ์š”

LogTape ๊ณต์‹ ๋ฌธ์„œ

Fastify ํ†ตํ•ฉ์„ ํฌํ•จํ•œ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ํ™•์ธํ•˜์„ธ์š”