Skip to content

HH-Final-Project-2/BackEnd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

230 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

[Businus] ์ง์žฅ์ธ์„ ์œ„ํ•œ ๋ช…ํ•จยท์ผ์ • ๊ด€๋ฆฌ

image

๐ŸŽ‰ Businus ์†Œ๊ฐœ

๋ช…ํ•จยท์ผ์ •๊ด€๋ฆฌ ํ•œ๋ฒˆ์— ์–ด๋ ต๋‹ค๋ฉด?

๋ฐฐ2

๐Ÿ‘‰ ์ง์žฅ์—์„œ ๋งŒ๋‚œ ์‚ฌ๋žŒ๋“ค์˜ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด !
๐Ÿ‘‰ ๊ณ„์†ํ•ด์„œ ์Œ“์ด๋Š” ๋ช…ํ•จ๋“ค ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ• ์ง€ ๊ณ ๋ฏผ๋œ๋‹ค๋ฉด !
๐Ÿ‘‰ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์ง๊ตฐ์— ๋Œ€ํ•ด ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด !

  • ์ด์ œ ๋น„์ง€๋„ˆ์Šค๋กœ ์Šค๋งˆํŠธํ•˜๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด ๋ณด์„ธ์š”.

โœ๋ชฉ์ฐจ

  1. ๊ฐœ๋ฐœ๊ธฐ๊ฐ„
  2. ์•„ํ‚คํ…์ณ
  3. ๊ธฐ์ˆ ์Šคํƒ
  4. ์ฃผ์š” ๊ธฐ๋Šฅ
  5. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
  6. ํŒ€์›

โŒš ๊ฐœ๋ฐœ๊ธฐ๊ฐ„

2022.11.04 ~ 2022.12.16
์„œ๋น„์Šค ๋Ÿฐ์นญ : 2022.12.08


๐Ÿ›  ์•„ํ‚คํ…์ณ

์•„ํ‚คํ…์ฒ˜


โ› ๊ธฐ์ˆ ์Šคํƒ

Part๐Ÿ—‚ Techโš’๏ธ
๐ŸŒ…Front
โš™๏ธBack
โš’๏ธTool

๐Ÿ“ ๊ธฐ์ˆ  ์Šคํƒ & ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ์ด์œ 

โœ” Frond-end

๊ธฐ์ˆ  ์Šคํƒ ์‚ฌ์šฉ์ด์œ 
AWS Amplify ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋ฐ ํ”ผ๋“œ๋ฐฑ ๊ธฐ๋ฐ˜ ์ถ”๊ฐ€์ž‘์—…์‹œ ์ž๋™๋ฐฐํฌ ํ™˜๊ฒฝ์ด ๊ฐ–์ถ”์–ด์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ๋ฐฐํฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™๋ฐฐํฌ ํ™˜๊ฒฝ์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ ๋ฐฐํฌํ•  ๋„๋ฉ”์ธ ํ•˜๋‚˜๋งŒ ๊ตฌ๋งคํ•˜๋ฉด ์ถ”๊ฐ€์ ์ธ ๋น„์šฉ ์—†์ด ์ž๋™๋ฐฐํฌ ํ™˜๊ฒฝ์„ ๊ฐ–์ถœ ์ˆ˜ ์žˆ๋Š” AWS Amplify๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.
sockJs/Stomp ์ฑ„ํŒ…๊ธฐ๋Šฅ์— ์ ํ•ฉํ•œ ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„ ์‚ฌ์ด์— ์งง์€ ์ง€์—ฐ์‹œ๊ฐ„, ๊ทธ๋ฆฌ๊ณ  ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•์„ ์ง€์›ํ•˜๋Š” API์ธ Sock.js์™€ HTTP์—์„œ ๋ชจ๋ธ๋ง ๋˜๋Š” Frame ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ Stomp๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฑ„ํŒ…๋ฐฉ์„ ๊ฐœ์„คํ•˜๋Š” ์ƒํ™ฉ์— ์ ํ•ฉํ•œ Stompํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

โœ” Back-end

