Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yesfordev/homedong

๐Ÿ†HOMEDONG : ๋ชจ๋‘๊ฐ€ ๊ฑด๊ฐ•ํ•˜๊ฒŒ ์ง‘์—์„œ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ์šด๋™ ๊ฒŒ์ž„ - SSAFY 5๊ธฐ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ ์šฐ์ˆ˜์ƒ(2021.08.20)
https://github.com/yesfordev/homedong

aws-ec2 docker java javascript jenkins-pipeline jwt mysql nginx openvidu reactjs redis redux-toolkit spring-boot spring-security ssl-certificates teachable-machine webrtc

Last synced: about 3 hours ago
JSON representation

๐Ÿ†HOMEDONG : ๋ชจ๋‘๊ฐ€ ๊ฑด๊ฐ•ํ•˜๊ฒŒ ์ง‘์—์„œ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ์šด๋™ ๊ฒŒ์ž„ - SSAFY 5๊ธฐ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ ์šฐ์ˆ˜์ƒ(2021.08.20)

Awesome Lists containing this project

README

        

# ๐Ÿ’ช HomeDong ( ๋ชจ๋‘๊ฐ€ ๊ฑด๊ฐ•ํ•˜๊ฒŒ ์ง‘์—์„œ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ์šด๋™ ๊ฒŒ์ž„ )

