/Aquh

Primary LanguageJava

๋ชฉ์ฐจ

์†Œ๊ฐœ ๊ตฌํ˜„ ๋งˆ์น˜๋ฉฐ
๐Ÿ“– ๊ฐœ์š” ๐ŸŽฏ ์ฃผ์š” ํŽ˜์ด์ง€ ๋ฐ ๊ธฐ๋Šฅ ๐Ÿ‘ฆ ํŒ€์›
๐Ÿ’ก ํ”„๋กœ์ ํŠธ ๊ธฐํš ๐Ÿš€ ๊ธฐ๋Šฅ์‹œ์—ฐ ๐Ÿ“ฃ ์†Œ๊ฐ
๐ŸŒต ๋นŒ๋“œ ํ™˜๊ฒฝ ๐Ÿ‘€ ์‚ฐ์ถœ๋ฌผ ๐ŸŒฑ ํšŒ๊ณ  ๊ธฐ๋ก
๐Ÿ“š ํŒŒ์ผ ๊ตฌ์กฐ๋„

์†Œ๊ฐœ

๐Ÿ“– ๊ฐœ์š”

๐Ÿ‘ SSAFY 9๊ธฐ 2ํ•™๊ธฐ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ ๐Ÿ‘
WEB-RTC ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•ด๋ณด์ž

2023.07.10 ~ 2023.08.18 (6์ฃผ)


๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐Ÿ’ก ํ”„๋กœ์ ํŠธ ๊ธฐํš

UCC

Aquah UCC


๋ฐฐ๊ฒฝ

"์ทจ๋ฏธ๋ฅผ ๊ณต์œ ํ•˜๋ ค๋ฉด ๊ผญ ๋งŒ๋‚˜์•ผํ•ด? ๋„ˆ๋ฌด ๋ถ€๋‹ด์Šค๋Ÿฌ์šด๋ฐ..."

๊ธฐ์กด์˜ ์ทจ๋ฏธ ๊ณต์œ  ์„œ๋น„์Šค๋“ค์€ ์˜คํ”„๋ผ์ธ ๋ชจ์ž„์„ ์ „์ œ๋กœ ์„œ๋น„์Šคํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ฏ์„  ์‚ฌ๋žŒ๊ณผ์˜ ๋งŒ๋‚จ์ด ๋ถ€๋‹ด๋˜๊ณ  ์‹œ๊ฐ„์„ ๋ณด๋‹ค ๋” ๋งŽ์ด ํˆฌ์žํ•˜๊ฒŒ ๋˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Aquh์—์„œ๋Š” ๊ฐ€๋ณ๊ฒŒ ๋‹ค์–‘ํ•œ ์ทจ๋ฏธ๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"ํ™”์ƒ ํ™”๋ฉด์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ๋ฏธ๋„ ๋งŽ์€ ๊ฒƒ ๊ฐ™์€๋ฐ!"

๋œจ๊ฐœ์งˆ, ๋“œ๋กœ์ž‰ ๋“ฑ์˜ ๊ณต์˜ˆ ๋ถ„์•ผ ์ทจ๋ฏธ๋‚˜ ์ถ•๊ตฌ, ๋†๊ตฌ ๋“ฑ ์•ผ์™ธ ์Šคํฌ์ธ  ์šด๋™์ด๋”๋ผ๋„ ๋„๊ตฌ/์˜ท ์ฐฉ์šฉ๋ฒ•์ด๋‚˜ ๊ตฌ๋งค ์ „ ๋น„๊ต ๋“ฑ ์˜จ๋ผ์ธ ์ •๋ณด ๊ณต์œ  ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

"์ด๋Ÿฐ ์ทจ๋ฏธ๋Š” ๊ฐ™์ด ํ•  ๋งŒํ•œ ์‚ฌ๋žŒ๋“ค์ด ์—†๋„ค..."