๊ธฐ์ˆ  ์Šคํƒ ์‚ฌ์šฉ์ด์œ 
Google Vision API OCR ๋ช…ํ•จ์ด๋ฏธ์ง€ ๋‚ด ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•ด ํ•ด๋‹น ๊ฐ’์ด ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” OCR ์—”์ง„์ด ํ•„์š”ํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ Google Vision API (OCR)์™€ Tesseract OCR์˜ ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ง€ ์ค‘์— Google Vision API์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” OCR์—”์ง„์ด Tesseract OCR ๋ณด๋‹ค ํ•œ๊ธ€์˜ ์ธ์‹๋ฅ  ๋ฐ ์ •ํ™•๋„๊ฐ€ ๋†’๊ณ  ์ด๋ฏธ์ง€ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด ํ•„์š”์—†์–ด ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
Google Cloud Storage ๋ช…ํ•จ์ฒฉ ๋ฐ ๊ฒŒ์‹œ๊ธ€์— ์—…๋กœ๋“œ ํ•  ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜์˜€๋‹ค. OCR ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์žˆ์–ด์„œ Storage์— ์—…๋กœ๋“œ ๋œ ์ด๋ฏธ์ง€๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ… ์ด๋ฏธ์ง€์— ์˜์กดํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด์—ˆ๋‹ค. ์ฆ‰, GCS๋งŒ์„ ์ง€์›ํ•˜๊ธฐ์— AWS S3์™€ Google Cloud Storage ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ง€์ค‘ GCS๋ฅผ ์„ ํƒํ•˜์˜€๋‹ค.
Spring Batch ๊ธฐ์—…๋ช…, ๊ธฐ์—…์ฃผ์†Œ๋Š” ํ…์ŠคํŠธ๋กœ ์ถ”์ถœ์ด ๋ถˆ๊ฐ€ํ•˜์—ฌ ๋ช…ํ•จ ๋“ฑ๋ก ์‹œ ๊ธฐ์—… ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๊ธฐ์—…์ •๋ณด ์˜คํ”ˆ API๋ฅผ ์‚ฌ์šฉ ์‹œ ํ•œ๋ฒˆ์— ๋งŽ์€ ์š”์ฒญ์ด ๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ DB์— ๋‚ด์žฌํ™” ํ•ด๋‘์—ˆ์œผ๋ฉฐ, ์˜คํ”ˆAPI์˜ ์ •๋ณด๊ฐ€ update๋  ๋•Œ DB๋„ update ๋  ์ˆ˜ ์žˆ๋„๋ก Spring Batch๋ฅผ ํ†ตํ•ด ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ค.
STOMP ๋ฉ”์‹œ์ง• ๋ฐฉ์‹๋งŒ ์ž˜ ์ •์˜ํ•œ๋‹ค๋ฉด WebSocket ๋งŒ์œผ๋กœ ์ข‹์€ Server/Client ์†Œ์ผ“ ์„œ๋ฒ„๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, STOMP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ „์†กํ•  ๋ฉ”์„ธ์ง€์˜ ์œ ํ˜•, ํ˜•์‹, ๋‚ด์šฉ๋“ค์„ ์ •์˜ํ•˜์—ฌ ๊ฐœ๋ฐœ์˜ ํŽธ์˜์„ฑ์„ ๋†’์ด๊ณ  ๋ฉ”์‹œ์ง€ ํ—ค๋”์— ๊ฐ’์„ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ์–ด ์ธ์ฆ ์ฒ˜๋ฆฌ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค.
Redis ๋งŒ์•ฝ ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋А์ •๋„ ํ™•๋ณด๋˜๋ฉด ์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฉ”์„ธ์ง€ ์†ก/์ˆ˜์‹ ํ•˜๋Š” ๋ธŒ๋กœ์ปค๋ฅผ ์™ธ๋ถ€๋กœ ๋”ฐ๋กœ ๋นผ๋Š” ๊ฒƒ์ด ๋งž๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ(์ฑ„ํŒ…)๋ฅผ DB์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋“ค์›จ์–ด์—๋Š” ์ €์žฅ๋  ํ•„์š”๊ฐ€ ์—†๊ณ  ์บ์‹œ์„ฑ ๋ฐ์ดํ„ฐ๋ฉด ์ถฉ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— RabbitMQ, Kafka๊ฐ€ ์•„๋‹Œ, Redis๋ฅผ ์™ธ๋ถ€๋ธŒ๋กœ์ปค๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ ์ •๋ณด, Unread Message Count ๋“ฑ์— ๋Œ€ํ•ด์„œ DB๋กœ๋ถ€ํ„ฐ ์žฆ์€ ์กฐํšŒ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” Buffer(์ž„์‹œ ์ €์žฅ ๊ณต๊ฐ„)๋กœ๋„ ์‚ฌ์šฉํ–ˆ๋‹ค.