## ๐Ÿ‘‡ํ™ˆ๋™ ์†Œ๊ฐœ ๋ฐ ์‹œ์—ฐ ์˜์ƒ๐Ÿ‘‡
[](https://www.youtube.com/watch?v=_U6xNSv4kFM)

ํ™ˆ๋™ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๐Ÿ‘‰[์—ฌ๊ธฐ](https://github.com/yesfordev/homedong/blob/develop/%EC%8B%9C%EC%97%B0%20%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4.md)๐Ÿ‘ˆ์—์„œ ๋” ์ž์„ธํžˆ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

## โœจOverview
1์ผ 1์ปค๋ฐ‹์˜ ์—ดํ’์ด ๋ถˆ๊ณ  ์žˆ๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ๊ฑด๊ฐ•์€ ๊ดœ์ฐฎ์œผ์‹ ๊ฐ€์š”? ๋ชจ๋‘์˜ ๊ฑด๊ฐ•์„ ์ฑ…์ž„์ง€๊ธฐ ์œ„ํ•ด ์ €ํฌ **HomeDong**์ด ์™”์Šต๋‹ˆ๋‹ค โœŒ1์ผ 1ํ™ˆ๋™(ํ™ˆ ํŠธ๋ ˆ์ด๋‹ ์šด๋™)์˜ ์‹œ์ž‘์„ ํ™ˆ๋™๊ณผ ํ•จ๊ป˜ํ•˜๊ณ  ๊ฑด๊ฐ•์„ ์ง€์ผœ๋ณด์„ธ์š”!

## โœจํ™ˆ๋™์˜ ๋ชจํ† 
`์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๊ฑด๊ฐ•์„ ์ฑ™๊ธฐ๋ฉฐ ํ•จ๊ป˜ ์ฆ๊ธด๋‹ค!`

### ๐Ÿ†์ˆ˜์ƒ - SSAFY 5๊ธฐ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ ์šฐ์ˆ˜์ƒ

### ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ - 2021.07.12 ~ 2021.08.20

## ๐Ÿ‘€ํ™ˆ๋™ ์„œ๋น„์Šค ํ™”๋ฉด
### ๊ฒŒ์ž„ - ์Šค์ฟผํŠธ
![์Šค์ฟผํŠธ](https://user-images.githubusercontent.com/31542907/131517102-ae6bd948-53df-4ce5-8b0f-0423dbbbcf35.gif)

### ๊ฒŒ์ž„ - ๋ฒ„ํ”ผ
![๋ฒ„ํ”ผ](https://user-images.githubusercontent.com/31542907/131517100-3e06b5da-48e3-4d47-9125-be4ad158f0fd.gif)

### ๊ฒŒ์ž„ - ํŒ”๊ตฝํ˜€ํŽด๊ธฐ
![ํ‘ธ์‹œ์—…](https://user-images.githubusercontent.com/31542907/131513675-9307c62b-c428-485a-8652-655b3a2ec19e.gif)

### ๊ฒŒ์ž„ - ์ฑ„ํŒ…
![์ฑ„ํŒ…](https://user-images.githubusercontent.com/31542907/131517069-e6cfc4e2-6318-4674-b477-66b841fb2e3d.gif)

### ๊ฒŒ์ž„์ด ๋๋‚ฌ์„ ๋•Œ - ํš๋“ ๋ฑƒ์ง€ ๋ฐ ๋žญํ‚น
![๊ฒŒ์ž„๋](https://user-images.githubusercontent.com/31542907/131517089-dc21ee81-e95c-46e0-89ea-918cd067e7b7.gif)

### ๋งˆ์ดํŽ˜์ด์ง€ - ๋ฑƒ์ง€ ๋ฆฌ์›Œ๋“œ, ์šด๋™ ์ผ์ผ ๊ธฐ๋ก, ์šด๋™์ผ ์ˆ˜
![๋งˆ์ดํŽ˜์ด์ง€๋ฆฌ์›Œ๋“œ](https://user-images.githubusercontent.com/31542907/131517098-070dce29-685c-40f8-9bd0-3942d3ebcc2e.gif)

### ๋งˆ์ดํŽ˜์ด์ง€ - ํ”„๋กœํ•„ ๋ณ€๊ฒฝ
![ํ”„๋กœํ•„ ๋ณ€๊ฒฝ](https://user-images.githubusercontent.com/31542907/131517082-7c64a8d2-4a93-43fb-a767-ad5edab487ed.gif)

### ๋žญํ‚น
![๋žญํ‚น](https://user-images.githubusercontent.com/31542907/131517092-19a5d112-ba2d-47a4-b332-9dade3eaf42c.gif)

### ํŠœํ† ๋ฆฌ์–ผ
![ํŠœํ† ๋ฆฌ์–ผ](https://user-images.githubusercontent.com/31542907/131517079-bfb5af03-3c12-4fde-883f-743865bdac0d.gif)

### ํšŒ์›๊ฐ€์ž… - ์ด๋ฉ”์ผ ์ธ์ฆ
![ํšŒ์›๊ฐ€์ž…](https://user-images.githubusercontent.com/31542907/131517086-37ce4e8c-73cb-4a8f-9841-38e0ca1dfd6a.gif)

## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ
---
- ์„œ๋น„์Šค ์„ค๋ช… : ๋ชจ๋‘๊ฐ€ ๊ฑด๊ฐ•ํ•˜๊ฒŒ ์ง‘์—์„œ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ์šด๋™ ๊ฒŒ์ž„
- ์ฃผ์š” ๊ธฐ๋Šฅ :
- webRTC๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ํ™”์ƒ ์šด๋™ ๊ฒŒ์ž„
- Pose Detection์„ ํ†ตํ•œ ์ž๋™ ์ž์„ธ ์ธ์‹
- ๊ฒŒ์ž„ log๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ์ž ์šด๋™๊ธฐ๋ก ์ถ”์ 
- ๊ธฐ๋ก์— ๋”ฐ๋ฅธ ๋ณด์ƒ์„ ํ†ตํ•œ ์šด๋™ ๋™๊ธฐ ๋ถ€์—ฌ

### ๐Ÿ–ฅ๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

---

๐Ÿ–ฑ**Backend**
- IntelliJ
- spring boot 2.4.5
- spring-boot-jpa
- Spring Security
- Java 8
- AWS EC2
- mysql
- redis

๐Ÿ–ฑ**Frontend**

- Visual Studio Code
- React.js 17.0.2
- styled-components 5.3.0
- Material-UI
- redux-toolkit 1.6.1
- redux 4.1.0

๐Ÿ–ฑ**Web RTC**

- openvidu 2.19.0

๐Ÿ–ฑ**Pose Detection**

- Teachable Machine

๐Ÿ–ฑ**CI/CD**
- aws ec2
- docker
- nginx
- jenkins

### ๐Ÿ’ซ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

---

![์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜](https://user-images.githubusercontent.com/31542907/131509639-2707daab-08ce-4725-93f7-3da5ecc088b1.png)

### โœจJenkins๋ฅผ ์ด์šฉํ•œ CD ๊ตฌ์ถ• ๋ฐ SSL ์ธ์ฆ์„œ ์ ์šฉ

---

์ œ๊ฐ€ ๋‹ด๋‹นํ•˜์—ฌ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐ™์ด, Jenkins์˜ pipeline์„ ์ด์šฉํ•˜์—ฌ ์ž๋™ ๋ฐฐํฌ๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค. Gitlab webhook์„ ์„ค์ •ํ•˜์—ฌ Jenkins์— ๋นŒ๋“œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์„ค์ •ํ–ˆ๊ณ , ์ด์— ๋”ฐ๋ผ Gitlab์—์„œ master ๋ธŒ๋žœ์น˜์— pushํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ถ•ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐฐํฌ๋กœ ์ธํ•œ ์‹œ๊ฐ„ ๋‚ญ๋น„๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ํ”„๋ก ํŠธ์—”๋“œ์ธ React.js๋Š” Nginx์™€ ํ•จ๊ป˜ docker image๋กœ ๋นŒ๋“œํ•˜์—ฌ ๋ฐฐํฌํ•˜์˜€๊ณ , ๋ฐฑ์—”๋“œ ๋ฐ redis, openvidu ๋˜ํ•œ docker container๋กœ ๋ฐฐํฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Nginx์™€ letsencrypt๋ฅผ ์ด์šฉํ•˜์—ฌ ssl ์ธ์ฆ์„œ๋ฅผ ์ ์šฉํ•˜์˜€๊ณ , ํ”„๋ก ํŠธ์—”๋“œ๋Š” 443(https)๋กœ ํ”„๋ก์‹œ๋กœ ๋ถ„๊ธฐ์‹œ์ผฐ๊ณ  ๋ฐฑ์—”๋“œ๋Š” /api ๊ฒฝ๋กœ๋กœ ํ”„๋ก์‹œ๋ฅผ ๊ฑธ์–ด์คฌ์Šต๋‹ˆ๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์€ [์—ฌ๊ธฐ](https://github.com/yesfordev/homedong/blob/develop/git%20%EC%86%8C%EC%8A%A4%20%ED%81%B4%EB%A1%A0%20%EC%9D%B4%ED%9B%84%20%EB%B9%8C%EB%93%9C%20%EB%B0%8F%20%EB%B0%B0%ED%8F%AC%20%EA%B0%80%EC%9D%B4%EB%93%9C.md)์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฐฐํฌ ๋ฐฉ๋ฒ•์€ CI/CD๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์€ ์•„๋‹™๋‹ˆ๋‹ค.(๋‹จ์ˆœ ๋ฐฐํฌ ๋ฐฉ๋ฒ•)

### โœจ๊ธฐ์ˆ  ํŠน์ด์ 

---

- Teachable Machine

์ž์„ธ๋ฅผ ํ•™์Šต์‹œ์ผœ pose detection์„ ํ†ตํ•œ ๋ชจ์…˜ ์ธ์‹์œผ๋กœ ์ž์„ธ ์ธ์‹์„ ํ†ตํ•ด ์œ ์ €๊ฐ€ ๊ฐ ์šด๋™ ์ข…๋ชฉ์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์ฒดํฌํ–ˆ๊ณ , ์šด๋™ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

![ํ‹ฐ์ฒ˜๋ธ”๋จธ์‹ ](https://user-images.githubusercontent.com/31542907/131527504-6a51078f-bc58-4ae7-8b5b-c36c6f81f600.png)

์ด๋Ÿฐ ์‹์œผ๋กœ Teachable Machine์œผ๋กœ ํ•™์Šต์„ ์‹œํ‚ค๋ฉด ์ž์„ธ๋ณ„๋กœ ๋„์ถœ๋œ ๊ฐ’์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ถ”์ถœ๋œ ์ฝ”๋“œ์™€ ๊ฐ’์œผ๋กœ ํ™ˆ๋™ ์„œ๋น„์Šค์— ๋งž๊ฒŒ ๊ฐ€๊ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

- WebRTC (Openvidu)

Openvidu๋กœ๋งŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ๋ฐฑ์—”๋“œ๋ฅผ ํ•จ๊ป˜ ์ด์šฉํ•œ ๊ฐœ๋ฐœ๋กœ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฐฉ๋งˆ๋‹ค ์ธ์›์ˆ˜๊ฐ€ 6๋ช…๊นŒ์ง€๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€๊ณ , ๋ฐฉ์žฅ๋งŒ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋ฐฉ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฐฉ์—์„œ ์ธ์›์ด ๋‚˜๊ฐ€๋ฉด ์ž๋™์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ฐฉ์žฅ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  private ๋ฐฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ฐฉ ๋ฒˆํ˜ธ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•„๋Š” ์‚ฌ์šฉ์ž ์™ธ์—๋Š” ๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€๊ณ , ๋น ๋ฅธ ์‹œ์ž‘ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ๋ฐฉ์— ๋น ๋ฅด๊ฒŒ ์ž…์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๊ณ , ๋ฐฉ์ด ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ๋ฐฉ ์ƒ์„ฑ๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

- Redis

๋žญํ‚น ๊ธฐ๋Šฅ์— ๋“ค์–ด๊ฐ€๋Š” ๋žญํ‚น ์ •๋ณด๋Š” ์ž์ •๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ •๋ณด์—ฌ์„œ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ์˜ ์ •๋ณด์ด๊ณ , ๋ฐ˜๋ณต์ ์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ์ œ๊ณต๋˜๊ณ , ์ตœ์‹ ํ™”๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ •๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ์œผ๋กœ ์บ์‹ฑ์„ ์ ์šฉํ•˜๊ธฐ์— ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๊ณ , Redis์— ๋žญํ‚น ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ DB๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์งˆ ๋•Œ ๋ฐฑ์—”๋“œ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ , ์ •๋ณด ์กฐํšŒ ์†๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ €ํฌ๋Š” Spring Scurity์™€ JWT๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜์˜€๋Š”๋ฐ, Redis๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์•„์›ƒ์‹œํ‚จ ํ† ํฐ๋“ค์„ ๋งŒ๋ฃŒ์ฒ˜๋ฆฌํ•˜์—ฌ ํ•ด๋‹น ํ† ํฐ์œผ๋กœ๋Š” ๋‹ค์‹œ ์ธ์ฆํ•  ์ˆ˜ ์—†๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

- redux-toolkit

ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„์‹œ์—๋Š” React์™€ redux-toolkit์„ ์ด์šฉํ•˜์—ฌ Ducks Pattern ๊ธฐ๋ฐ˜ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

- ๋ฐฐํฌ

๋„์ปค, Nginx, Jenkins๋ฅผ ์ด์šฉํ•œ ์ž๋™ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•˜์˜€๊ณ , ํ”„๋ก ํŠธ๋กœ Nginx์™€ ํ•จ๊ป˜ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

### ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง ํ˜‘์—… ํˆด

---

- Git
- Jira
- Notion
- Mattermost
- Webex

### ๐Ÿ’ญ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜์„œ

---
![์š”๊ตฌ์‚ฌํ•ญ ์ •์˜์„œ](https://user-images.githubusercontent.com/31542907/131509739-fb2a0c08-6a06-4f88-8643-93494f7c0150.png)

### ๐ŸŽจ ํ™”๋ฉด ์„ค๊ณ„์„œ

---

ํ™”๋ฉด์„ค๊ณ„์„œ1

ํ™”๋ฉด์„ค๊ณ„์„œ2

### โœจ์ฝ”๋“œ ์ปจ๋ฒค์…˜

---

```
- ์˜๋ฏธ ์—†๋Š” ๋ณ€์ˆ˜๋ช… X
โ‡’ ์œ ์ง€๋ณด์ˆ˜ ํž˜๋“ค๊ณ , ์•Œ์•„๋ณด๊ธฐ ํž˜๋“œ๋‹ˆ ๋ฐ˜๋“œ์‹œ ์ง€์–‘! ex) text1, test2

- ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๋™์‚ฌ๋กœ ์ง€์œผ๋ฉด ์ข‹๋‹ค! ex) getName()

- ๋ณ€์ˆ˜๋ช…, ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์นด๋ฉœ์ผ€์ด์Šค๋กœ ์ง€์–ด์ฃผ์„ธ์š”

- ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค
```

ํ•ด๋‹น [Code Convention ๊ฐ€์ด๋“œ](https://udacity.github.io/git-styleguide/), [๋„ค์ด๋ฐ ๊ทœ์น™](https://tyboss.tistory.com/entry/Java-์ž๋ฐ”-๋„ค์ด๋ฐ-๊ด€์Šต-java-naming-convention)๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

### โœจGit ์ปจ๋ฒค์…˜

---

```
FEAT: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ
FIX: ๋ฒ„๊ทธ๋ฅผ ๊ณ ์นœ ๊ฒฝ์šฐ
STYLE: ์ฝ”๋“œ ํฌ๋งท ๋ณ€๊ฒฝ, ๊ฐ„๋‹จํ•œ ์ˆ˜์ •, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
REFATOR: ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
DOCS: ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ(ex> Swagger)
Rename: ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช… ์ˆ˜์ • ๋ฐ ์ด๋™
Remove: ํŒŒ์ผ ์‚ญ์ œ
CHORE: ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •(ex> dependency ์ถ”๊ฐ€)
```

```bash
์ปค๋ฐ‹ ํƒ€์ž…: ๋‚ด์šฉ ์ž์„ธํžˆ ์ ์–ด์ฃผ๊ธฐ [#์ง€๋ผ์ด์Šˆ๋„˜๋ฒ„]
ex) FEAT: ๋กœ๊ทธ์ธ rest api ์ถ”๊ฐ€ [#์ง€๋ผ์ด์Šˆ๋„˜๋ฒ„]
```

ํ•ด๋‹น [Git ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ](https://udacity.github.io/git-styleguide/)๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ์„œ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค

### ๐Ÿ’กGit Flow ๋ธŒ๋žœ์น˜ ์ „๋žต

---

- Git Flow model์„ ์‚ฌ์šฉํ•˜๊ณ , Git ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์‚ฌ์šฉํ•œ๋‹ค.

- Git Flow ์‚ฌ์šฉ ๋ธŒ๋žœ์น˜
- feature - ๊ธฐ๋Šฅ
- develop - ๊ฐœ๋ฐœ
- master - ๋ฐฐํฌ
- hotfix - ๊ธ‰ํ•œ ์—๋Ÿฌ ์ˆ˜์ •

- Git Flow ์ง„ํ–‰ ๋ฐฉ์‹
1. feature ๋ธŒ๋žœ์น˜๊ฐ€ ์™„์„ฑ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜๋กœ pull request๋ฅผ ํ†ตํ•ด mergeํ•œ๋‹ค.

โ‡’ pull request๊ฐ€ ์š”์ฒญ๋˜๋ฉด, ๋ชจ๋“  ํŒ€์›๋“ค์ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ mergeํ•œ๋‹ค.

2. ๋งค ์ฃผ๋งˆ๋‹ค develop ๋ธŒ๋žœ์น˜๋ฅผ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

- feature ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ช…๋ช… ๊ทœ์น™
- feature/[front or back]/[๊ธฐ๋Šฅ ์ด๋ฆ„]

ex) feature/front/login

ex) feature/webrtc

### ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Jira

---

ํ˜‘์—… ๋ฐ ์ผ์ •, ์—…๋ฌด ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Jira๋ฅผ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋งค์ฃผ ์›”์š”์ผ ์˜ค์ „ ํšŒ์˜์—์„œ ํ•œ ์ฃผ๋™์•ˆ ์ง„ํ–‰๋˜์–ด์•ผ ํ•  ์ฃผ ๋‹จ์œ„ ๊ณ„ํš์„ ์งœ๊ณ , ์ง„ํ–‰ํ•  ์ด์Šˆ๋“ค์„ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ฆฐํŠธ๋Š” ์ผ์ฃผ์ผ ๋‹จ์œ„๋กœ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
- Epic : backend, frontend, webrtc๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
- story : `๋งˆ์ดํŽ˜์ด์ง€์—์„œ ํ”„๋กœํ•„ ๋ณ€๊ฒฝ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํ”„๋กœํ•„์„ ๋ณ€๊ฒฝ ํ•œ๋‹ค`์™€ ๊ฐ™์ด ์ž์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
- subtask : ๋ถ€์ž‘์—…์„ ๋‚˜๋ˆ„์–ด ์„ธ์„ธํ•˜๊ฒŒ ์—…๋ฌด ๊ด€๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด ์™ธ์—, subtask์— ์˜ˆ์ƒ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•ด ๋” ์„ธ์„ธํ•˜๊ฒŒ ์ผ์ • ๊ด€๋ฆฌ๋ฅผ ํ–ˆ๊ณ  ํ˜‘์—… ๋ฉ”์‹ ์ €(Mattermost)์— ์•Œ๋žŒ์„ ๋“ฑ๋กํ•˜์—ฌ ์ž‘์—… ์ƒํ™ฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

### ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Notion

---

๋ชจ๋‘๊ฐ€ ๋ด์•ผํ•  ๊ณต์ง€, ํ•จ๊ป˜ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๋งํฌ ๋“ฑ์„ ๋ชจ์•„ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ๋ชจ๋“  ํšŒ์˜ ๋ฐ ํ”ผ๋“œ๋ฐฑ์€ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ฒจ๋‘์–ด์„œ ์ž˜ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ปจ๋ฒค์…˜ ๊ทœ์น™, ๋ธŒ๋žœ์น˜ ์ „๋žต ๋“ฑ๋„ ๋…ธ์…˜์— ๊ธฐ๋กํ•˜์—ฌ ๋ชจ๋‘๊ฐ€ ํ•ญ์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

### ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Scrum

---
๋งค์ผ ์•„์นจ 9์‹œ์— ์–ด์ œ ํ–ˆ๋˜ ์ผ, ์˜ค๋Š˜ ํ•  ์ผ, ์ด์Šˆ๋ฅผ ๊ฐ์ž ์ •๋ฆฌํ•ด์„œ 5~10๋ถ„ ๋™์•ˆ ์„œ๋กœ ๊ณต์œ ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. Scrum์„ ํ†ตํ•ด ํŒ€์›๋“ค์˜ ํ˜„์žฌ ์ƒํ™ฉ์„ ๊ณต์œ ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ๊พธ์ค€ํžˆ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค์ผ ์ง„ํ–‰ํ–ˆ๋˜ Scrum ํšŒ์˜๋ก์€ Notion์— ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

### โœจ ER Diagram

---

![erd](https://user-images.githubusercontent.com/31542907/131509971-463c22d8-6266-4c94-b75c-59a205ec17f9.png)

- ์ •๊ทœํ™”๋ฅผ ๊ฑฐ์นœ Diagram ์ž…๋‹ˆ๋‹ค.

### โœจ EC2 ํฌํŠธ ์ •๋ฆฌ
---
|**PORT**|**์ด๋ฆ„**|
|:---:|:---:|
|443|HTTPS|
|80|HTTP - HTTPS๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ(ํ”„๋ก ํŠธ ํŽ˜์ด์ง€์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ)|
|8443|Openvidu|
|8379|Redis|
|3306|MySQL|
|8081|Jenkins|
|8080|Spring boot Docker Container|
|3000|React, NginX Docker Container|

### ๐Ÿ˜ƒ ํŒ€์› ์—ญํ• 
---
- **ํŒ€์›1**
- openvidu๋ฅผ ํ†ตํ•œ WebRTC ๊ธฐ๋Šฅ ๊ตฌํ˜„
- ๋ฐฑ์—”๋“œ ๋ฐฉ ๊ด€๋ฆฌ API ๊ตฌํ˜„(๋ฐฉ ๋งŒ๋“ค๊ธฐ/๋น ๋ฅธ ์‹œ์ž‘/๋ฐฉ ์ฐพ๊ธฐ/๋ฐฉ ๋‚˜๊ฐ€๊ธฐ/๋ฐฉ์žฅ ๋ถ€์—ฌ)
- ๋ฐฑ์—”๋“œ ๊ด€๋ฆฌ์ž API ๊ตฌํ˜„
- ์˜คํ”ˆ๋น„๋‘ ์„œ๋ฒ„ ๋ฐฐํฌ
- styled-component์™€ material-ui๋ฅผ ํ†ตํ•œ css ์Šคํƒ€์ผ๋ง
- **ํŒ€์›2**
- react์™€ redux-toolkit์„ ํ™œ์šฉํ•˜์—ฌ SPA ๊ตฌํ˜„
- ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ(ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ํšŒ์›์ •๋ณด ์ˆ˜์ •, ๋ฉ”์ธ ํ™”๋ฉด, ๋žญํ‚น, ํŠœํ† ๋ฆฌ์–ผ, ๋งˆ์ดํŽ˜์ด์ง€, ๋ฐฉ๋งŒ๋“ค๊ธฐ, ๋ฐฉ์ฐพ๊ธฐ๋“ฑ, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๊ตฌํ˜„)
- styled-components์™€ material-ui๋ฅผ ํ†ตํ•œ ์ปดํฌ๋„ŒํŠธ ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„ ๋ฐ css ์Šคํƒ€์ผ๋ง
- **ํŒ€์›3**
- Teachable Machine์„ ํ†ตํ•œ ์šด๋™ ์ธ์‹ ๊ตฌํ˜„
- ์šด๋™๋ณ„ ๋กœ์ง์„ ํ†ตํ•œ ์šด๋™ ์นด์šดํŠธ ๊ธฐ๋Šฅ ๋ฐ ํŠœํ† ๋ฆฌ์–ผ ๊ตฌํ˜„
- Openvidu๋ฅผ ํ†ตํ•œ ๊ฒŒ์ž„ ๋‚ด๋ถ€ ์ •๋ณด ์‹ค์‹œ๊ฐ„ ํ†ต์‹ 
- ๊ฒŒ์ž„ ์‹œ์ž‘, ์ข…๋ฃŒ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋žญํ‚น, ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„
- styled-component์™€ material-ui๋ฅผ ํ†ตํ•œ css ์Šคํƒ€์ผ๋ง
- **ํŒ€์žฅ(๋ณธ์ธ)**
- Spring security, JWT, JPA๋ฅผ ์ด์šฉํ•œ ์ด๋ฉ”์ผ ์ธ์ฆ(ํผ ๊ตฌํ˜„)ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ธ์ฆ, ์ธ๊ฐ€)
- JWT, Redis ์บ์‹ฑ์„ ์ด์šฉํ•œ ๋žญํ‚น ์กฐํšŒ ์ •๋ณด ์บ์‹ฑ ์ฒ˜๋ฆฌ ๊ตฌํ˜„
- JWT, Redis๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์•„์›ƒ๋œ ํ† ํฐ ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์ฒ˜๋ฆฌ ๊ตฌํ˜„
- ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ, ํšŒ์› ์ •๋ณด CRUD ๊ตฌํ˜„
- ์—ฐ์† ์šด๋™์ผ ์ˆ˜ ์กฐํšŒ, 1์ผ 1ํ™ˆ๋™ ์กฐํšŒ, ๋ฐฉ์žฅ ๊ฒŒ์ž„ ์‹œ์ž‘ ๊ธฐ๋Šฅ, ๊ฒŒ์ž„ ๋ ๊ธฐ๋Šฅ, ๋žญํ‚น ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ, ์ตœ๊ณ  ๊ธฐ๋ก ์กฐํšŒ, ๋ฑƒ์ง€ ์กฐํšŒ ๋“ฑ์˜ Spring Boot ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- Jenkins, Docker๋ฅผ ์ด์šฉํ•œ CD ๊ตฌํ˜„ - Docker๋กœ nginx+react container, spring boot container ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐํฌ
- Nginx ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์„ค์ • ๋ฐ ๋ฐฑ์—”๋“œ ๋ฐ ํ”„๋ก ํŠธ์—”๋“œ url ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ (/, /api/**)
- react๋ฅผ ์ด์šฉํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœํ•„ ์„ค์ • ๋ฐ ํ”„๋กœํ•„ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ, ํ”„๋กœํ•„ ๋ณ€๊ฒฝ ๋ฐ 1์ผ 1ํ™ˆ๋™ ํ˜ธ๋ฒ„ ํˆดํŒ ๊ตฌํ˜„
- ๊ฒŒ์ž„ ๋ฐ ์ฑ„ํŒ… ๊ธฐ๋Šฅ javascript โ†’ react๋กœ migration
- styled-component๋ฅผ ํ†ตํ•œ css ์Šคํƒ€์ผ๋ง

### โ‰HomeDong์˜ ๊ฐœ๋ฐœ ๊ณผ์ •์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?!

---

๐Ÿ‘‰[HomeDong ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ](https://calisthenics-homedong.tistory.com/) ๋ณด๋Ÿฌ๊ฐ€๊ธฐ ๐Ÿ‘ˆ

### ๐ŸฃHomedong์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋‚œ ํ›„์˜ ํšŒ๊ณ 

---

- ์•ˆ๋˜๋Š” ๊ฒƒ์€ ํ•จ๊ป˜ ํ•ด๊ฒฐํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ผผ๊ผผํžˆ ํ•˜์ž
- ๊ธ์ •์ ์ธ ๋ง๋กœ ํŒ€ ๋ถ„์œ„๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€์ž
- ๋ฌธ์„œํ™”๋ฅผ ์ž˜ ํ•˜์ž!

์ž์„ธํ•œ ํšŒ๊ณ ๋Š” [๋ธ”๋กœ๊ทธ](https://yesforlog.tistory.com/24)์—์„œ ์ž์„ธํžˆ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.