Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 months ago
JSON representation
๐HOMEDONG : ๋ชจ๋๊ฐ ๊ฑด๊ฐํ๊ฒ ์ง์์ ์ฆ๊ธธ ์ ์๋ ์ด๋ ๊ฒ์ - SSAFY 5๊ธฐ ๊ณตํต ํ๋ก์ ํธ ์ฐ์์(2021.08.20)
- Host: GitHub
- URL: https://github.com/yesfordev/homedong
- Owner: yesfordev
- Created: 2021-08-21T05:42:56.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2022-11-11T05:41:34.000Z (about 2 years ago)
- Last Synced: 2024-09-30T18:20:47.734Z (4 months ago)
- Topics: aws-ec2, docker, java, javascript, jenkins-pipeline, jwt, mysql, nginx, openvidu, reactjs, redis, redux-toolkit, spring-boot, spring-security, ssl-certificates, teachable-machine, webrtc
- Language: JavaScript
- Homepage:
- Size: 18.6 MB
- Stars: 42
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
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)### ๐จ ํ๋ฉด ์ค๊ณ์
---
### โจ์ฝ๋ ์ปจ๋ฒค์
---
```
- ์๋ฏธ ์๋ ๋ณ์๋ช 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)์์ ์์ธํ ๋ณด์ค ์ ์์ต๋๋ค.