โš” ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์†Œ์…œ ๋กœ๊ทธ์ธ (์นด์นด์˜ค)
  • ๋ช…ํ•จ ๊ด€๋ฆฌ (OCR)
  • ๋‚ด ์ผ์ • ๊ด€๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ 1:1 ์ฑ„ํŒ…
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ
  • ๋‚ด ๋ช…ํ•จ ๋ฐ ํ”„๋กœํ•„ ๊ด€๋ฆฌ

์†Œ์…œ๋กœ๊ทธ์ธ OCR(๋ช…ํ•จ๋“ฑ๋ก) ๋ช…ํ•จ ๋‚ด๋ณด๋‚ด๊ธฐ
์ผ์ • ๊ด€๋ฆฌ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…

๐Ÿ›  ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

โœ” Frond-end
ํ™”๋ฉด ์ƒˆ๋กœ๊ณ ์นจ์ด๋‚˜ ์ „ํ™˜ ์‹œ ๋žœ๋”๋ง ์ด์Šˆ

๐Ÿž์ด์Šˆ ์‚ฌํ•ญ
1.ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์‹œ useSelector๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฐ’์ด undefined, mapํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ

๐Ÿ™Œ๋ฌธ์ œ ํ•ด๊ฒฐ
1.initialState ๊ธฐ๋ณธ ๊ฐ’ ์„ค์ •
2.์‚ผํ•ญ์—ฐ์‚ฌ์ž ํ˜น์€ if๋ฌธ์œผ๋กœ undefined์ผ ๋•Œ์˜ ์กฐ๊ฑด์„ ๊ฑธ์–ด์คŒ

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…1
3.reducer์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹  ํ›„์— fulfill๋˜๋Š” dataํ˜•ํƒœ ํ™•์ธ
ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…1-1

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ Œ๋”๋ง ์ด์Šˆ

๐Ÿž์ด์Šˆ ์‚ฌํ•ญ
1.๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ์‹œ ํ™”๋ฉด์— ๋ฐ”๋กœ ๋ Œ๋”๋ง ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ
2.์ปค๋ฎค๋‹ˆํ‹ฐ ์ƒ์„ธ์กฐํšŒ ํ›„ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ํ™”๋ฉด์— ๋ถˆํ•„์š”ํ•œ ๋‚ด์šฉ๋“ค์ด ์ž ๊น ๋ Œ๋”๋ง ๋˜๋Š” ์ด์Šˆ

๐Ÿ™Œ๋ฌธ์ œ ํ•ด๊ฒฐ
1.initialState์˜ isLoading๊ณผ useEffect๋ฅผ ํ™œ์šฉ
2.loading์ด๋ผ๋Š” ์ƒํƒœ๋ฅผ ๋งŒ๋“ค๊ณ  ์ƒํƒœ๋ณ€๊ฒฝ์‹œ LoadingPage๋ฅผ return

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…2

InvalidStateError: The connection has not been established yet

๐Ÿž์ด์Šˆ ์‚ฌํ•ญ
1.๊ฒŒ์‹œ๊ธ€์—์„œ ์ฑ„ํŒ…ํŽ˜์ด์ง€๋กœ ์ด๋™ ํ›„ websocket connect๋ณด๋‹ค subscribe๊ฐ€ ๋จผ์ € ์ง„ํ–‰๋˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ TypeError๋„ ํ•จ๊ป˜ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

๐Ÿ™Œ๋ฌธ์ œ ํ•ด๊ฒฐ
1.์›น์†Œ์ผ“ ์ปค๋„ฅ์…˜ ์ƒํƒœ๋ฅผ ์ด์šฉํ•ด ์›น์†Œ์ผ“์˜ ์ƒํƒœ๊ฐ€ 1์ผ ๊ฒฝ์šฐ ์ฆ‰ ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋˜๊ณ  ํ†ต์‹ ์ค‘์ธ ์ƒํƒœ์ผ ๋•Œ subscribe๊ฐ€ ์‹คํ–‰๋˜๋„ ๊ตฌ๋…์ด ๋˜๋„๋ก ํ•ด๋ณด์•˜์ง€๋งŒ ๋ณ€ํ•จ์€ ์—†์—ˆ๋‹ค.
2.ํŽ˜์ด์ง€ ์ด๋™ํ›„ ๋งˆ์šดํŠธ ๋  ๋•Œ connect๋ณด๋‹ค subscirbe๊ฐ€ ๋‚˜์ค‘์— ์ง„ํ–‰๋˜๋„๋ก setTimeout์„ ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐ
(navigate๋ฅผ ๋จผ์ € ํ• ๋‹นํ•˜์—ฌ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์•ˆ์ •์ ์ธ ์ž‘๋™์„ ์œ„ํ•ด setTimeout ์ง€์ •)

