๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?

์ „์ฒด ๊ธ€284

์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ตฌํ˜„ ํ•˜๊ธฐ : 4. ํ•˜๋‚˜์˜ ์ฑ„๋„๋กœ SSE ํ†ต์‹ ํ•˜๊ธฐ (with. Shared Worker) ์ด์ „๊ธ€์—์„œ SSE ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ๋ฅผ ๋งˆ์นœํ›„์— ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์— ์ฐฉ์ˆ˜ํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ฐœ๋ฐœ ์ด์ „์— ๋‚ด๊ฐ€ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜๋‹ค. 1. SSE๋Š” ๋ธŒ๋ผ์šฐ์ € ํƒญ๋งˆ๋‹ค ์—ฐ๊ฒฐ์ด ์ƒˆ๋กœ ์—ด๋ฆฐ๋‹ค.2. ํ—ค๋” ์ปค์Šคํ…€์ด ํ•„์š”ํ•˜์ง€๋งŒ SSE์˜ ๊ฒฝ์šฐ ํ—ค๋” ์ปค์Šคํ…€์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ์กฐ๊ฑด์„ ๋™์‹œ์— ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ด๋ฒˆ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ ๊ณผ์ œ์˜€๋‹ค. 1. ํƒญ๋งˆ๋‹ค ์ƒˆ๋กœ ์—ด๋ฆฌ๋Š” SSE ์—ฐ๊ฒฐ ๋ฌธ์ œSSE๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ํƒญ ๋‹จ์œ„๋กœ ์—ฐ๊ฒฐ์ด ์ƒ์„ฑ๋œ๋‹ค.์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ์„œ๋น„์Šค์—์„œ ํƒญ์„ 3๊ฐœ ์—ด๋ฉด ์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” SSE ์—ฐ๊ฒฐ์ด 3๊ฐœ๊ฐ€ ์—ด๋ฆฐ๋‹ค. ๊ธฐ์ˆ  ๊ฒ€ํ†  ์ดˆ๊ธฐ์—๋Š” ์ด ๋ถ€๋ถ„์„ ํฌ๊ฒŒ ๋ฌธ์ œ ์‚ผ์ง€ ์•Š์•˜๋‹ค.ํ•˜์ง€๋งŒ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์€ ํŠน์ • ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ—ค๋”์— ํ•ญ์ƒ ๋–  ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด์—ˆ๊ณ , ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉ์ž๋Š” ์—ฌ๋Ÿฌ ํƒญ์„ .. 2025. 12. 7.
์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ตฌํ˜„ ํ•˜๊ธฐ : 3. ์ธํ”„๋ผ ํ™˜๊ฒฝ์—์„œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ (with. trouble shooting) ์ด์ „ ๊ธ€์—์„œ ๋ฐฑ์—”๋“œ ๋กœ์ปฌ ์„œ๋ฒ„์—์„œ๋Š” ์‹คํ–‰์ด ์ž˜ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ k8s ์ธํ”„๋ผ ํ™˜๊ฒฝ์— ์˜ฌ๋ ธ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Next.js API Routes + SSE ํ”„๋ก์‹œ ๊ตฌ์„ฑ ์‹œ K8s ํ™˜๊ฒฝ์—์„œ localhost๋กœ ์—ฐ๊ฒฐ๋˜๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค. Next.js API Routes๋ฅผ ์‚ฌ์šฉํ•ด SSE(Server-Sent Events) ํ”„๋ก์‹œ๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘, ๋กœ์ปฌ(Linux ์„œ๋ฒ„)์—์„œ๋Š” ์ •์ƒ ๋™์ž‘ํ•˜๋˜ ์ฝ”๋“œ๊ฐ€ Kubernetes(K8s) ์ธํ”„๋ผ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜์ž localhost๋กœ ์ž˜๋ชป ์—ฐ๊ฒฐ๋˜๋ฉฐ ์‹คํŒจํ•˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋‹จ์ˆœํ•œ “env ์„ค์ • ์‹ค์ˆ˜”๋ฅผ ๋„˜์–ด,IP ์ง์ ‘ ์ ‘๊ทผ ↔ Service Name ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์˜ ๊ตฌ์กฐ์  ์ฐจ์ด,๊ทธ๋ฆฌ๊ณ  Next.js์˜ ๋นŒ๋“œ·๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ .. 2025. 12. 7.
์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ตฌํ˜„ ํ•˜๊ธฐ : 2. SSE ๋ฐฑ์—”๋“œ ๋กœ์ปฌ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ (feat. next.js) ์šฐ๋ฆฌ ์„œ๋น„์Šค๋Š” ํ”„๋ก ํŠธ(next.js - pages router)์™€ ๋ฐฑ์—”๋“œ(spring boot)๋กœ ๋œ ํ”„๋กœ์ ํŠธ์ด๋‹ค. ๊ธฐ์ˆ ์„ ๋„์ž…ํ•˜๊ธฐ ์ „ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์™€ SSE ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ์ง€ ํ™•์ธ์„ ์œ„ํ•ด ํ”„๋กœํ†  ํƒ€์ž… ํ…Œ์ŠคํŠธ๋ฅผ ์‹œํ–‰ํ•˜์˜€๋‹ค. ํ”„๋ก ํŠธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜์˜€๋‹ค. EventSource ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด SSE ์ฑ„๋„์„ ์—ด๊ณ , ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์ด๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฐฑ์—”๋“œ์™€์˜ ํ†ต์‹ ์„ next.config.js์˜ rewrites ์„ค์ •์„ ํ†ตํ•ด ํ”„๋ก์‹œํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, SSE ์—”๋“œํฌ์ธํŠธ(/sse/test)๋„ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•˜์˜€๋‹ค.// pages/sse-example.jsximport { useEffect } from 'react';export default function SseExa.. 2025. 12. 7.
์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ตฌํ˜„ ํ•˜๊ธฐ : 1. SSE(Server Sent Events)๋Š” ๋ฌด์—‡์ธ๊ฐ€? SSE(Server Sent Events)SSE์˜ ๊ฒฝ์šฐ ์›นํŽ˜์ด์ง€(ํด๋ผ์ด์–ธํŠธ)์˜ ์š”์ฒญ ์—†์ด๋„ ์–ธ์ œ๋“ ์ง€ ์„œ๋ฒ„๊ฐ€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ์ „ํ†ต์ ์œผ๋กœ ์›นํŽ˜์ด์ง€(ํด๋ผ์ด์–ธํŠธ)๋Š” ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•จSSE(Server-Sent Events)๋Š” ์‹ค์‹œ๊ฐ„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” Web API์‹ค์‹œ๊ฐ„์œผ๋กœ ์†Œ์‹ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ, ์•Œ๋ฆผ ๋ฐ›๊ธฐ ๋“ฑ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉํ•ด์„œ ์‚ฌ์šฉํ• ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋™์ž‘ ํ๋ฆ„ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ SSE๋กœ ํ†ต์‹ ํ•˜์ž๋Š” ์š”์ฒญ์„ ๋ณด๋ƒ„. (Connection Request)์„œ๋ฒ„๋Š” ์ด ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ˆ˜๋ฝํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ„. (Connection Response)ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ ๋ฐ›๊ณ , ์ง€๊ธˆ๋ถ€ํ„ฐ ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด์ฃผ๋Š” ๋ฐ์ดํ„ฐ๋“ค์— ๋ฐ˜์‘ํ•  ์ค€๋น„์ด์ œ ์„œ๋ฒ„.. 2025. 12. 1.
์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ตฌํ˜„ ํ•˜๊ธฐ : 0. ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„๊ณผ ๋ฐฉ๋ฒ•๋ก  ๋น„๊ต ์ด์ „์—๋Š” ์„œ๋น„์Šค์— ์•Œ๋ฆผ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค.์„œ๋น„์Šค ๋‚ด์— ๊ธฐ์กด์— ์ง€์›ํ•˜๋˜ ๋ถ„์„๊ณผ ๊ด€๋ จ๋œ ์„œ๋น„์Šค ์™ธ์— SBOM์„ ํ™œ์šฉํ•œ ์„œ๋น„์Šค์˜ ๊ณต์œ  ๊ธฐ๋Šฅ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉด์„œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์ด ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค. ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.์ด๋ฒคํŠธ ์ˆ˜์‹  ์—ฌ๋ถ€ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ์ด๋ฒคํŠธ ์‚ญ์ œ ์‹œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ์š”๊ตฌ ์‚ฌํ•ญ ๋ถ„์„ โœ… ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๋ฐ์ดํ„ฐ ์ „์†ก ํ๋ฆ„case 1 : ํด๋ผ์ด์–ธํŠธ → ์„œ๋ฒ„ (์š”์ฒญ)case 2 : ์„œ๋ฒ„ → ํด๋ผ์ด์–ธํŠธโœ… ์ด๋ฒคํŠธ ์ˆ˜์‹  ์—ฌ๋ถ€ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜, ์ด๋ฒคํŠธ ์‚ญ์ œ ์‹œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๋ฐ์ดํ„ฐ ์š”์ฒญ/์ „์†ก ํ๋ฆ„ํด๋ผ์ด์–ธํŠธ ๋™์ž‘ → ์„œ๋ฒ„ (์š”์ฒญ)์‹ค์‹œ๊ฐ„์„ฑ์ด ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ ๋™์ž‘์— ๋”ฐ๋ฅธ ์„œ๋ฒ„ ์š”์ฒญ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ๊ณผ ๋ณ„๊ฐœ๋กœ ์ƒ๊ฐ๊ธฐ์กด REST ์š”์ฒญ์„.. 2025. 12. 1.
์‚ฌ๋‚ด ๋ณด์•ˆ ๋ฆฌ์†Œ์Šค ํ†ตํ•ฉ ํ”Œ๋žซํผ ๊ตฌ์ถ•๊ธฐ : 6. on-premise sentry ๊ณ ๋„ํ™” ์ด์ „๊ธ€ ์—์„œ sentry๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„์— ์—ฐ๋™ ์™„๋ฃŒํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค ์œ ์ €๊ฐ€ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ๋Š” ์–ด๋ ค์› ๊ณ  ์†Œ์Šค๋งต ์—ฐ๋™๋„ ์ œ๋Œ€๋กœ ๋˜์–ด์žˆ์ง€ ์•Š์•„์„œ ์–ด๋–ค ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์ธ์ง€ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์— ์˜ค๋ฅ˜๋ฅผ ํŠธ๋ ˆ์ด์Šคํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค. ๋˜ํ•œ, ํ˜„์žฌ ์„œ๋น„์Šค๊ฐ€ ๋ฆด๋ฆฌ์ฆˆ ๋˜์–ด์žˆ๋Š” ํ˜„์žฌ ์‹œ์ ์— ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ํŽ˜์ด์ง€(๊ธฐ๋Šฅ๋‹จ์œ„์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.)๋ฅผ ์ž์ฃผ ๋“ค์–ด๊ฐ€๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ๋‚ด๋ถ€์˜ ์˜๊ฒฌ๋„ ์กด์žฌํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” 3๊ฐ€์ง€์— ๋Œ€ํ•ด์„œ ์ผ๋‹จ ๊ณ ๋„ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. 1. ์–ด๋–ค ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋น„๋กฏ๋œ ์˜ค๋ฅ˜์ธ๊ฐ€2. ์–ด๋–ค ์†Œ์Šค์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ํŠธ๋ ˆ์ด์Šค ๋œ ์˜ค๋ฅ˜์ธ๊ฐ€3. ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์ด ์ ‘๊ทผํ•˜๋Š”๊ฐ€ ์–ด๋–ค ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋น„๋กฏ๋œ ์˜ค๋ฅ˜์ธ๊ฐ€Sentry์—์„œ๋Š” ์—๋Ÿฌ ์ด๋ฒคํŠธ์— ์‚ฌ์šฉ.. 2025. 11. 29.
์‚ฌ๋‚ด ๋ณด์•ˆ ๋ฆฌ์†Œ์Šค ํ†ตํ•ฉ ํ”Œ๋žซํผ ๊ตฌ์ถ•๊ธฐ : 5. ํŽ˜์ด์ง€ ๋‹จ์œ„์˜ UI/UX ๊ฐœ์„ ํ•˜๊ธฐ ์ด์ „์— ์ž‘์„ฑํ–ˆ๋˜ UI/UX ๊ฐœ์„ ๊ธฐ๋Š” ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„์˜ ๊ฐœ์„ ์„ ๋‹ค๋ค˜๋‹ค๋ฉด,์ด๋ฒˆ์—๋Š” ํŽ˜์ด์ง€ ๋‹จ์œ„์˜ UI/UX ๊ฐœ์„  ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ "๋ ˆํผ๋Ÿฐ์Šค"๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•œ ๊ฐœ์„ ์„ ์ž๊พธ ๋‹ค๋ฃจ๊ฒŒ ๋˜์ง€๋งŒ, ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค๋„ ๊ฐœ์„  ์‚ฌํ•ญ์ด ๊ฝค ์žˆ์—ˆ๋‹ค. ๋˜ํ•œ, ์ถ”๊ฐ€ ๋˜๋Š” ๊ฐœ๋…๋“ค์ด ์žˆ์–ด์„œ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ์ž๋“ค์ด ์„ค๋ช… ์—†์ด ์ง๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?๋ผ๋Š” ๊ณ ๋ฏผ์„ ๋˜๊ฒŒ ๋งŽ์ด ํ–ˆ๋‹ค. ๊ฐœ๋ฐœ๋„ ๊ฐœ๋ฐœ์ด์ง€๋งŒ ๊ธฐํš๊ณผ UI/UX๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์ผ๋„ ๊ฝค๋‚˜ ์˜๋ฏธ์žˆ๊ณ  ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ๋‹ค ๋œฏ์–ด๋ณด๊ณ , ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๋ถˆํŽธํ•œ ์ ๋“ค์„ ์ทจํ•ฉํ•˜๊ณ , ๊ธฐ์กด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋ฌผ์–ด๋ด์„œ ๊ฐœ์„ ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์— ๊ณ ๋ฏผํ–ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ์ž์œจ์„ฑ์ด ์ฃผ์–ด์ง€๋Š” ํ”„๋กœ์ ํŠธ๋ผ์„œ ํ”ผ๋“œ๋ฐฑ์ด ๋” ๋น ๋ฅด๊ฒŒ ์˜ค๊ฐ”๋˜ ํ™˜๊ฒฝ์ด๋ผ ๋”์šฑ ํฅ๋ฏธ๋ฅผ ๋А๊ผˆ๋˜๊ฑฐ ๊ฐ™๋‹ค. ๊ฐ™์ด ์ฐธ์—ฌํ•œ ๋ถ„๋“ค๋„ .. 2025. 11. 28.
์‚ฌ๋‚ด ๋ณด์•ˆ ๋ฆฌ์†Œ์Šค ํ†ตํ•ฉ ํ”Œ๋žซํผ ๊ตฌ์ถ•๊ธฐ : 4. sentry self-hosted (on-premise) ์„ธํŒ… with next.js 1. Sentry๋ž€?Sentry๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋ฐ ์˜ˆ์™ธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์˜ค๋ฅ˜ ์ถ”์  ์‹œ์Šคํ…œ์ด๋‹ค.์ฃผ๋กœ ์›น, ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํƒ‘ ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋‚˜ ์„ฑ๋Šฅ ์ €ํ•˜ ์ด์Šˆ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋œ๋‹ค.“Application Monitoring and Error Tracking that helps developers see what actually matters, solve quicker, and learn continuously in production.”2. Sentry๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“คโœ… ์—๋Ÿฌ ์ถ”์ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ํฌํ•จํ•œ ์ƒ์„ธ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•ด ์–ด๋””์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์‹œ๊ฐ์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ .. 2025. 6. 18.
์‚ฌ๋‚ด ๋ณด์•ˆ ๋ฆฌ์†Œ์Šค ํ†ตํ•ฉ ํ”Œ๋žซํผ ๊ตฌ์ถ•๊ธฐ : 3. URL์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„ํ•œ ํ•„ํ„ฐ, ๊ฒ€์ƒ‰, ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ƒํƒœ ๊ด€๋ฆฌ ์ „๋žต ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ฒด์ปค ๋ชฉ๋ก ํ™”๋ฉด์—์„œ ํ•„ํ„ฐ, ๊ฒ€์ƒ‰, ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ–ˆ๋Š”์ง€ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.ํŠนํžˆ Next.js ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ URL ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ƒํƒœ๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๊ณ ,์ด๋ฅผ React Query์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR)๊นŒ์ง€ ์—ฐ๊ฒฐํ•ด ์ผ๊ด€๋œ UX์™€ ์ดˆ๊ธฐ ์„ฑ๋Šฅ์„ ํ™•๋ณดํ•˜๋Š” ์ „๋žต์„ ์„ค๊ณ„ํ–ˆ๋‹ค. ๐Ÿ” ๋ฌธ์ œ ์ •์˜์ฒ˜์Œ์—๋Š” ํ•„ํ„ฐ์™€ ๊ฒ€์ƒ‰ ์ƒํƒœ๋ฅผ ์ „์—ญ ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ localStorage์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ๋ คํ–ˆ์—ˆ๋‹ค.ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์‹ค์งˆ์ ์ธ ํ•œ๊ณ„์ ์ด ์กด์žฌํ–ˆ๋‹ค.ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ƒํƒœ๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์–ด ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์งํ•„ํ„ฐ๋ง๋œ ์ƒํƒœ๋ฅผ URL๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์—†์–ด ํ˜‘์—… ์‹œ ๋ถˆํŽธํ•จ๋ธŒ๋ผ์šฐ์ € ๋’ค๋กœ๊ฐ€๊ธฐ/์•ž์œผ๋กœ๊ฐ€๊ธฐ ๋™์ž‘์ด ๊ธฐ๋Œ€์™€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•จSSR์„ ํ™œ์šฉํ•œ ์ดˆ๊ธฐ ๋ Œ๋”๋ง๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•„ ๋กœ๋”ฉ ์‹œ UX๊ฐ€ ์ข‹์ง€ ์•Š์Œ์ด.. 2025. 6. 13.
์‚ฌ๋‚ด ๋ณด์•ˆ ๋ฆฌ์†Œ์Šค ํ†ตํ•ฉ ํ”Œ๋žซํผ ๊ตฌ์ถ•๊ธฐ : 2. ๊ณ„์ธตํ˜• ๋ ˆํผ๋Ÿฐ์Šค ํ•„ํ„ฐ UI ๊ฐœ์„ ๊ธฐ ๐Ÿงฑ ๋ณต์žกํ•œ ํŠธ๋ฆฌ๊ตฌ์กฐ ํ•„ํ„ฐ, ๊ณ„์ธตํ˜• ํ•„ํ„ฐ๋กœ ๊ฐœ์„ ํ•˜๊ธฐโŒ ๊ธฐ์กด UI์˜ ๋ฌธ์ œ์ ๊ธฐ์กด์˜ ์ฒด์ปค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜์˜ ๋ ˆํผ๋Ÿฐ์Šค ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ํ•„ํ„ฐ๋Š” ์‹œ๊ฐ์ ์œผ๋กœ ๋ณต์žกํ•˜๋ฉฐ, ์ค‘์ฒฉ ๋ ˆ๋ฒจ์ด ๋งŽ์•„์ง€๋ฉด ๊ฐ€๋…์„ฑ๊ณผ ์‚ฌ์šฉ์„ฑ์ด ๊ธ‰๊ฒฉํžˆ ๋–จ์–ด์ง€๋Š” ๊ตฌ์กฐ๊ฐ ์ฑ•ํ„ฐ/๋ฃฐ ๋‹จ์œ„๋กœ ์„ ํƒํ•  ์ˆ˜๋Š” ์žˆ์—ˆ์ง€๋งŒ, ์ „์ฒด ์„ ํƒ/ํ•ด์ œ ๋กœ์ง์ด ์ง๊ด€์ ์ด์ง€ ์•Š์•˜๊ณ , ๋งˆ์šฐ์Šค ์—†์ด ์กฐ์ž‘ํ•˜๊ธฐ์—๋„ ๋ถˆํŽธ์Šคํฌ๋กค์ด ๋งŽ๊ณ  ๊ตฌ์กฐ๊ฐ€ ํ‰ํ‰ํ•˜์ง€ ์•Š์•„, ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์„ ํƒํ• ์ง€ ํŒŒ์•…์ด ์–ด๋ ค์›Œ ๋ณด์ž„์ฒซ๋ฒˆ์งธ ์„ ํƒ ํ•ญ๋ชฉ์˜ ๊ฒฝ์šฐ ํ•„ํ„ฐ ๋ ˆ์ด์•„์›ƒ์„ ๋ฒ—์–ด๋‚œ UI๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ โœ… ๊ฐœ์„  ๋ฐฉํ–ฅ: 3๋‹จ๊ณ„ ๊ณ„์ธตํ˜• ํ•„ํ„ฐ UI๊ธฐ์กด์— ํ•œ๋ˆˆ์— ๋ณด๊ธฐ ์–ด๋ ค์šด UI๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด 3๋‹จ๊ณ„ ๊ณ„์ธต ๊ตฌ์กฐ์— ๊ธฐ๋ฐ˜ํ•œ ์ปค์Šคํ…€ ํ•„ํ„ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ํ–ˆ๋‹ค. ?.. 2025. 6. 13.