๋Œ€์ค‘์ ์œผ๋กœ ๋งŽ์ด ์ฆ๊ธฐ๋Š” ์ทจ๋ฏธ๊ฐ€ ์•„๋‹Œ, ์ž์‹ ๋งŒ์˜ ํŠน๋ณ„ํ•œ ์ทจ๋ฏธ๋‚˜ ์ž ๊น ๊ด€์‹ฌ์ด ์ƒ๊ธด ๋ถ„์•ผ๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์ ‘ํ•˜๋Š” ์šฉ๋„๋กœ Aquh๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AI ์ธ๋„ค์ผ ์ƒ์„ฑ์œผ๋กœ ์‰ฝ๊ฒŒ ํŠน๋ณ„ํ•œ ์ทจ๋ฏธ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐ŸŒต ๋นŒ๋“œ ํ™˜๊ฒฝ

FrontEnd BackEnd Database Infra
Node.js 18.16.1 Java 17 (Azul Zulu version 17.0.7) PostgreSQL AWS EC2 (Ubuntu 20.04 LTS)
React.js 18.2.0 Spring Boot 3.1.1 Dbeaver AWS S3 Bucket
react-dom 18.2.0 Gradle 8.1.1 Redis Nginx 1.18.0
react-icons 4.10.1 JPA MongoDB Jenkins 2.401.2 LTS
react-modal 3.16.1 IntelliJ IDEA 2023.1.3
(Ultimate Edition)
Docker 23.0.6
react-router-dom 6.14.2 lombok Docker Compose 2.17.3
react-scripts 5.0.1 mail
react-select 5.7.4 JWT
Axios 1.4.0
Recoil 0.7.7
recoil-persist 5.1.0
styled-components 6.0.6
yarn 1.22.19
openvidu-browser 2.28.0
web-vitals 2.1.4

๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๊ตฌํ˜„

๐ŸŽฏ ์ฃผ์š” ํŽ˜์ด์ง€ ๋ฐ ๊ธฐ๋Šฅ

๋ฉ”์ธ ํŽ˜์ด์ง€

๋ฉ”์ธํŽ˜์ด์ง€

์†Œ์…œ ๋กœ๊ทธ์ธ & ํšŒ์›๊ฐ€์ž…

๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž…
๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž…
์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„์œ„ํ•ด ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋„ค์ด๋ฒ„์™€ ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ํšŒ์›๊ฐ€์ž…์˜ ๊ฒฝ์šฐ ํ™˜์˜ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉฐ,
๋‹‰๋„ค์ž„์„ ์ง€์ •ํ•˜๋ฉด ๊ฐ€์ž…์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
๋‹‰๋„ค์ž„์€ ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ 1์ฐจ,
์ค‘๋ณตํ™•์ธ์œผ๋กœ 2์ฐจ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ”ผ๋“œ ํŽ˜์ด์ง€ & ๋งˆ์ด ํŽ˜์ด์ง€

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

๋˜ํ•œ ํŠน์ • ์ทจ๋ฏธ๋กœ ํ™”์ƒ์ฑ„ํŒ…์„ 5๋ฒˆ ์ฐธ์—ฌํ•˜๋Š” ๋“ฑ
ํ™œ๋™์— ๋”ฐ๋ผ ์—…์ ์ธ ์‹ฌ๋ณผ์„ ๋ถ€์—ฌ๋ฐ›์œผ๋ฉฐ,
๋Œ€ํ‘œ ์‹ฌ๋ณผ์„ ์žฅ์ฐฉํ•ด ํ”„๋กœํ•„์„ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‹จ์—์„œ ๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ํ”ผ๋“œ๋ฅผ ๋ชจ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ๋ฒจ ๋ณ„ ์ผ€๋ฆญํ„ฐ

Lv1. ์•„๊ธฐ๋ฐฉ์šธ Lv2. ์„ฑ์ธ๋ฐฉ์šธ Lv3. ๊ธฐ์‚ฌ๋ฐฉ์šธ Lv4. ๋ถ€์ž๋ฐฉ์šธ Lv5. ์ž„๊ธˆ๋ฐฉ์šธ
์•„๊ธฐ๋ฐฉ์šธ ์„ฑ์ธ๋ฐฉ์šธ ๊ธฐ์‚ฌ๋ฐฉ์šธ ๋ถ€์ž๋ฐฉ์šธ ์ž„๊ธˆ๋ฐฉ์šธ