ํŠธ๋Ÿฌ๋ธ”3


โœ” Back-end
๊ธฐ์—… ๊ฒ€์ƒ‰ ์‹œ Full-text Index

๐Ÿž์ด์Šˆ ์‚ฌํ•ญ
1. ๊ธฐ์—… ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฌธ์„ Like์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ โ‡’ JMeter๋กœ ์„ฑ๋Šฅํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋‹ˆ TPS๊ฐ€ ํ˜„์ „ํžˆ ๋‚ฎ์Œ โ‡’ ๊ฐœ์„ ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ


๐Ÿ™Œ๋ฌธ์ œ ํ•ด๊ฒฐ
1. LIKE์ ˆ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ํ…Œ์ด๋ธ”์„ full scan ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ์š”์ฒญํ•œ๋‹ค๋ฉด ๋А๋ ค์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค๊ณ  ํŒ๋‹จ
  1. FULL TEXT INDEX๋ฌธ์œผ๋กœ ๋Œ€์ฒด

  2. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

๐Ÿ“Œ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๊ธฐ์—… ๊ฒ€์ƒ‰ ์‹œ

  • ๊ฐ€์ƒ์œ ์ € 70๋ช… โ˜‘ ํ‰๊ท ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„: 2.3์ดˆ ๊ฐ์†Œ

image

  • ๊ฐ€์ƒ์œ ์ € 200๋ช… โ˜‘ ํ‰๊ท ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„: 6์ดˆ ๊ฐ์†Œ

image

๐Ÿ“Œ Saturation Point โ˜‘ 200๋ช… ๐Ÿ‘‰ 800๋ช… ์ฆ๊ฐ€

WebSocket์—์„œ์˜ ๋ณด์•ˆ

๐Ÿž์ด์Šˆ ์‚ฌํ•ญ
1. <์‚ฌ์šฉ์ž ๊ฒ€์ฆ> WebSocket์—์„œ์˜ ์‚ฌ์šฉ์ž ๊ฒ€์ฆ์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„ ๋ฌด๋ถ„๋ณ„ํ•œ HandShake๊ฐ€ ๊ฐ€๋Šฅ. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด userdetails๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ–ˆ์ง€๋งŒ, HTTP์™€ WebSocket์˜ ํ—ค๋”๋Š” ์„œ๋กœ ๋‹ค๋ฅธ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธ์ฆ ์ฒ˜๋ฆฌ ๊ตฌํ˜„์ด ํ•„์š”ํ•˜๋‹ค ํŒ๋‹จ.
  1. <๊ตฌ๋… ์ฃผ์†Œ> ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ๋‹ค๋ฅธ ์ฑ„ํŒ…๋ฐฉ์„ ๊ตฌ๋…ํ•  ์‹œ, ์ฑ„ํŒ…๋ฐฉ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ์  Issue ๋ฐœ์ƒ

    ๐Ÿ™Œ๋ฌธ์ œ ํ•ด๊ฒฐ

  2. Jwt๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ํ•ด๋‹น ํ† ํฐ์„ Stomphandler์—์„œ ๋ฉ”์„ธ์ง€๋ฅผ ์ธํ„ฐ์…‰ํŠธํ• ๋•Œ accessor.getFirstNativeHeader("Authorization")๋กœ ํ† ํฐ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๋ณ„๋„๋กœ ์ž‘์„ฑํ•œ JwtDecoder ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ํ† ํฐ ๊ฒ€์ฆ ๋ฐ ์‚ฌ์šฉ์ž email ์ถ”์ถœ์„ ์ง„ํ–‰ํ•˜์—ฌ ์ •์ƒ์ ์ธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์‹๋ณ„ํ•˜์˜€์Œ

  3. @MessageMapping์‹œ์—๋„ @Header("Authorization")์— token์„ ๋‹ด์•„์™€์„œ ์‚ฌ์šฉ์ž๋ฅผ ํ™•์ธํ•˜์˜€์œผ๋ฉฐ, ํ† ํฐ์„ ํ†ตํ•ด ์œ ์ € ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ธฐ์กด์— ํ”„๋ก ํŠธ๋กœ๋ถ€ํ„ฐ sender๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ๋กœ ํ•˜์˜€๋˜ ๊ฒƒ์„ ์ œ์™ธํ•จ.(์„œ๋ฒ„์—์„œ ๋ฉ”์„ธ์ง€ ์ž‘์„ฑ์ž ์ถ”์ถœ)

  4. ๊ตฌ๋… ์ฃผ์†Œ(subscribe destination)๋ฅผ UUID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•˜์—ฌ ์ฑ„ํŒ…๋ฐฉId์˜ ๊ณ ์œ ์„ฑ ๋ณด์žฅ๊ณผ ๋™์‹œ์— ์ฑ„ํŒ…๋ฐฉ์— ์†ํ•ด์žˆ์ง€ ์•Š์€ ์œ ์ €๊ฐ€ ๋‹ค๋ฅธ ์ฑ„ํŒ…๋ฐฉ์„ ๊ตฌ๋…ํ•˜์—ฌ ์ฑ„ํŒ…๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์—†๋„๋ก ๋ณด์•ˆ ์„ค์ •

