Skip to content

dami0806/TeamSSC

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TreamSSC (Tream Study Student Care) ํ”„๋กœ์ ํŠธ

image

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2024.07.17 ~ 2024.08.20
  • ํ”„๋กœ์ ํŠธ ์„ค๋ช…:
    • Slack, Notion, Excel ๋“ฑ์„ ํ†ตํ•œ ๋ณต์žกํ•œ ์ž๋ฃŒ ์ œ๊ณต ๊ฒฝ๋กœ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๊ณต์ง€ ๋ฐ ์†Œํ†ต์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ
    • ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๋ฐ ๊ณต์ง€ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฐ„ ์›ํ™œํ•œ ์†Œํ†ต์„ ์ง€์›

๋ฐฑ์—”๋“œ


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

ํ…Œ์ŠคํŠธ

๋ชจ๋‹ˆํ„ฐ๋ง

๋ฌธ์„œ

์ธํ”„๋ผ

CI/CD

๐Ÿ‘ฅ ํŒ€ ์—ญํ• 

์—ญํ•  ์ด๋ฆ„ ๋‹ด๋‹น ๊ธฐ๋Šฅ
๋ฆฌ๋” ํ•จ์Šน์™„ ํšŒ์›๊ด€๋ จ ๊ธฐ๋Šฅ, ํ”„๋ก ํŠธ์—”๋“œ ์„ธํŒ…
๋ถ€๋ฆฌ๋” ๋ฐ•๋‹ค๋ฏธ ์‹œํ๋ฆฌํ‹ฐ ์„ค์ •, ํŒ€ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ, ์ฑ„ํŒ…, ๋ฐฐํฌ
ํŒ€์› ๋ฐ•๊ฐ•ํ˜„ ๊ฒŒ์‹œ๊ธ€, ๊ณต์ง€์‚ฌํ•ญ, ๋ฐฐํฌ, ํ”„๋ก ํŠธ์—”๋“œ
ํŒ€์› ๊น€์ฐฝ๋ฏผ ํŠธ๋ž™, ์นด์นด์˜ค ๋กœ๊ทธ์ธ
ํŒ€์› ๊น€ํ˜„๋ฏผ ๊ธฐ์ˆ˜, ํšŒ์›๊ฐ€์ž… ์Šน์ธ, ์ด๋ฉ”์ผ ์ธ์ฆ

๐Ÿš€ ์ฃผ์š” ๊ธฐ์—ฌ

  • WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • JWT ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ
  • RabbitMQ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์ฒ˜๋ฆฌ ๊ตฌํ˜„
  • Docker ๋ฐ AWS EC2๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ ๊ฒฝํ—˜
  • Jira๋ฅผ ํ™œ์šฉํ•œ ํ”„๋กœ์ ํŠธ ํ”Œ๋ž˜๋‹ ๋ฐ GitHub ์ด์Šˆ ๊ด€๋ฆฌ

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

1๏ธโƒฃ Docker ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ ํ•ด๊ฒฐ

  • ๋ฌธ์ œ์ : Spring ์„œ๋ฒ„์™€ RabbitMQ ๊ฐ„ ํ†ต์‹  ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • ์›์ธ ๋ถ„์„:
    • ์ดˆ๊ธฐ ์„ค์ •์—์„œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐœ๋ณ„ ๋„คํŠธ์›Œํฌ์—์„œ ์‹คํ–‰๋จ
    • localhost๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RabbitMQ์— ์ ‘๊ทผํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋กœ ์ธํ•ด ์‹คํŒจ
  • ํ•ด๊ฒฐ์ฑ…:
    • Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Spring ์„œ๋ฒ„์™€ RabbitMQ๋ฅผ ๋™์ผ ๋„คํŠธ์›Œํฌ์— ๋ฐฐ์น˜
    • rabbitmq ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ ์ • ๋„คํŠธ์›Œํฌ ์ด๋ฆ„์œผ๋กœ ํ†ต์‹ 

2๏ธโƒฃ ์ฑ„ํŒ… ์„ฑ๋Šฅ ์ตœ์ ํ™”

  • ๋ฌธ์ œ์  1: ๋†’์€ ๋™์‹œ ์ ‘์† ์‹œ ์„ฑ๋Šฅ ์ €ํ•˜
    • ์›์ธ ๋ถ„์„: WebSocket ์š”์ฒญ์ด ๋‹จ์ผ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌ๋˜์–ด ๋ณ‘๋ชฉ ๋ฐœ์ƒ
    • ํ•ด๊ฒฐ์ฑ…: ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ ์šฉํ•˜์—ฌ ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ ์ตœ์ ํ™”
  • ๋ฌธ์ œ์  2: ๊ณผ๋„ํ•œ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ์œผ๋กœ ์ธํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„
    • ์›์ธ ๋ถ„์„: ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ๋ฌด์ œํ•œ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์—ฌ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ
    • ํ•ด๊ฒฐ์ฑ…: ์Šค๋ ˆ๋“œ ํ’€(Thread Pool) ์ ์šฉ ํ•ด์„œ ์ตœ์ ํ™”