ํ™”์ƒ์ฑ„ํŒ… ํŽ˜์ด์ง€

ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ๋ฐ ์ƒ์„ฑ ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ ๋‚ด๋ถ€
์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก
ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ1
ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ2
ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ3
ํ™”์ƒ์ฑ„ํŒ…
ํ™”์ƒ์ฑ„ํŒ…2
์ฑ„ํŒ…
ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์—์„œ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ฑ„ํŒ…๋ฐฉ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ‚ค์›Œ๋“œ๋ฅผ ๋„ฃ์œผ๋ฉด AI ์ธ๋„ค์ผ์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์นด์นด์˜ค ์ด๋ฏธ์ง€ ์ƒ์„ฑ AI, Karlo API๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ ์ œ๋ชฉ, ๋‚ด์šฉ ๋ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ƒ์„ฑ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ ๋‚ด๋ถ€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋“ค์˜ ์นด๋ฉ”๋ผ์™€ ์ผ€๋ฆญํ„ฐ ๋ฐ ์•„์ด๋””๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ ,
์นด๋ฉ”๋ผ,๋งˆ์ดํฌ๋ฅผ on/off ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฑ„ํŒ…์€ MongoDB์™€ Spring Flux๋กœ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ฑ„ํŒ…์€ ์—ฐ์†์œผ๋กœ ์น  ๋•Œ๋Š” ์ด๋ฆ„๊ณผ ์ผ€๋ฆญํ„ฐ๊ฐ€ ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐Ÿš€ ๊ธฐ๋Šฅ์‹œ์—ฐ

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

๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐Ÿ‘€ ์‚ฐ์ถœ๋ฌผ

์š”๊ตฌ์‚ฌํ•ญ๋ช…์„ธ์„œ API ๋ช…์„ธ์„œ ์‹ฌ๋ณผ ์ƒ์„ธ
์š”๊ตฌ์‚ฌํ•ญ๋ช…์„ธ์„œ API๋ช…์„ธ์„œ
API ์ƒ์„ธ
์‹ฌ๋ณผ1
์‹ฌ๋ณผ2
์‹ฌ๋ณผ3
์™€์ด์–ด ํ”„๋ ˆ์ž„ ๋ชฉ์—… ๋””์ž์ธ ERD
์™€์ด์–ดํ”„๋ ˆ์ž„ ๋ชฉ์—…๋””์ž์ธ ERD
์‹œ์Šคํ…œ ๊ตฌ์กฐ๋„ ๊ฐ„ํŠธ์ฐจํŠธ ์ง€๋ผ ์ด์Šˆ
์‹œ์Šคํ…œ๊ตฌ์กฐ๋„ ๊ฐ„ํŠธ์ฐจํŠธ ์ง€๋ผ์ด์Šˆ

์ง€๋ผ ๋ฒˆ๋‹ค์šด ์ฐจํŠธ

2์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ 3์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ 4์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ
๋ฒˆ๋‹ค์šด์ฐจํŠธ2 ๋ฒˆ๋‹ค์šด์ฐจํŠธ3 ๋ฒˆ๋‹ค์šด์ฐจํŠธ4
5์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ 6์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ
๋ฒˆ๋‹ค์šด์ฐจํŠธ5 ๋ฒˆ๋‹ค์šด์ฐจํŠธ6

์ตœ์ข…๋ฐœํ‘œ ppt

์ตœ์ข…๋ฐœํ‘œppt


๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐Ÿ“š ํŒŒ์ผ ๊ตฌ์กฐ๋„

FrontEnd

๐Ÿ“ฆFront-End
 โ”— ๐Ÿ“‚aquh
 โ”ƒ โ”ฃ ๐Ÿ“‚.cert
 โ”ƒ โ”ฃ ๐Ÿ“‚.storybook
 โ”ƒ โ”ฃ ๐Ÿ“‚.vscode
 โ”ƒ โ”ฃ ๐Ÿ“‚.yarn
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚releases
 โ”ƒ โ”ฃ ๐Ÿ“‚public
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚favicon
 โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚assets
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚components
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚bubble
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚feed
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚search
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚ui
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚users
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚video
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚chat
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚tool
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚font
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚pages
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚store
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚stories
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚utils
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚api

BackEnd

๐Ÿ“ฆBack-End
 โ”— ๐Ÿ“‚8alette
 โ”ƒ โ”ฃ ๐Ÿ“‚convention
 โ”ƒ โ”ฃ ๐Ÿ“‚gradle
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚wrapper
 โ”ƒ โ”ฃ ๐Ÿ“‚src
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚main
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚com
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚ssafy
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚team8alette
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚domain
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚bubble
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚session
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚handler
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚exceptionjava
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚key
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚request
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚response
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚repository
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚tools
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚key
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚request
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚response
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚repository
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚feed
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚handler
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚exception
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚key
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚request
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚response
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚hashtag
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚Entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚Key
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚member
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚alarm
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao\
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚auth
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚handler
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚exception
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚util
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚follow
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚handler
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚exception
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚Entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚record
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚response
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚report
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚symbol
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚controller
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚model
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dao
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚dto
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚grant
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚entity
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚key
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚request
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚response
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚symbol
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚service
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚global
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚annotation
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚config
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚exception
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚handler
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚interceptor
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚util
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚resources
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚test
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚java
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚com
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚ssafy
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚team8alette

๐Ÿ“ฆDataBase
 โ”ฃ ๐Ÿ“œAQuh.sql
 โ”ฃ ๐Ÿ“œsybol_table.sql
 โ”— ๐Ÿ“œsymbol data.xlsx

๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๋งˆ์น˜๋ฉฐ

๐Ÿ‘ฆ ํŒ€์›

๊ฐ•์ˆ˜๋ฏผ(ํŒ€์žฅ) ๊น€์žฌ์› ๋ฐ•์ง€์˜ ์„คํ˜œํ˜„ ์กฐ์„ฑ๋ฝ ์ตœ๊ทœํ˜ธ
๊ฐ•์ˆ˜๋ฏผ ๊น€์žฌ์› ๋ฐ•์ง€์˜ ์„คํ˜œํ˜„ ์กฐ์„ฑ๋ฝ ์ตœ๊ทœํ˜ธ
BackEnd
PM
BackEnd
Infra
FrontEnd
Design
FrontEnd
PM
BackEnd BackEnd

ํŒ€์› ์—ญํ•  ์ƒ์„ธ

BackEnd