์„œ๋ฒ„ Memory ๋ถ€์กฑ ํ˜„์ƒ

๐Ÿž์ด์Šˆ ์‚ฌํ•ญ
1. t2.micro์‚ฌ์–‘์„ ๊ฐ€์ง„ Ec2 Instance์— Spring Application์„ ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์ด ๋Š๊ฒจ๋„ ์‹คํ–‰์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋™์ž‘ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด nohup์œผ๋กœ ๋ฐฐํฌ (default : 7.6G)
  1. ์„œ๋น„์Šค ์šด์˜ ์ค‘ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์ด ์•ˆ๋˜๋Š” ํ˜„์ƒ ๋ฐœ์ƒ

  2. Ec2 ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์ •๋ณด ์กฐํšŒ

  3. 7.6G ์ค‘ 7.6G๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์„œ ์—๋Ÿฌ ๋ฐœ์ƒ

image

๐Ÿ™Œ๋ฌธ์ œ ํ•ด๊ฒฐ

  1. ์›์ธ: nohup์œผ๋กœ ๋ฐฐํฌ์‹œ nohup.out ํŒŒ์ผ์ด ์ƒ์„ฑ๋จ. ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์‹œ ์ถœ๋ ฅ๋˜๋Š” stdout๋‚ด์šฉ์ด ์ด ํŒŒ์ผ์— ๊ธฐ๋ก๋จ. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” stdout์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๋ชจ๋“  ๋‚ด์šฉ์ด nohup.out์œผ๋กœ ์Œ“์ด๋ฉด์„œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด nohup.out ํŒŒ์ผ ์šฉ๋Ÿ‰์ด ์ปค์ง€๊ฒŒ ๋จ.

  2. ๋กœ๊ทธ๊ธฐ๋ก์ด ํ•„์š”ํ–ˆ๊ธฐ์— nohup.outํŒŒ์ผ์€ ๊ผญ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ

  3. nohup.outํŒŒ์ผ์„ ๋‚ ์งœ๋ณ„๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋”ฐ๋กœ ์ €์žฅํ•˜์—ฌ ๋ถ„๋ฆฌ

image

  1. ์ถ”ํ›„ ํ•ด๊ฒฐ๋ฐฉ์•ˆ : ๋ฃจํŠธ ๋ณผ๋ฅจ ํฌ๊ธฐ & ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ ๋Š˜๋ฆฌ๊ธฐ


๐Ÿคธ๐Ÿปโ€ ํŒ€์›

๊น€์„์žฌ ๊น€์Šน์žฌ ํ™๋งˆ๋กœ ํ™ฉ๋Œ€์—ฐ ๊น€๋ณด๊ฒฝ ์„œ๋ณ‘๋ฒ” ์ •์œ ์„ฑ ์ตœ์˜ˆ๋นˆ
FE(๋ฆฌ๋”) FE FE FE BE(๋ถ€๋ฆฌ๋”) BE BE DESIGNER
๐Ÿ”— ๐Ÿ”— ๐Ÿ”— ๐Ÿ”— ๐Ÿ”— ๐Ÿ”— ๐Ÿ”— ๐Ÿ“ง choiyebin98@gmail.com

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages