Skip to content

kimsungmin2/Participatory-Trial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-04-29 แ„‹แ…ฉแ„’แ…ฎ 4 35 54


๐Ÿ  ๋ฐฐํฌ ์ฃผ์†Œ : ahwlsqja.store

๐Ÿ”ฅ ์ž‘์—… ๋กœ๊ทธ : Notion

๐Ÿ“น ์†Œ๊ฐœ ์˜์ƒ : ๋ฏธ์ •

๐Ÿ“œ ํŒ€ ๋ธŒ๋กœ์…” : Brochure


ํ”„๋ก ํŠธ์—”๋“œ

๋ฐฑ์—”๋“œ


๋ชฉ์ฐจ

1. ๐Ÿ“ Intro

  • ํ”„๋กœ์ ํŠธ๋ช… : ๊ตญ๋ฏผ ์ฐธ์—ฌ ์žฌํŒ
  • ๊ธฐ๊ฐ„ : 2024๋…„ 3์›” 25์ผ ~ 2024๋…„ 5์›” 1์ผ
  • ์ฃผ์ œ : ๊ทน์•…๋ฌด๋„ํ•œ ๋ฒ”์ฃ„์ž๋“ค์˜ ํŒ๊ฒฐ์„ ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ๋กœ ์ •ํ•˜๊ณ  , Ai๋ฅผ ํ†ตํ•ด ํŒ๋ก€๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ฃ„์งˆ์— ๋Œ€ํ•œ ํ˜•๋Ÿ‰์„ ๊ตญ๋ฏผ๋ผ๋ฆฌ ํˆฌํ‘œํ•ด๋ณด๊ณ  , ์œ ๋จธ ํ˜น์€ ์ •์น˜์  ์ด์•ผ๊ธฐ๋ฅผ ์žฌ๋ฏธ์žˆ๊ฒŒ ํ† ๋ก ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค. (๋งฅ๊ทธ๋ฆฌ๊ฑฐ vs ํ• ๋จธ๋‹ˆ 500๋ช… ๋งจ์†์œผ๋กœ ์ผ€์ด์ง€์—์„œ) , (์ „์ˆ˜๋ฏผ vs ๊น€์žฌ์—ฐ ์ฝ”๋”ฉ ๋Œ€๊ฒฐํ•˜๋ฉด ๋ˆ„๊ฐ€ ์ด๊ธฐ๋‚˜ )
  • ์ฃผ์š”๊ธฐ๋Šฅ :
    Web-Socket์„ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์ฐฌ๋ฐ˜ํˆฌํ‘œ

2. ๐Ÿ“’ERD

https://drawsql.app/teams/kim-14/diagrams/3-erd


3. ๐Ÿ’ฃ Troubleshooting


4. ๐Ÿคท๐Ÿปโ€โ™‚๏ธ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •

๊ธฐ์ˆ ์  ์˜์‚ฌ ๊ฒฐ์ •
์š”๊ตฌ์‚ฌํ•ญ ๊ณ ๋ฏผ ๊ธฐ์ˆ  ์‚ฌ์šฉ ์ด์œ 
๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ ์„ ํƒํ•œ ๊ธฐ์ˆ  :
Bull Queue


์„ ํƒ์ง€ :
Pessimistic Lock
Bull Queue
Apache Kafka
Bull Queue ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘์—…๋“ค์„ Queue์— ์ถ”๊ฐ€ํ•˜์—ฌ ์›Œ์ปค๋ฅผ ํ†ตํ•ด ๋™์‹œ์„ฑ์„ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Œ.
ํˆฌํ‘œ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋น„๊ด€์  ๋ฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋จ, ์ผ๊ด€์„ฑ์€ ํ™•์‹คํ•˜๊ฒŒ ๋ณด์žฅ
๋˜๋‚˜, ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ์ƒํƒœ์ผ ๊ฒฝ์šฐ Race Condition์ด๋‚˜ DeadLock์ด ์‰ฝ๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ,
๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์š”์ฒญ์„ FIFO๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” Bull Queue๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋จ.
MSA์˜ ๊ฒฝ์šฐ Kafka๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์œผ๋‚˜, ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹น์žฅ ํˆฌํ‘œ ์ˆ˜ ๊ด€๋ฆฌ์— ์žˆ์–ด,
๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Bull Queue๋ฅผ ์„ ํƒ
์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์„ ํƒํ•œ ๊ธฐ์ˆ :
Artillery


์„ ํƒ์ง€ :
Artillery
Apache JMeter
K6
์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ yaml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
socket.io ์—”์ง„ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ. CICD ์ž๋™ํ™” ๊ฐ€๋Šฅ.
๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์›€. (์ „์ฒด์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด๊ฑฐ์›€)
cloud๋ฅผ ํ†ตํ•ด ๋ณด๊ณ ์„œ๋ฅผ ๊ทธ๋ž˜ํ”„ ๋“ฑ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ.
๋กœ๊น…
๋ชจ๋‹ˆํ„ฐ๋ง
์„ ํƒํ•œ ๊ธฐ์ˆ :
Filebeat + ELK


์„ ํƒ์ง€ Filebeat + ELK
EFK (Elasticsearch
+ Fluentd + Kibana)
PLG (Promtail
+ Loki + Grafana)
์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์ž์œ ๋กœ์šด ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ winston์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ๋œ ๋กœ๊ทธ๋ฅผ
Filebeat๊ฐ€ ์ „๋‹ดํ•จ์œผ๋กœ์จ logstash์˜ ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ , ์ˆ˜์ง‘๋œ Log๋ฅผ ์‹œ๊ฐํ™”ํ•จ์œผ๋กœ์จ
๊ฐœ๋ฐœ์ž๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง„๋‹จํ•˜๊ณ  ํŒ๋‹จํ•˜๋Š”๋ฐ ์šฉ์ดํ•จ Kibana์˜ ๊ฐ•๋ ฅํ•œ ๋กœ๊ทธ ๋ถ„์„
๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ด€๋ฆฌ์ž๊ฐ€ ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•จ ๋น„๊ต์  ๊ฐ€๋ฒผ์šด
PLG๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ์œผ๋‚˜, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๋˜ํ•œ Elasticsearch์˜ ์ธ๋ฑ์‹ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ
์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ELK๋ฅผ ์„ ํƒ
DB ์„ ํƒํ•œ ๊ธฐ์ˆ :
PostgreSQL
MongoDB


์„ ํƒ์ง€:
MySQL
PostgreSQL
MongoDB
PostgreSQL
์ƒ๋Œ€์ ์œผ๋กœ ์“ฐ๊ธฐ ์ž‘์—…์—์„œ ๋†’์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” PostgreSQL๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํˆฌํ‘œ, ์กฐํšŒ์ˆ˜,
์ข‹์•„์š” ๊ธฐ๋Šฅ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ ์šฉ์ดํ•จ ๋ณต์ œ์— ์žˆ์–ด์„œ ์†๋„๊ฐ€ ์ข€ ๋”
๋น ๋ฅธ ๋น„๋™๊ธฐ์‹ ๋ณต์ œ๋ฅผ ํ†ตํ•˜์—ฌ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋†’ํžˆ๊ณ  , ๊ฒŒ์‹œํŒ์ด ๋งŽ์€ ์›น์‚ฌ์ดํŠธ ํŠน์„ฑ์ƒ ๊ด€๊ณ„ํ˜•
DBMS๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จ ์ฐจํ›„ NoSQL๊ณผ ๊ฐ™์€ ํ‚ค-๊ฐ’ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ
MySQL๋Œ€์‹  PostgreSQL์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ์›ํ™œํžˆ ๊ฐ€๋Šฅํ• ๊ฑฐ๋ผ๊ณ  ํŒ๋‹จ๋จ
MongoDB
๋Œ€ํ‘œ์ ์ธ Nosql๋กœ์จ ์ ‘๊ทผํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ  ์ฑ„ํŒ…์„ ์ €์žฅํ•จ์— ์žˆ์–ด์„œ Postgresql๋ณด๋‹ค ๋น ๋ฅผ๊ฑฐ๋ผ๊ณ 
ํŒ๋‹จํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ
ChatBot ์„ ํƒํ•œ ๊ธฐ์ˆ :
SentenceTransformer


์„ ํƒ์ง€:
gpt 3.5 api
lamma2 ko
GPT 3.5 API์™€ Google Gemma๋ฅผ ํ†ตํ•œ fine-tuning ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ฒ•๋ฅ 
๋ถ„์•ผ์˜ ๋„๋ฉ”์ธ ์ง€์‹์ด ๋ถ€์žฌํ•œ ์ƒํƒœ์—์„œ ํŒ๋ก€ ๋ฐ์ดํ„ฐ์˜ ์ค‘์š”์„ฑ์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„
๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฒ•๋ฅ  ๋„๋ฉ”์ธ ํŠน์„ฑ์ƒ ๋ฒ•๋ฅ  ์šฉ์–ด๊ฐ€ ๊ฐ–๋Š” ๋ฒ•์  ํ•ด์„์„ ์–ธ์–ด ๋ชจ๋ธ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ
ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฌ์šฉ์ž๋กœ์„œ ์ง์ ‘ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฒ•๋ฅ  ํ•ด์„์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ
์—ญ์‹œ ํšจ๊ณผ์ ์ด์ง€ ์•Š๋‹ค๋Š” ๋ฌธ์ œ์ ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ๋ฒ•๋ฅ  ๋‹จ์–ด์™€ ๋ฌธ๊ตฌ๊ฐ€ ๊ฐ–๋Š” ๋ณต์žก์„ฑ๊ณผ
ํŠน์ˆ˜์„ฑ ๋•Œ๋ฌธ์—, ์ „๋ฌธ์ ์ธ ๋ฒ•๋ฅ  ์ง€์‹ ์—†์ด๋Š” ์–ธ์–ด ๋ชจ๋ธ์„ ํ†ตํ•œ ์ •ํ™•ํ•œ ๋ฒ•๋ฅ  ํ•ด์„์ด๋‚˜ ํŒ๋ก€ ๋ถ„์„์—
ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
์ฑ„ํŒ… ์•„ํ‚คํ…์ณ ์„ ํƒํ•œ ๊ธฐ์ˆ :
Redis


์„ ํƒ์ง€:
Apache Kafka
Redis
๊ตฌํ˜„์˜ ๋ณต์žก์„ฑ์ด ๋‚ฎ๊ณ  ์ด๋ฏธ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ ˆ๋””์Šค์˜ ์‚ฌ์šฉ์„ ๊ตฌ์ƒํ•œ ์ƒํƒœ์—์„œ ์ ์šฉํ•˜๊ธฐ ๊ฐ€ ์ข‹์•˜๊ณ ,
Pub/Sub์„ ์ด์šฉํ•ด์„œ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ๊ณผ ๋ฉ”์‹œ์ง€์— ์ ‘๊ทผ์ด ์ข‹์•„์„œ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Redis
๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค์™€ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Redis์˜ ํผ๋ธ”๋ฆฌ์‹œ/์„œ๋ธŒ์Šคํฌ๋ผ์ด๋ธŒ(pub/sub) ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตํ™˜ํ•˜๊ณ 
๊ฐ ์ฑ„ํŒ… ๋ฃธ์„ ์ฑ„๋„๋กœ ๊ตฌ์„ฑํ•˜๊ณ , ์‚ฌ์šฉ์ž๋“ค์ด ํ•ด๋‹น ์ฑ„๋„์„ ๊ตฌ๋…ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ์•Œ๋ฆผ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ
์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฑ„ํŒ… ์„ ํƒํ•œ ๊ธฐ์ˆ :
Socket.io