๊ฐ•์ˆ˜๋ฏผ

  • Database
    • ERD ์ž‘์„ฑ
    • PostgreSQL ๊ตฌ์ถ•
    • MongoDB(์ฑ„ํŒ…) ๊ตฌ์ถ•
    • Redis ๊ตฌ์ถ•
  • ๋””์ž์ธ
    • ๋ชฉ์—… ๋””์ž์ธ ์ธ์Šคํ„ด์Šค ์ ์šฉ
    • ์ฑ„ํŒ… ๋””์ž์ธ
  • API
    • ํˆฌํ‘œ ๊ธฐ๋Šฅ
    • OX ๊ธฐ๋Šฅ
    • ๋ฒ ์ŠคํŠธ๋ฉค๋ฒ„ ์„ ์ • ๊ธฐ๋Šฅ
    • Todo ๊ธฐ๋Šฅ
    • ์ฑ„ํŒ… ๊ธฐ๋Šฅ (Spring WebFlux
  • FE
    • ์ฑ„ํŒ… ๊ตฌํ˜„
    • OpenVidu ์นด๋ฉ”๋ผ,๋งˆ์ดํฌ on/off ๊ธฐ๋Šฅ

๊น€์žฌ์›

  • Infra
    • Gitlab - jenkins CI/CD ๊ตฌ์ถ•
    • EC2, Dokcer ์„œ๋ฒ„ ๊ตฌ์ถ•
  • OpenVidu ์ ์šฉ ๋ฐ ๊ธฐ๋ณธ ์ฝ”๋“œ ๊ตฌํ˜„
  • FE : ๋ฒ„๋ธ” ์ƒ์„ธ, ํ™”์ƒ์ฑ„ํŒ…๋ฐฉ

์กฐ์„ฑ๋ฝ

  • SpringBoot
  • JPA
  • API
    • ํšŒ์› : ๊ฐ€์ž…, ํƒˆํ‡ด, ๋กœ๊ทธ์ธ, ์ˆ˜์ •
    • ๋ฒ„๋ธ” : ์ƒ์„ฑ, ์‹œ์ž‘, ์ข…๋ฃŒ
  • FE
    • Recoil

์ตœ๊ทœํ˜ธ

  • SpringBoot
  • JPA
  • API
    • ์‹ฌ๋ณผ
    • ๋งˆ์ดํŽ˜์ด์ง€
    • ํ”ผ๋“œ

FrontEnd

๋ฐ•์ง€์˜

  • ๋””์ž์ธ
    • ์™€์ด์–ด ํ”„๋ ˆ์ž„
    • ๋ชฉ์—…
    • ์ผ€๋ฆญํ„ฐ
  • FE
    • ๋ฉ”์ธํŽ˜์ด์ง€
    • ๋กœ๊ทธ์ธ
    • ๋งˆ์ดํŽ˜์ด์ง€
    • ๋ฒ„๋ธ” ์ƒ์„ฑ
    • ๋ฒ„๋ธ” ๋ฆฌ์ŠคํŠธ
    • ๋ฒ„๋ธ” ์ƒ์„ธ

์„คํ˜œํ˜„

  • ๋””์ž์ธ
    • ์™€์ด์–ด ํ”„๋ ˆ์ž„
    • ๋ชฉ์—…
  • FE
    • ํšŒ์›๊ฐ€์ž…
    • ํ”ผ๋“œ
    • ๋ฒ„๋ธ” ์ฐธ์—ฌ
    • ๋ฒ„๋ธ” ๋‚ด๋ถ€

๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐Ÿ“ฃ ์†Œ๊ฐ

๊ฐ•์ˆ˜๋ฏผ

ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ „๋ถ€ ๋‹ด๋‹นํ–ˆ๋Š”๋ฐ, ์•„์ฃผ ์ข‹์€ ๊ฒฝํ—˜์ด ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ERD์ž‘์„ฑ๋ถ€ํ„ฐ PostgreSQL ์‚ฌ์šฉ, JWT ํ† ํฐ์„ ์œ„ํ•œ Redis ์‚ฌ์šฉ, ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์„ ์œ„ํ•œ MongoDB ์‚ฌ์šฉ์œผ๋กœ ์ด์ œ ์›ฌ๋งŒํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์€ ๋ฌด๋ฆฌ ์—†์ด ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ฐฑ์—”๋“œ ๋‹ด๋‹น์œผ๋กœ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ๋ฆฌ์•กํŠธ๋ฅผ ๊ฑฐ์˜ ๋ฐ˜๋ฐ˜ ๋งก๊ฒŒ๋˜์–ด์„œ ํž˜๋“ค๊ธฐ๋„ ํ–ˆ์ง€๋งŒ ์ข‹์€ ๊ฒฝํ—˜์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ JPA์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ํ•™์Šต์ด ํ•„์š”ํ•˜๋‹ค ๋Š๊ผˆ๊ณ , ๋ฆฌ์•กํŠธ๋ฅผ ๊ฑฐ์˜ ๊ฐœ๋…์„ ๋ชจ๋ฅด๊ณ  ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„์— ๊ธ‰๊ธ‰ํ•ด์„œ ์žก์•˜๋”๋‹ˆ ์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋Š” ์š•์‹ฌ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฐฑ์—”๋“œ๋ฅผ ๋ณด์กฐํ•˜๋ฉฐ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์„ ๋ฉ”์ธ์œผ๋กœ ์ง„ํ–‰ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊น€์žฌ์›

์ž๋ฐ” ๋ฐฑ์—”๋“œ์—์„œ ๋ฒ—์–ด๋‚˜ ์ธํ”„๋ผ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๋งŽ์€ ์–ด๋ ค์›€๋„ ์žˆ์—ˆ์œผ๋‚˜ ์˜คํžˆ๋ ค ๋”์šฑ ์„ฑ์žฅํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
AWS, Docker Container, ๋„คํŠธ์›Œํฌ ๋“ฑ ๋ฐฑ์—”๋“œ์— ํ•„์ˆ˜์ ์ธ ์ง€์‹์„ ๋ฐฐ์› ๊ณ  CICD๋ฅผ ๋งก์€ ๋•๋ถ„์— ํ”„๋ก ํŠธ์™€ ๋ฐฑ๊ณผ ๊ธด๋ฐ€ํžˆ ์†Œํ†ตํ•  ๊ธฐํšŒ๊ฐ€ ๋งŽ์•„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๋Šฅ๋ ฅ๋„ ๋งŽ์ด ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—๋Š” ์ž๋ฐ”ํ™˜๊ฒฝ์—์„œ ๋ฒ—์–ด๋‚˜ C#, ๋‹ท๋„ทํ”„๋ ˆ์ž„์›Œํฌ๋“ฑ ๋”์šฑ ๋„“๊ณ  ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฐ•์ง€์˜

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

์„คํ˜œํ˜„

2ํ•™๊ธฐ ์ฒซ ํ”„๋กœ์ ํŠธ์˜ ์‹œ์ž‘์œผ๋กœ ํŒ”๋ ˆํŠธ์—์„œ ํ•จ๊ป˜ ํ•œ ์‹œ๊ฐ„๋“ค์ด ์—ฌ๋Ÿฌ๋ชจ๋กœ ๋งŽ์€ ๊ฒฝํ—˜๊ณผ ์ถ”์–ต์œผ๋กœ ๋‚จ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธฐํšŒ์— ๋ฐฐ์šฐ๊ณ  ๋Š๋‚€ ์ ๋“ค์„ ํ† ๋Œ€๋กœ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—๋Š” ๋” ์„ฑ์žฅํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค !
๋‹ค๋“ค ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

์กฐ์„ฑ๋ฝ

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‹ค๋ ฅ๋„ ๋งŽ์ด ์˜ฌ๋ž์ง€๋งŒ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
JPA์˜ ๊ฐœ๋…, ์‚ฌ์šฉ๋ฒ•์ด๋ผ๋˜์ง€, ์Šคํ”„๋ง์ž์ฒด์— ๋Œ€ํ•œ ์ดํ•ด๋„, DTO, ENTITY, VO์˜ ๊ตฌ๋ถ„, ์Šคํ”„๋ง์‹œํ๋ฆฌํ‹ฐ ๋“ฑ ๋งŽ์€ ๋ถ€๋ถ„๋“ค์„ ๋” ํ•™์Šตํ•ด์•ผํ•จ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋•Œ๋Š” ์ด๋Ÿฐ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋“ค์„ ์ฑ„์›Œ์„œ ์ข€๋” ์™„์„ฑ๋„ ์žˆ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทœํ˜ธ

๋ฐฉํ•™๋•Œ ์กฐ๊ธˆ ๋” ์—ด์‹ฌํžˆ ๊ณต๋ถ€๋ฅผ ํ–ˆ์œผ๋ฉด 2ํ•™๊ธฐ ์ฒซ ํ”„๋กœ์ ํŠธ๋ฅผ ์กฐ๊ธˆ ๋” ์ž˜ํ• ์ˆ˜ ์žˆ์ง€ ์•Š์•˜์„๊นŒ ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด์„œ JPA ๋งคํ•‘ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๋งŽ์ด ์•Œ ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ์ž‘์„ฑํ•  ๋•Œ ๋ˆ„๊ตฌ๋‚˜ ์•Œ์•„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Šฅ๋ ฅ, ๋ฆฌํŒฉํ† ๋ง, ๋””๋ฒ„๊น… ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋งŽ์ด ํ•™์Šตํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
2์ฐจ ํ”„๋กœ์ ํŠธ๋Š” ํ”„๋ก ํŠธ๋ฅผ ๋งก์•„์„œ REACT ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ๊ณต๋ถ€๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์™„๋ฒฝํžˆ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ


๐ŸŒฑ ํšŒ๊ณ  ๊ธฐ๋ก


๐Ÿ”ผ ๋ชฉ์ฐจ๋กœ ๋Œ์•„๊ฐ€๊ธฐ