- ์๋น์ค ์๊ฐ
- ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์์ฐํ๋ฉด
- ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๋ฐ ์์ฐํ๋ฉด
- ๊ฐ๋ฐํ๊ฒฝ
- ์์คํ ํ๊ฒฝ
- Technical Architecture Diagram
- ํ์ ์๊ฐ
ํญ์ ์์ฌ ์ผ์ผ์ ์คํํ๊ณ ์์ง ์์ผ์ ๊ฐ์?
์์ฆ ๋ ์จ, ๋ฐ์ ๋๊ฐ์ ์ด๋ํ๊ธฐ ํ๋ค์ฃ ?
๊ทธ๋ฅ ์จ์ฌ๊ธฐ๋ ๋ฒ๊ฑฐ์ด๋ฐ ์ด๋์ด ์ฌ๋ฏธ์์ผ๋ฉด ์ด๋ป๊ฒ ํด์?
ํ์ง๋ง ์ด๋์ ๊ฒ์์ฒ๋ผ ์ฆ๊ฒ๊ฒ ํ ์ ์๋ค๋ฉด?
์ํธ๋์ค์ ํจ๊ป๋ผ๋ฉด ๊ฐ๋ฅํฉ๋๋ค.
-
๐ Frontend
- React v5.0.1
- node.js v16.14.0
- npm v8.7.0
- redux-toolkit v1.8.3
- styled-components v5.3.5
-
๐ CI/CD & Database
- AWS ec2 - Ubuntu 20.04.4 LTS
- Docker 20.10.12
- Jenkins 2.346.3
- nginx/1.18.0 (Ubuntu)
- MySQL 8.0.30-0ubuntu0.20.04.2
- certbot 0.40.0
-
๐ Backend
- Spring Boot 2.7.1
- Spring Data JPA 2.7.1
- Spring Security 5.7.2
- Spring Cloud 2.2.6
-
๐ Web RTC
- openVidu 2.22.0
-
๐ Tools
- Intellij 2022.2
- VS Code
- Google Chrome 104.0.5112.81
-
์คํ๋ฆฐ(ํ์ฅ)
- ๋ฐฑ์๋
- User, Rank๊ด๋ จ API ๊ตฌํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
- Jenkins๋ฅผ ์ฌ์ฉํ ์๋๋น๋
- nginx์ธํ
- EC2 ์๋ฒ ํ๊ฒฝ ์ธํ ๋ฐ ๋ฐฐํฌ
- ์ต์ข ๋ฐํ
-
๊น์ค์
- ๋ฐฑ์๋
- user ๋ก๊ทธ์ธ ๊ด๋ จ ๊ธฐ๋ฅ ๊ฐ๋ฐ
- ํ๋ก์ฐ, ์๋ฆผ, ์ ๊ณ , ์ด์๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ
-
๋ฅํ์
- ๋ฐฑ์๋
- Spring Security ํ์ฉํ user ์ธ์ฆ ๊ตฌํ
- Openvidu ํ์ฉ WebRTC ํ๊ฒฝ ๊ตฌ์ถ
- ์์ ๋ก๊ทธ์ธ ๊ตฌํ(์นด์นด์ค)
-
๋ฐฐ์ค์ฑ
- ํ๋ก ํธ์๋
- ์๊ตฌ์ฌํญ ๋ช ์ธ์ ์์ฑ
- react-toolkit & react-router-dom ํ์ฉ SPA ๊ตฌํ
- axios ์์ฒญ์ ํตํ api ํต์
- ํํ ๋ฆฌ์ผ ํ์ด์ง ์ ์
- ๋์์ธ ๋ฐ ํ๋กํ ํ์ ์ ์
- ์ด๋๋ณ ์ ๋๋ฉ์ด์ ์ ์
- styled-components ํ์ฉ css ์คํ์ผ๋ง
- ํ์ ๊ณผ ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์ํ ESLint ์ค์
-
์ด๋๊ทผ
- ํ๋ก ํธ์๋
- react ์ปดํฌ๋ํธ ๊ตฌ์กฐ ์ค๊ณ
- react-toolkit & react-router-dom ํ์ฉ SPA ๊ตฌํ
- axios ์์ฒญ์ ํตํ api ํต์
- ํ์ CRUD ๊ตฌํ (ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ์ ๋ณด ์์ , ๋น๋ฐ๋ฒํธ ์์ , ํ๋ก์ฐ ๋ฑ)
- ์์ ๋ก๊ทธ์ธ ๊ตฌํ (์นด์นด์ค)
- Openvidu ํ์ฉ ๊ฒ์๋ฐฉ ์ค์๊ฐ ๋ฐ์ดํฐ ๊ตํ ๊ตฌํ
- teachable machine ํ์ฉ ๋์์ธ์ ๊ตฌํ
- styled-components ํ์ฉ css ์คํ์ผ๋ง
-
ํ์ ์ฐ
- ๋ฐฑ์๋
- ๊ฒ์ ๊ด๋ จ ๊ธฐ๋ฅ (๊ฒ์ ์์ฑ ๋ฐ ๊ฒฐ๊ณผ ์ ์ฅ ๋ฑ) API ๊ตฌํ
- ์ฌ์ฉ์ ์ด๋ ๊ธฐ๋ก ๊ด๋ จ API ๊ตฌํ
- ๋ค์ด์ด๋ฆฌ ๊ด๋ จ ๊ธฐ๋ฅ, S3 ๋ฒํท ์ฐ๋ ํตํด ๋ฆฌ์์ค ๊ด๋ฆฌ API ๊ตฌํ
- EC2 ์๋ฒ ํ๊ฒฝ ์ธํ
๋ฐ ๋ฐฐํฌ
- DB ์ธํ ๋ฐ ๊ด๋ฆฌ
- Nginx ํตํ ํ๋ก์ ์ค์
- Certbot ํตํด SSL ๊ตฌ์ถ