์„ ํƒ์ง€:
Socket.io
WebSocket
์—ฌ๋Ÿฌ ๊ณณ์—์„œ ํ† ๋ก ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ณ„ํšํ•˜์˜€๊ณ , ํŠนํžˆ ๋ฃธ(room) ๊ธฐ๋Šฅ์„ ํ†ตํ•œ
๊ณ ๋„ํ™”๋ฅผ ์—ผ๋‘์— ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ€์šฉ์„ฑ์„ ํ•จ๊ป˜ ๊ณ ๋ คํ•˜๋ฉด์„œ Socket.io๋ฅผ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Socket.io
์›น ์†Œ์ผ“ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋Š” Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ์ด ๋Š๊ธธ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์žฌ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐ€์šฉ์„ฑ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋ฃธ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„ ๋ณต์žก์„ฑ์ด ๋‚ฎ์•„, ์ฑ„ํŒ… ๊ธฐ๋Šฅ ํ™•์žฅ์— ์žˆ์–ด ์œ ๋ฆฌํ•œ ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €์™€์˜ ํ˜ธํ™˜์„ฑ์ด ์ข‹์•„, ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋ฌธ์ œ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” HTML5 ์ด์ „ ๋ฒ„์ „์—์„œ๋„ ์›น์†Œ์ผ“ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํˆฌํ‘œ ์„ ํƒํ•œ ๊ธฐ์ˆ :
Socket.io


์„ ํƒ์ง€:
Socket.io
Polling
์ €ํฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ํˆฌํ‘œ ์‹œ์Šคํ…œ์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ํˆฌํ‘œ ํ˜„ํ™ฉ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค˜์•ผํ•จ.
์ด๋ฅผ ์œ„ํ•ด ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” Polling ๋ฐฉ์‹์€ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ํˆฌํ‘œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ๋งŽ์€ Polling ์š”์ฒญ์ด ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๊ณ ์„ฑ๋Šฅ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ์ œ๊ณตํ•˜๋Š” Socket.io๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Socket.io
์›น ์†Œ์ผ“ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋Š” Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ์ด ๋Š๊ธธ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์žฌ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐ€์šฉ์„ฑ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌ
๋ฃธ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„ ๋ณต์žก์„ฑ์ด ๋‚ฎ์•„, ์ฑ„ํŒ… ๊ธฐ๋Šฅ ํ™•์žฅ์— ์žˆ์–ด ์œ ๋ฆฌํ•œ ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €์™€์˜ ํ˜ธํ™˜์„ฑ์ด ์ข‹์•„, ์˜ค๋ž˜๋œ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋ฌธ์ œ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” HTML5 ์ด์ „ ๋ฒ„์ „์—์„œ๋„ ์›น์†Œ์ผ“ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์•Œ๋ฆผ ์„ ํƒํ•œ ๊ธฐ์ˆ  :
FCM


์„ ํƒํ•œ ์ด์œ :
Socket.io+Redis
FCM
WebPush
์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•ซํ•œ ํˆฌํ‘œ๋ฅผ ์•Œ๋ ค์ค˜์•ผ ํ•˜๊ธฐ์— ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ์— ์ ํ•ฉํ•œ ๊ธฐ์ˆ ๋“ค์„ ์ฐพ์•„๋ณด์•˜๊ณ  ๊ทธ ์ค‘ ์ตœ์ ํ™”๊ฐ€
์ œ์ผ ์ž˜ ๋˜๊ณ  , ์‹ค์‹œ๊ฐ„๊ณผ ๊ทผ์ ‘ํ•œ FCM์„ ์„ ํƒํ•จ

5. โš’ Tech Stack


๋ถ„๋ฅ˜ ๊ธฐ์ˆ  ๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Runtime Node.js Language TypeScript
Framework Nest.js DB PostgreSQL(AWS RDS), Redis,MongoDB
Deployment Aws Ecs Test Jest, Supertest, Artillery
์ฑ„ํŒ…,ํˆฌํ‘œ socket.io ๋กœ๊น… Filebeat + ELK
์•Œ๋ฆผ FCM ChatBot SentenceTransformer

6. ๐Ÿ•ธ Architecture

image


7. ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆTeam Members

