WebRTC๋ฅผ ํ์ฉํ ๋น๋๋ฉด ๋์ดํฐ
23.01.02(์) ~ 23.02.17(๊ธ) (์ด 7์ฃผ)
- ๊ธฐํ ๋ฐ ์ค๊ณ : 01.02 ~ 01.20 (3์ฃผ)
- ๊ธฐํ : ํ๋ก์ ํธ ์์ด๋์ด ๋ ผ์, ์ฃผ์ ๊ตฌ์ฒดํ, ๊ธฐ์ ์คํ ์ ์
- ์ค๊ณ : ๊ธฐ๋ฅ ์๊ตฌ ๋ช ์ธ์ ์์ฑ, ERD, ์์ด์ดํ๋ ์, ํ๋ก์ ํธ ๊ตฌ์กฐ ์ค๊ณ, REST API ์ค๊ณ
- ๊ฐ๋ฐ : 01.23 ~ 02.10 (3์ฃผ)
- API ๊ตฌํ
- ํ๋ก์ ํธ ์ฃผ์ ๊ธฐ๋ฅ ๊ตฌํ
- ๋ฐฐํฌ ๋ฐ ์ธํ๋ผ ๊ตฌ์ถ
- ํ
์คํธ ๋ฐ ์ ์ง๋ณด์ : 02.13 ~ 02.17 (1์ฃผ)
- ๋ฐ๋ชจ ์๋น์ค ์์
- ํตํฉ ํ ์คํธ
- ์ค๋ฅ ์์
- ์ฐ์ถ๋ฌผ ์ ๋ฆฌ
์ด๋ฆ | ๊ฐ๋ฐ ๋ด์ฉ |
---|---|
๐จ๐ปโ๐ป ์ต์ ์จ ๐ง | ํ์ฅ, ํ๋ก ํธ ๋ฆฌ๋ React, Socket.io(client), WebRTC ์น์ฌ์ดํธ ์ ์ฒด ๋์์ธ ๋ฐ UI/UX ๊ธฐํ ์น์์ผ ๊ฒ์ ๊ธฐ๋ฅ UCC |
๐จ๐ปโ๐ป ์ํฌ์ ๐ง | React, WebRTC ๊ฒ์๋ฐฉ ํ์ด์ง ๊ตฌํ |
๐จ๐ปโ๐ป ๊น๋ฏผ์ค ๐ง | React ๋ง์ด ํ์ด์ง, ๋ก๊ทธ์ธ, ํ์๊ฐ์ ๋ฐ ํ์ ๊ด๋ฆฌ ํ์ด์ง ๊ตฌํ |
์ด๋ฆ | ๊ฐ๋ฐ ๋ด์ฉ |
---|---|
๐จ๐ปโ๐ป ํ์ฌ์ฑ ๐ง | Spring Boot REST API Socket.io(server) ์น์์ผ ๊ฒ์ ๊ธฐ๋ฅ ์ ํจ์ค์ ๋์ปค๋ฅผ ํ์ฉํ CI/CD |
๐จ๐ปโ๐ป ๊น์ฃผ์ฑ ๐ง | Spring Boot REST API ์๋ ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ ์ ํจ์ค์ ๋์ปค๋ฅผ ํ์ฉํ CI/CD |
์ฃผ์ , ๊ธฐํ์๋์ ์ถฉ์คํ, ์์ฑ๋ ์๋ ํ๋ก์ ํธ๋ฅผ ๊ตฌํํ์ฌ ๋ฌด์ค๋จ ๋ฐฐํฌ๊น์ง ๋ฌ์ฑํ๊ธฐ!!
๋ณ์์ ์ฅ๊ธฐ ์ ์ํ๋ ์์ด๋ค์ด ์๊ฒ ํ ์ ์๋ ๋น๋๋ฉด ๋์ดํฐ ์์ ํ๋ซํผ
๋ง 6 - 10์ธ ์์ด๋ค
์์ด๋ค์ด ์ฝ๊ฒ ์กฐ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฆฐ์ด๋ค์ด ์ข์ํ๋ ์์์ผ๋ก ๋์์ธ ํ์์.
OpenVidu, AR๋ก ์ผ๊ตด ๋ฐ๊พธ๊ธฐ
์๋ ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ, ๊ทธ๋ฆผํ ์์ผ ํต์
- ์ธ๋ถ๋ด์ญ
๊ตฌ๋ถ ๊ธฐ์ ์คํ ์์ธ๋ด์ฉ ๋ฒ์ ๊ณตํต ํ์๊ด๋ฆฌ GitLab - ย ์ด์๊ด๋ฆฌ Jira - ย ์ปค๋ฎค๋์ผ์ด์ Mattermost, Notion - FrontEnd HTML5 ย CSS3 ย JavaScript(ES6) ย styled-components Tailwind 2.2.0 ย React React 18.2.0 ย ย Redux 8.0.5 ย ย Redux-Toolkit 1.9.2 ย IDE Visual Studio Code 1.75.1 BackEnd Java OpenJDK 11.0.16 ย Build Gradle 7.5.1 ย Spring Boot 2.5.9 ย ย Security 2.1.7 ย API Docs Swagger2 2.9.2 ย DB Mysql 8.0.32 ย ย Spring-Data-jpa 2.1.10 ย WebRTC OpenVidu 2.25.0 ย Socket Nodejs 14.21.2 ย IDE IntelliJ 22.3.1 Server AWS EC2 Ubuntu 20.04 ย ๋ฐฐํฌ Docker 23.0.0 ย ย Jenkins 2.375.2 ย WebServer Nginx 1.23.3 ์ฑ๋ฅํ ์คํธ ย Grafana ย ย ย Prometheus ย
ํผ๊ทธ๋ง๋ฅผ ํ์ฉํ์ฌ ์์ฑํจ
์ฒ์ ์์ด์ดํ๋ ์ ๊ธฐํ๋จ๊ณ์์๋ ์น ํ๋ฉด์ผ๋ก ๊ตฌ์ํ์์ผ๋, ํผ๋๋ฐฑ์ ๋ฐ๊ณ ํ ๋ธ๋ฆฟ ํ๋ฉด์ผ๋ก ์ ํํจ
๐ผํ๋ก ํธ์๋ | ๐ก๋ฐฑ์๋ |
---|---|
![]() |
![]() |
์๋ฒ์ ์์ ์ฑ๊ณผ ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ ์ํด ํ๋ก์ ํธ ๋ฐฐํฌ๋ฅผ ํ๊ณ Prometheus ์ Grafana๋ฅผ ํตํด ๋ก๊ทธ๋ฅผ ์ถ์ ํจ
- ๋ฐฐํฌ ์์ 3์๊ฐ ๊ฒฝ๊ณผ 637๋ฒ์ ๋งค์นญ ์์ฒญ์ด ์์์ผ๋ฉฐ 403์๋ฌ๊ฐ ๋ง์ด ๋ฐ์ํ๋ ๊ฒ์ ํ์ธ
- ๊ฐ์ ์ธ์ ์ 4๋ช ์ ๋๋ ์ฌ๋์ด ๋์ ์ ์์ด ๋์ด ์ฝ๋ ์์ ํ ์ฌ๋ฐฐํฌ ํ์์
- ์๋ฌ๋ฅผ ํด๊ฒฐํจ์ผ๋ก์ 403์๋ฌ๊ฐ ์ค์ด๋๋ ๊ฒ์ ํ์ธ
์ด๋ฒ ํ๋ก์ ํธ์์์ ๋ชฉํ๋ ์ด์ฌํ ํ์๋ค๊ณผ ์ฆ๊ฒ๊ฒ ํ๋ก์ ํธ๋ฅผ ์ ๋ง๋ฌด๋ฆฌํ๋ ๊ฒ์ด์๋๋ฐ ๋ชฉํํ๋๋ก ์ด๋ฃจ์ด์ง๊ฒ ๊ฐ์ ๋ง์กฑ์ค๋ฝ์ต๋๋ค. ๋ํ ํํ๊ฐ ๋จ์ง ์์ ์ ๋๋ก ์ต์ ์ ๋ค ํด์ ๋ฟ๋ฏํฉ๋๋ค. ์์ฌ์๋์ ์ ๋ณ์ ์ญ์ธ๊ฐ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง์ง ์์์ ์์ฌ์ ๊ณ ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ ๋์ ํ์์ง๋ง ์ค์ ๋ก๋ ํ๋ก์ ํธ ์งํ ์ํฉ์ด ๋๋์ด์ ์ ๋๋ก๋ ์ ์์ผ์ ํ์ง ๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ ํ ์คํ ๊ณผ ๋ฆฌํฉํ ๋ง๋ ๊ผผ๊ผผํ๊ฒ ํ์ง ๋ชปํ ๊ฒ ๊ฐ์์ ๋ค์ ํ๋ก์ ํธ์์๋ ๊ฐ์ธ ์ค๋ ฅ์ ๋๋ฆฌ๋๋ฐ๋ ์ง์คํ๊ณ ์ถ์ต๋๋ค.
๋๋ฌด ์ ํ๋ ํ์๋ค์ ๋ง๋์ ์ ๋ง ์ฌ๋ฏธ์๊ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค. ์ฒ์์ 5๋ช ํ์ด๋ผ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์๊น ํ๋ ์๊ฐ์ ํ์ง๋ง ๋ชจ๋๋ค ์ด์ฌํ ์ฐธ์ฌํ๊ณ ์๋ก ๋ ๋ คํ์ฌ ์ ๋ง๋ฌด๋ฆฌํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ฅธ ํ์์ ๋นํด ์ ๊ฐ ์ค๋ ฅ์ด ๋ถ์กฑํ๋ค๊ณ ๋๊ผ๋๋ฐ ์กฐ๊ธ ๋๋ ค๋ ํ์๋ค์ด ์ฌ์ดํ์ง ์๊ณ ๋๊น์ง ํด๋ผ ์ ์๊ฒ ๋์์คฌ์ต๋๋ค. ๋ชจ๋ ๋ถ๋ถ์ด ์ ๋ง ์ข์์ง๋ง ์ ๊ฐ ์ข ๋ ์ค๋ ฅ์ ๋๋ ค์ ๋ค์์ ์ด ํ๊ณผ ํจ๊ป ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ฉด ๋ง์ ๋์์ด ๋๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์ถ์ต๋๋ค.
์ฒ์์ ๋ ์๊ฐ์ ์์ด๋์ด๋ ์ข๋ค๊ณ ์๊ฐํ์ง๋ง ์ค์ ๋ก ์ ๊ตฌํํ ์ ์์์ง ๊ฑฑ์ ์ด ๋ง์์ต๋๋ค. ํ์ง๋ง ํ์๋ค์ด ๋๋ฌด ์ ํด์ฃผ์๊ณ , ๋ถ์กฑํ ์ ๊ฐ ํค๋ฉ๊ณ ์์ ๋ ์ธ๋ด์ฌ์๊ฒ ๊ธฐ๋ค๋ ค์ฃผ์ด์ ์ฌ๋ฐ๊ณ ํ๋ณตํ๊ฒ ํ๋ก์ ํธ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ ์ ๊ฐ ๋ก๊ทธ์ธ ํ์๊ฐ์ ๊ทธ ์ธ ๋ค๋ฅธ ๊ธฐํ ์ปดํฌ๋ํธ๋ฅผ ๋งก๊ฒ ๋์๋๋ฐ, jwt๋ฐฉ์์ ๋ํด ์ ๋๋ก ๊ณต๋ถํ ๊ฒ์ด ์ฒ์์ด์์ง๋ง ๋๊น์ง ํฌ๊ธฐํ์ง ์๊ณ ๊ณต๋ถํ๊ณ ํ์๋ค์๊ฒ ์ค๋ช ๋ ํด์ฃผ๋ฉฐ ์ดํด๋๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฐ๋ฐ์๋ ํผ์ ์ด์ฌํ ๊ณต๋ถํ๋ ๊ฒ๋ ์ค์ํ์ง๋ง, ๊ณต๋ถํ๋ ํ์๋ ํ์๋ค์ ์ ๋ง๋๋ฉด ๋ฅ๋ฅ ์ด ๋์ฑ ์ข์์ง ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ฟ ์๋๋ผ, ํ์ ํ์ฌ์์ ๋ฐฑ์๋ ๋ถ์ผ๋ฅผ ์ผํ๊ณ ์ถ์ต๋๋ค. ํ์ง๋ง ํ๋ก ํธ์๋๋ฅผ ๋งก๊ฒ ๋์ด ์์ฝ๋ค๋ ์๊ฐ์ ์ฒ์์ ํ์์ง๋ง, ํ๋ก ํธ์์ ๋ก๊ทธ์ธ๊ณผ ํ์๊ฐ์ ์ ํ๋ฉด์ ๋ฐฑ์๋๊ฐ ํด์ฃผ๋ ์ฒ๋ฆฌ์ ๋ํด์ ์๊ฐ์ ํ ์ ์๋ ๊ธฐํ์์ต๋๋ค. ํนํ jwt๋ฐฉ์์ ๋ํด์ ๋ฐฑ์ ์ง์ ๊ตฌํํ๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์์ต๋๋ค. ํนํ ๊ฐ์ฅ ๋งค๋ ฅ์ ์ธ ๋ถ๋ถ์ด accessToken์ ์๋ฒ์ ๋ณด๋ด ๋ง๋ฃ๋๋์ง ํ์ธํ๊ณ ๋ง๋ฃ๋์๋ค๋ฉด ๋ง๋ฃ๋์๋ค๊ณ ์ ํธ๋ฅผ ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ์์๋ ํด๋น ์ ํธ๋ฅผ ๋ฐ์ ๋ค์ ์๋ฒ์ accessToken๊ณผ refreshToken์ ๋ณด๋ด์ฃผ์ด accessToken์ ์ฌ๋ฐ๊ธํ๊ฒ ๋๋ ์ ์ฐจ๊ฐ ๋๋ฌด ๋งค๋ ฅ์ ์ด์์ต๋๋ค. ๋ํ ์ต์ ๋ณด์์ ๋ํด์ ์๊ฒ ๋์๋๋ฐ, ๋ธ๋ผ์ฐ์ ์ ๋ํ ๊ธฐ๋ฅ์ค์์ ๊ฐ์ ๋๋ฉ์ธ์ธ ์ฟ ํค๋ง ๊ฐ์ ธ์ค๋ sameSite์ฟ ํค์ค์ ์ ๋ชฐ๋ผ์ ์ผ์ฃผ์ผ์ ํด๋ฉ๊ฒ ๋์์ง๋ง ํ์ฌ๋ ๊ผญ ํ์ํ ์๊ฐ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค์ ํ๋ก์ ํธ๋๋ ์ง๊ธ๋ณด๋ค ํจ์ฌ ๋์ ๊ฐ๋ฐ์ค๋ ฅ๊ณผ ์ํต์ ์ํ๋ ์ฌ๋์ด ๋๊ฒ ์ต๋๋ค.
๊ธธ๋ค๊ณ ์๊ฐํ๋ 7์ฃผ๊ฐ ๋น ๋ฅด๊ฒ ์ง๋๊ฐ์ต๋๋ค. ํญ์ ์ด์ฌํ ํ๋ ํ์๋ถ๋ค ๋๋ถ์, ๋ ์ด์ฌํ ๊ฐ๋ฐํ๊ฒ ๋๊ฒ ๊ฐ๋ค์. ๋ฐฐํฌ์ nodejs๋ฅผ ์ด์ฉํ ์์ผํต์ ์ ๊ฒฝํํด ๋ณผ ์ ์์ด ์ข์์ต๋๋ค. ์ฒ์ ํด๋ณธ ๊ธฐ์ ์คํ์ด๋ผ ๋ง์ ์ด๋ ค์์ด ์์์ง๋ง, ํฌ๊ธฐํ์ง ์๊ณ ๋์ ํด์ ๋ฐ๋ชจ์๋น์ค๋ฅผ ์งํ ํ์ ๋ ๋ฟ๋ฏํ์ต๋๋ค. 7์ฃผ๊ฐ ํ๋ก์ ํธ ํ์๋๋ผ ๋ค๋ค ๊ณ ์ํ์ จ๊ณ , ๋จ์ ํ๋ก์ ํธ๋ ํ์ดํ ์ ๋๋คโบ
์ฌ๋ฌ ์ฌ๋๋ค๊ณผ ๊ฐ์ด ํ๋ ํ์ ํ๋ก์ ํธ๋ ์ฒ์์ด๊ธฐ ๋๋ฌธ์ ๊ธด์ฅ๋ ๋๊ณ ๊ฑฑ์ ๋ ๋ง์๋๋ฐ, ๋๋ฌด ์ข์ ํ์๋ค์ ๋ง๋์ 7์ฃผ๊ฐ ์งง๊ฒ ๋๊ปด์ง ๋งํผ ์ฆ๊ฒ๊ฒ ๊ฐ๋ฐํ์ต๋๋ค. ์ค์ ๋ก ๊ธฐํ๋ถํฐ ๊ฐ๋ฐ๊น์ง ํด๋ณด๋ฉฐ ์ํํ ํ๋ฌ๊ฐ๊ธฐ๋ณด๋ค๋ ์ค๊ฐ์ ์์ด์ง๋ ์ผ๋ ์๊ฒผ์ง๋ง ๋ ๋ ํ ํ์๋ค๊ณผ ํจ๊ปํ๋ฉด์ ํฐ ๋ถ์ํจ ์์ด ์งํํ ์ ์์์ต๋๋ค. ๋ฐฐ์ธ ์ ์ด ๋ง์๊ณ ํ๋ณตํ๋ 7์ฃผ์์ต๋๋ค.