SSAFY 9๊ธฐ 2ํ๊ธฐ ๊ณตํต ํ๋ก์ ํธ
2023-07-04 ~ 2023-08-18
CRIT์ ๋จ์ํ ์ฑ๋ฆฐ์ง ์๋น์ค๋ฅผ ๋์ด, ์ฐธ๊ฐ์๋ค์ด 'ํจ๊ป' ์ฑ์ฅํ๋ ์ปค๋ฎค๋ํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์กด์ 'ํผ์'์ ๋ฏธ์ ์ ์ํํ๊ณ ์ฌ์ง์ผ๋ก ์ธ์ฆํ๋ ์ฑ๋ฆฐ์ ธ์ค์ ๋ฐฉ์์ ์ํต์ ์์ฌ์์ ๋ํ์ต๋๋ค. ๊ทธ ์์ฌ์๊ณผ ๋ฌด๋ฃํ ์ธ์ฆ์ ๋ฃจํด์ ๊นจ๊ธฐ ์ํด, CRIT์ ๊ฐํ๋ โ์์ ๊ธฐ๋ฅโ์ ์ค์ฌ์ผ๋ก ์ํผ๊ณผ ๋ค์ํ ๊ฒ์๊ธ์ ํตํด ์ฐธ๊ฐ์๋ค ๊ฐ์ ์ํต์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ํ, ์ค์๊ฐ ์ธ์ฆ ์์คํ ์ ๋จ์ํ ์ฌ์ง์ ์ฐ๊ณ ์ ์ ๋๋ ๋ฃจํด์ ๋ฒ์ด๋, ์ฐธ๊ฐ์๋ค์ด ๊ทธ ์๊ฐ์ ์ง์ ํ ๋ณํ์ ์ฑ์ทจ๊ฐ์ ์ค์๊ฐ์ผ๋ก ๊ณต์ ํ๊ณ ํจ๊ป ์ฆ๊ธธ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฐธ๊ฐ์๋ค์ ์ผ์์ ์์คํ ์๊ฐ์ ๋ชจ์ ์ ์ฐจ '๊ฐ์'์ ์ด ์ ์๋๋ก ํ๊ณ , CRIT ์ปค๋ฎค๋ํฐ์ ํจ๊ป ๋ ํฐ ์ฑ์ฅ์ ์ถ๊ตฌํ ์ ์์ต๋๋ค. CRIT์์ ํจ๊ปํ๋ ์ฑ๋ฆฐ์ง๋ ๋จ์ํ ๋ชฉํ ๋ฌ์ฑ์ด ์๋, ํจ๊ป ๋๋๋ฉฐ ์ฑ์ฅํ๋ ๊ฒฝํ์ด ๋ ๊ฒ์ ๋๋ค.
- C : Create Goals(๋ชฉํ๋ฅผ ์ค์ ํ์ธ์)
- R : Realize your Goals(๋ชฉํ๋ฅผ ๊ฑฐ๋จธ์ฅ์ธ์)
- I : Improve yourself everyday(๋งค์ผ ์์ ์ ๊ฐ์ ํ์ธ์)
- T : Try again when you fail(์คํจํ๋ฉด ๋ค์ ์๋ํ์ธ์)
- ๋ฑ๋ก๋์ด ์๋ ์ฑ๋ฆฐ์ง์ ๋์ ํ์ธ์
- ๋ง์ฝ ๋ง์ ๋๋ ์ฑ๋ฆฐ์ง๊ฐ ์์ผ๋ฉด ์ง์ ๋ง๋ค๊ณ ์ฌ๋์ ๋ชจ์ผ์ธ์
- ์ฑ๋ฆฐ์ง๊ฐ ์์ํ๋ฉด ์ธ์ฆ๋ฐฉ์์ ๋ง๋ ์ธ์ฆ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์
- ์ค์๊ฐ AIํ์์ธ์ฆ
- ํ๋ฉด์ ๋์ค๋ ์ผ๊ตด์ AI๊ฐ ์ธ์ํ์ฌ ์ฑ๋ฆฐ์ง์ ์ง์คํ๋์ง ํ์ธํฉ๋๋ค.
- ๋ง์ฝ ์๋ฆฌ๋ฅผ ์ดํํ๋ฉด ๊ฒฝ๊ณ ์ฐฝ์ด ๋์ต๋๋ค.
- ์ฑ๋ฆฐ์ง๋ฅผ ๋ง์น๊ณ ํ์ํ์๋ฐฉ์์ ๋์ค๋ฉด ์๋ฆฌ์ ์์๋ ์๊ฐ์ ๋ณด์ฌ์ค๋๋ค.
- ์๋ฆฌ์ ์๋ ์๊ฐ์ด 85%๋ฏธ๋ง์ด๋ฉด ์ธ์ฆ ์คํจ ์ฒ๋ฆฌ๊ฐ ๋ฉ๋๋ค.
- ์ฌ์ง์ธ์ฆ
- ์ฑ๋ฆฐ์ง๊ฐ ์งํ์ด ๋๋ ์๊ฐ ์์ ์ฑ๋ฆฐ์ง๋ฅผ ์งํํ๊ณ ์๋ ์ฌ์ง์ ์ฒจ๋ถํด์ ์ฌ๋ฆฌ๋ฉด ์ธ์ฆ์ด ๋ฉ๋๋ค.
- ์ค์๊ฐ AIํ์์ธ์ฆ
- ์ฐธ์ฌ๋ด์ญ์ ํตํด ํ์ฌ๊น์ง ์งํํ ๊ธฐ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
- ์ค๋์ ํ ๋ง๋๋ก, ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ๋ ๋ชจ๋ ๋ถ๋ค๊ณผ ํจ๊ป ํ์ ๋ชจ์ ๋ฌ๋ ค๋ด ์๋ค.
- ์ผ์ธ ์ปจํ
์ธ
- ์ง์ ์ดฌ์ํ ์ฑ๋ฆฐ์ง ๊ณผ์ ์ ๊ณต์ ํด ๋ณด์ธ์
- ์ฑ๋ฆฐ์ง ๊ฟํ์ ๊ณต์ ํด ๋ณด์ธ์
- ๊ฐ์ธ ํผ๋ ์์ฑ
- ํ๋ฃจํ๋ฃจ ์ฑ์ฅํ๋ ๋ชจ์ต์ ๊ธฐ๋กํ์ธ์
- ๋ค์ํ ์ปค๋ฎค๋ํฐ ๊ฒ์ํ
- ๊ฒ์ํ์์ ๋ค์ํ ์ฌ๋๋ค๊ณผ ์ํตํด๋ณด์ธ์
- ๋ค์ํ ์ฌ๋๋ค๊ณผ ํ๋ก์ & ํ๋ก์ฐ
- ๋ค์ ์ฑ๋ฆฐ์ง๋ฅผ ๊ฐ์ดํ๊ณ ์ถ์ ์ฌ๋๊ณผ ์ธ์ฐ์ ๋งบ์ผ์ธ์
Spring Security์์ ์ ๊ณตํ๋UsernamePasswordAuthenticationFilter
์ Access Token์ ์ด์ฉํ์ฌ ์ธ์ฆ์ด ์๋ฃ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผย HttpServletRequest
์ ๋ด์์ค๋๋ค. ์ด๋ฅผ ํตํด ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ URL์ ๋
ธ์ถํ์ง ์๊ณ ์๋ณํ ์ ์์ต๋๋ค.
OpenVidu๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ kurento-midea-server๋ฅผ ๊ฑฐ์ณ ์๋ก ์์์ ๋ณด๋ฅผ ์ก์์ ํ ์ ์๋ ์์คํ ์ ๊ตฌ์ถ ๋ฐ ์ ์ฉํ์ต๋๋ค. ์ฑ๋ฆฐ์ง๋ฅผ ์ค์ ํ ๋ ํน์ ์ธ์์๋งํผ ๋ค์ด ์ฌ ์ ์๊ฒ ์ค์ ํ์๊ณ ํด๋น ์ธ์์์ ๋๋ฌํ๋ฉด ์ฑ๋ฆฐ์ง๊ฐ ์์ํ ์ ์๊ฒ ํ์์ต๋๋ค.
Docker image
ย Jenkins
์ย pipeline
์ ์ด์ฉํ์ฌ ์๋ ๋ฐฐํฌ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค.ย Gitlab webhook
์ ์ค์ ํ์ฌ Jenkins์ ๋น๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ค์ ํ์ผ๋ฉฐ Gitlab์์ master ๋ธ๋์น์ pushํ๋ฉด ์๋์ผ๋ก ๋ฐฐํฌ๋ ์ ์๋๋ก ๊ตฌ์ถํ์ฌ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ๋ฐฐํฌ๋ก ์ธํ ์๊ฐ ๋ญ๋น๋ฅผ ์ค์์ต๋๋ค.
frontend
,ยVue js
์์๋ยNginx
์ ํจ๊ป ec2์๋ฒ์์ ๋น๋ํ ํ ๋ฐฐํฌbackend
,ยspringBoot
์์๋ยdocker image
๋ก ๋น๋ํ ํ ๋ฐฐํฌnginx
์ยletsencrypt
๋ฅผ ํตํดยssl
ย ์ธ์ฆ์๋ฅผ ์ ์ฉํ๊ณ ยfrontend
์์๋ย/
๋กย80(http)
,ย443(https)
ย ๋ก ํ๋ก์๋ฅผ ๋ถ๋ฆฌ์์ผฐ๊ณ ,ยbackend
์์๋ย/api
๋กย80(http)
,ย443(https)
ย ๋ก ํ๋ก์๋ฅผ ๋ถ๋ฆฌ
์ผ์ธ (Shorts) ์ปจํ ์ธ ๋ฐ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ ์ฌ์ฉ์๋ค์๊ฒ ํ๋ถํ ๋ฏธ๋์ด ๊ฒฝํ์ ์ ๊ณตํ๊ณ ์ ํฉ๋๋ค. ์ด์ ๋ฐ๋ผ ์์๋๋ ๋๋์ ์ด๋ฏธ์ง์ ๋์์ ํ์ผ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด Amazon S3 ์คํ ๋ฆฌ์ง ์๋ฃจ์ ์ ์ฑํํ์์ต๋๋ค. ์ด ์ ํ์ ๋์ฉ๋ ๋ฏธ๋์ด ํ์ผ์ ์์ ์ ์ผ๋ก ์ ์ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ํ๋ณดํ๊ธฐ ์ํจ์ ๋๋ค.
๋ฟ๋ง ์๋๋ผ, ์ฌ์ฉ์๋ค์ด ์ด๋ฌํ ๋ฏธ๋์ด ์ปจํ ์ธ ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๊ธฐ ์ํด Amazon CloudFront ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ๋ฅผ ํตํด S3์ ์ฐ๋ํ์์ต๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋ฏธ๋์ด ํ์ผ๋ค์ ์ ์ธ๊ณ ๋ค์ํ ์์น์ ์ฌ์ฉ์๋ค์๊ฒ ์ ์ง์ฐ์ผ๋ก ์ ๊ณต๋ ์ ์๊ฒ ๋์์ผ๋ฉฐ, ์ด๋ ์น ํ์ด์ง์ ๋ก๋ฉ ์๋๋ฅผ ํ๊ฒฉํ๊ฒ ๊ฐ์ ์์ผฐ์ต๋๋ค. CloudFront์ ์บ์ฑ ๋ฐ ๊ฐ์ํ ๊ธฐ๋ฅ์ ํ์ฉํจ์ผ๋ก์จ ์ฌ์ฉ์ ๊ฒฝํ์ ํ์ง์ ๋์ด๊ณ , ๋ ๋์๊ฐ ์๋น์ค์ ์ฑ๊ณผ๋ฅผ ํฅ์์ํค๋ ๋ฐ ๊ธฐ์ฌํ์์ต๋๋ค.
- Node js 18.19.0
- React 18.2.0
- axios 1.4.0
- jquery 3.7.0
- swiper 10.1.0
- Java 11
- java OpenJDK
- Spring Boot
- Spring Data JPA
- Spring Security
- oauth2
- JUnit
- Lombok
- Swagger
- Gradle 1.0.10
- drewnoakes 2.18.0
- Ubuntu 20.04.3
- Nginx 1.18.0
- Docker 24.0.4
- Docker-Compose 2.20.2
- OpenVidu 2.28.0
- Jenkins 2.401.3
- mariaDB 2.4.1
- Figma
- Visual Studio Code
- IntelliJ IDEA
- Gitlab
- Jira
- Sonarqube 4.6.2
- S3 2.2.6
- Cloudfront
- mattermost 7.8.6
- jasypt 2.14.2
- postman 10.17.0
- teachable machine 0.8.5
- GitLab
- Jira
- Notion
- Mattermost