Position Name Github Tech Blog
Backend ๊น€์žฌ์—ฐ APD-Kim https://velog.io/@lol0620/posts
Backend ๊น€์„ฑ๋ฏผ kimsungmin2 https://velog.io/@anrl8913/posts
Backend ๋ชจ์ง„์˜ ahwlsqja https://velog.io/@bubblegum95
Backend ํ™ฉ์„ธ๋ฏผ bubblegum95 https://velog.io/@bubblegum95
Backend ๋ฐ•์žฌํ˜• jaecoder222 https://dev-jacoder222.tistory.com/

8. ๐Ÿ’พ๊ธฐ์ˆ ์ ์ธ ๋„์ „

๐Ÿ“Commit Convention

Commit Convention ํŽผ์ณ๋ณด๊ธฐ

โ— ์ œ๋ชฉ์€ ์ตœ๋Œ€ 30๊ธ€์ž์ดํ•˜๋กœ ์ž‘์„ฑ: ex) feat: Add Key mapping
โ— ๋ณธ๋ฌธ์€ ์•„๋ž˜์— ์ž‘์„ฑ

--- <ํƒ€์ž…> ๋ฆฌ์ŠคํŠธ ---

feat        : ๊ธฐ๋Šฅ (์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ)  
fix         : ๋ฒ„๊ทธ (๋ฒ„๊ทธ ์ˆ˜์ •)  
refactor    : ๋ฆฌํŒฉํ† ๋ง  
design      : CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ  
comment     : ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ  
style       : ์Šคํƒ€์ผ (์ฝ”๋“œ ํ˜•์‹, ์„ธ๋ฏธ์ฝœ๋ก  ์ถ”๊ฐ€: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ ์—†์Œ)  
docs        : ๋ฌธ์„œ ์ˆ˜์ • (๋ฌธ์„œ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ, README)  
test        : ํ…Œ์ŠคํŠธ (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ ์—†์Œ)  
chore       : ๊ธฐํƒ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ (๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ •, assets, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ๋“ฑ)  
init        : ์ดˆ๊ธฐ ์ƒ์„ฑ  
rename      : ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ ํ•œ ๊ฒฝ์šฐ  
remove      : ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ 

--- <๊ผฌ๋ฆฌ๋ง> ํ•„์ˆ˜์•„๋‹Œ ์˜ต์…˜ ---

Fixes        : ์ด์Šˆ ์ˆ˜์ •์ค‘ (์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)  
Resolves     : ์ด์Šˆ ํ•ด๊ฒฐํ–ˆ์„ ๋•Œ ์‚ฌ์šฉ  
Ref          : ์ฐธ๊ณ ํ•  ์ด์Šˆ๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ  
Related to   : ํ•ด๋‹น ์ปค๋ฐ‹์— ๊ด€๋ จ๋œ ์ด์Šˆ๋ฒˆํ˜ธ (์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)  
ex) Fixes: #47 Related to: #32, #21

๐Ÿ—’๏ธCode Convention

Code Convention ํŽผ์ณ๋ณด๊ธฐ

--- Prettier & Eslint ์ž๋™ ์ ์šฉ ---

singleQuote: true โ†’ ์ž‘์€ ๋”ฐ์˜ดํ‘œ(') ์‚ฌ์šฉ
trailingComma: "all" โ†’ ๊ฐ์ฒด ๋˜๋Š” ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ ๋’ค์— ํ•ญ์ƒ ์‰ผํ‘œ(,) ์ถ”๊ฐ€
tabWidth: 2 โ†’ ๋“ค์—ฌ์“ฐ๊ธฐ ํƒญ์˜ ๋„ˆ๋น„ 2
semi: true โ†’ ๋ฌธ์žฅ์˜ ๋์— ํ•ญ์ƒ ์„ธ๋ฏธ์ฝœ๋ก (;) ์ถ”๊ฐ€
arrowParens: "always" โ†’ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ•ญ์ƒ ๊ด„ํ˜ธ(ex, (param)=>expression) ์ถ”๊ฐ€ 
endOfLine: "auto" โ†’ ์ž๋™์œผ๋กœ ํ–‰ ์ข…๊ฒฐ ๋ฌธ์ž๋ฅผ ์„ ํƒํ•˜๋„๋ก ์„ค์ •(์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž(\n)โ†’์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž(\r\n))



header

Nest is MIT licensed.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published