๐Ÿ“š ๊ด€๋ จ ๋ฌธ์„œ: WebSocket ์„ฑ๋Šฅ ๋น„๊ต ๋ฐ ์ตœ์ ํ™”

3๏ธโƒฃ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์•ˆ์ •์„ฑ ๊ฐœ์„ 

  • ๋ฌธ์ œ์ : ๋ฉ”์‹œ์ง€ ์†Œ๋น„ ์‹คํŒจ ์‹œ DLQ(Dead Letter Queue)๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์ด๋™, ์ง€์†์ ์ธ ๋ˆ„์  ๋ฐœ์ƒ
  • ์›์ธ ๋ถ„์„:
    • Consumer๊ฐ€ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํŒจํ•˜๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ DLQ๋กœ ์ „์†ก๋˜๋ฉด์„œ ๋ฐฑ๋กœ๊ทธ๊ฐ€ ์Œ“์ž„
    • ํŠน์ • Consumer๊ฐ€ ์ง€์†์ ์œผ๋กœ ์‹คํŒจํ•  ๊ฒฝ์šฐ ์‹œ์Šคํ…œ์˜ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์†๋„ ์ €ํ•˜
  • ํ•ด๊ฒฐ์ฑ…:
    • ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ์ ์šฉ ์œผ๋กœ ์ผ์‹œ์ ์ธ ์žฅ์•  ์‹œ ์ ์ง„์  ๋ณต๊ตฌ ์‹œ๋„
    • Slack ์•Œ๋ฆผ ์‹œ์Šคํ…œ ์—ฐ๋™ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์žฅ์• ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ์กฐ์น˜ ๊ฐ€๋Šฅ

๐Ÿ“š ๊ด€๋ จ ๋ฌธ์„œ: RabbitMQ DLQ ๋ฐ ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ์ „๋žต

4๏ธโƒฃ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ์˜ WebSocket ํ†ต์‹  ๋ฌธ์ œ ํ•ด๊ฒฐ

  • ๋ฌธ์ œ์ : WebSocket ์—ฐ๊ฒฐ์ด ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ์‹คํŒจ
  • ์›์ธ ๋ถ„์„:
    • ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ws://localhost:8080์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ƒ ์ž‘๋™
    • ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•ด์•ผ ํ•˜์ง€๋งŒ ์„ค์ •์ด ๋ฏธํกํ•˜์—ฌ WebSocket ์—ฐ๊ฒฐ ์‹คํŒจ
  • ํ•ด๊ฒฐ์ฑ…:
    • Nginx ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •์„ ํ†ตํ•ด WebSocket ์š”์ฒญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ผ์šฐํŒ…
    • nginx.conf์—์„œ WebSocket ์—…๊ทธ๋ ˆ์ด๋“œ ํ—ค๋” ์„ค์ • ์ถ”๊ฐ€
    • ํด๋ผ์ด์–ธํŠธ์—์„œ wss://{๋„๋ฉ”์ธ}/chat์œผ๋กœ ์ ‘์†ํ•˜๋„๋ก ์ˆ˜์ •

5๏ธโƒฃ JWT ์ธ์ฆ ๋ฐ ๋ณด์•ˆ ๊ฐ•ํ™”

  • ๋ฌธ์ œ์ : JWT ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์‚ฌ์šฉ์ž ์„ธ์…˜์ด ์ข…๋ฃŒ๋จ
  • ์›์ธ ๋ถ„์„:
    • JWT๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ์…˜์„ ์œ ์ง€ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์žฌ๋กœ๊ทธ์ธ์ด ํ•„์š”
    • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ณ ๋ คํ•  ๋•Œ, ์ž๋™ ๊ฐฑ์‹  ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•จ
  • ํ•ด๊ฒฐ์ฑ…:
    • Refresh Token ์ ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ ์ž๋™ ์žฌ๋ฐœ๊ธ‰
    • Redis๋ฅผ ํ™œ์šฉํ•œ ์„ธ์…˜ ์บ์‹ฑ์œผ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ ์š”์ฒญ ์†๋„ ๊ฐœ์„ 
    • Spring Security์™€ JWT ํ•„ํ„ฐ ์ฒด์ธ ์ ์šฉํ•˜์—ฌ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๋กœ์ง ๊ฐœ์„ 

๐Ÿ“Œ ERD

teamssc

๐ŸŽฅ ์‹œ์—ฐ ์˜์ƒ: ์œ ํŠœ๋ธŒ ๋งํฌ

About

๐Ÿ’ปTeam Student Stuey Care system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.8%
  • Dockerfile 0.2%