DevRoute๋ ์ด๋ณด ๊ฐ๋ฐ์๋ค์ ์ํด ์ง๋ฌด๋ณ ๋ก๋๋งต๊ณผ ๊ธฐ์ ์คํ์ ์๊ฐํํด์ฃผ๋ ํ๋ซํผ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ด๋ณด ๊ฐ๋ฐ์๋ค์ด ๋ชฉํ๋ฅผ ๋ช ํํ๊ฒ ์ธ์ฐ๊ณ ํ์ํ ๊ธฐ์ ์ ๋จ๊ณ๋ณ๋ก ์ตํ ์ ์๋๋ก ๋๊ธฐ ์ํด ์์๋์์ต๋๋ค.
๐๊ฐ๋ฐ ๋ก๋๋งต ์ ๊ณต
์ฒ์ ์์ํ๋ ๊ฐ๋ฐ์๋ค์ ์ํ ๋จ๊ณ๋ณ ๋ก๋๋งต ์ ๊ณต, ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์๋ ๊ฐ์ด๋!
๐ผ์ฑ์ฉ๊ณต๊ณ ํตํฉ
์ฌ๋ฌ ์ฑ์ฉ๊ณต๊ณ ๋ฅผ ํ๋์! ์ดํดํ๊ธฐ ์ฌ์ด ํํ๋ก ์ ๋ฆฌ๋ ์ ๋ณด ์ ๊ณต.
๐๊ธฐ์ ์คํ ๋ถ์
ํ์ฌ ์์ฅ์์ ์ธ๊ธฐ ์๋ ๊ธฐ์ ์คํ์ ํ๋์ ํ์
, ์ด๋ณด์๋ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ๊ตฌ์ฑ.
๐ํ์ต ์๋ฃ ์ถ์ฒ
ํ์ํ ๊ธฐ์ ์ ํ์ตํ ์ ์๋ ์ ํ๋ธ ์์๊ณผ ์จ๋ผ์ธ ๊ฐ์ ์ถ์ฒ.
| Front | Back | Back | Back |
|---|---|---|---|
@heewon1104 |
@Munhangyeol |
@mete0rfish |
@maark1106 |
- Operating Systems: Windows 11, macOS
- IDEs: IntelliJ, Visual Studio, AWS
- Frameworks & Libraries: Spring Framework, React
- Languages: Java, SQL, JavaScript
- Version Control: GitHub
- Collaboration Tools: Notion, Discord, Google Meet
- Server & Database: AWS EC2, RDS, Docker
- CI/CD Pipeline: GitHub Actions
- Monitoring Tools: Prometheus, Grafana
[ System Configuration ]
- ํ๋ก ํธ์๋: React ํ๋ ์์ํฌ๋ก JavaScript ๊ธฐ๋ฐ์ ๋ฐ์ํ ์น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ์ฌ, UI/UX๋ฅผ ๊ตฌํํ์์ต๋๋ค.
- ๋ฐฑ์๋: Java๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ Spring Framework์ Spring Boot๋ก ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋ฒ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: DB ์์ง์ MySQL 8.4.0 ๋ฒ์ ์ ์ด์ฉํฉ๋๋ค.
- ์น๊ณผ ์๋ฒ์ ํต์ ์, Jwt Token์ ์ด์ฉํ์ฌ ์ ์ ์ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๊ฐ ์งํ๋ฉ๋๋ค.
- ์๋ฒ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์ JPA(ORM)์ ๊ตฌํํ Hibernate๋ฅผ ์ด์ฉํ๋ฉฐ MySQL๊ณผ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ์ด์ฉํฉ๋๋ค.
- API๋ฅผ ์ ๊ณตํ๋ ์ฌ๋์ธ๊ณผ ์ ํ๋ธ, ์ ๋ฐ๋ฏธ๋ OpenAPI๋ฅผ ํตํด ์ ๋ณด๋ฅผ ์ป์ต๋๋ค.
- API๋ฅผ ์ ๊ณตํ์ง ์๋ ์กํ๋๋, ์ก์ฝ๋ฆฌ์, ์ธํ๋ฐ์ Selenium์ ํตํด ํ๋ซํผ๊ณผ ์ํธ์์ฉํฉ๋๋ค.
[ CI/CD ]
- GitHub์ Push ํ Merge๊ฐ ๋๋ฉด Github Actions์ CI/CD ํ์ดํ๋ผ์ธ์ ์ด์ฉํฉ๋๋ค.
- Github์ ํ์ผ์ ํตํด ๋น๋ ํ, Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ Docker Hub์ ์ด๋ฅผ Push ํฉ๋๋ค.
- Github Actions๋ ์๋ฒ๊ฐ ๋ฐฐํฌ๋ EC2์ SSH ์ ์ํ์ฌ Docker Hub๋ก ๋ถํฐ ์ด๋ฏธ์ง๋ฅผ Pull ํ, ์ปจํ ์ด๋๋ฅผ ์คํํฉ๋๋ค.
[ AWS ]
- ์๋ฒ๋ EC2 ์ปจํ ์ด๋์์ ์๋๋๊ณ , ํด๋ผ์ด์ธํธ๋ S3 ๊ธฐ๋ฐ์ CloudFront ์๋น์ค๋ฅผ ํตํด ์๋๋ฉ๋๋ค.
- ๋ณด์์ ์ํ HTTPS ์ ์ฉ์ ์ํด SSL์ ACM์ ์ด์ฉํ๊ณ , Route 53์ ํตํด ๋๋ฉ์ธ๊ณผ ์ฐ๊ฒฐ ํ, EC2์ S3์ ๊ฐ๊ฐ ์ฐ๊ฒฐํฉ๋๋ค.
- ์๋ฒ์ HTTPS ์ฌ์ฉ์ ๊ฐ์ ํ๊ธฐ ์ํด EC2๋ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด HTTP/80 ์ ์ ์, HTTPS/443์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ ๋๋๋ก ์ง์ ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ์ HTTPS ์ฌ์ฉ์ ๊ฐ์ ํ๊ธฐ ์ํด CloudFront์ ์ค์ ์ HTTPS๋ก ๋ฆฌ๋ค์ด๋ ํธ ๋๋๋ก ์ง์ ํฉ๋๋ค.
๊น๋ํ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด GitHub Flow ๋ธ๋์น ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ ๊ธฐ๋ฅ์ด๋ ์์ ์ฌํญ์ ๋ณ๋์ ๋ธ๋์น์์ ๊ฐ๋ฐ๋๋ฉฐ, Pull Request๋ฅผ ํตํด ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ๋ฉ๋๋ค. ์ผ๊ด์ฑ์ ์ํด PR ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ช ํํ ํ๊ณ , ํ์๋ค์ด ํจ์จ์ ์ผ๋ก ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด ๋ฐฉ์์ ์ฝ๋ ํ์ง์ ์ ์งํ๊ณ ํ๋ ฅ์ ์ธ ๊ฐ๋ฐ์ ์ด์งํฉ๋๋ค.
.
โโโ devroute
โโโ api
โย ย โโโ suggestion
โย ย โโโ visitorcount
โโโ bookmark
โย ย โโโ domain
โย ย โโโ exception
โย ย โโโ json
โโโ company
โย ย โโโ controller
โย ย โโโ domain
โย ย โโโ dto
โย ย โโโ repository
โย ย โโโ service
โโโ crawling
โย ย โโโ dto
โโโ dataloader
โโโ global
โย ย โโโ aop
โย ย โย ย โโโ crawl
โย ย โย ย โโโ timetrace
โย ย โโโ auth
โย ย โย ย โโโ filter
โย ย โย ย โโโ jwt
โย ย โโโ config
โย ย โโโ exception
โโโ recruitment
โย ย โโโ controller
โย ย โโโ domain
โย ย โโโ dto
โย ย โโโ enums
โย ย โโโ repository
โย ย โโโ service
โย ย โโโ utils
โโโ roadmap
โย ย โโโ description
โย ย โโโ domain
โย ย โโโ dto
โย ย โโโ enums
โย ย โโโ repository
โโโ user
โย ย โโโ domain
โย ย โโโ dto
โย ย โโโ enums
โย ย โโโ service
โโโ video
โโโ Repository
โโโ constans
โโโ domain
โโโ dto
โย ย โโโ infrean
โย ย โโโ udemy
โย ย โโโ youtube
โโโ enums
โโโ exception
โโโ fetcher
โโโ service
-
์์ ์ถ์ฒ ํ์ด์ง์์ ์์์ด ๋ณด์ด์ง ์๊ฑฐ๋, ๊ฐ๋ฐํ๊ฒฝ์ ๋๋ฏธ ๋ฐ์ดํฐ๊ฐ ํจ๊ป ๋ณด์ด๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ.( #117: ์์ ์ถ์ฒ์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์ ์ค๋ฅ ์ก๊ธฐ)
- ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๊ฒฝ ๋ถ๋ฆฌ
- ๊ธฐ์กด์๋
application.properties์์ ์๋์ผ๋ก ํ๋กํ์ผ์ ์ค์ ํ์ฌ RDS์ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต ์ ์ฅ๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. - ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด
application-dev.properties์application-prod.propertiesํ์ผ๋ก ํ๊ฒฝ์ ๋ถ๋ฆฌํ์ฌ, ๊ฐ ํ๊ฒฝ์ ๋ง๋ ์ค์ ์ด ์๋์ผ๋ก ์ ์ฉ๋๋๋ก ๊ฐ์ ํ์ต๋๋ค.
- ๊ธฐ์กด์๋
- ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๊ฒฝ ๋ถ๋ฆฌ
-
CI/CD ์ CPU ์ฌ์ฉ๋ฅ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ.(#125:CPU์ฌ์ฉ๋ฅ ์ ์ด)
- CI/CD ๊ฐ์ ์ ํตํ CPU ๋ถํ ์ํ
- Docker ๋น๋ ์ ์บ์ฑ์ ์ ์ฉํด ๋น๋ ์๊ฐ์ ๋จ์ถํ๊ณ , DockerHub์์ ์ด๋ฏธ์ง๋ฅผ Pullํ ํ CPU ์ฌ์ฉ๋ฅ ์ ์ด๋ฅผ ํตํด CI/CD ๊ณผ์ ์์์ ๋ถํ๋ฅผ ์ค์์ต๋๋ค.
ํญ๋ชฉ ๊ธฐ์กด ๋ฐฉ์ ๋ณ๊ฒฝ ํ ์ค์ CI/CD ์๊ฐ ๋จ์ถ ์บ์ฑ ๋ฏธ์ ์ฉ, ๊ธด ๋น๋ ์๊ฐ ์บ์ฑ ๋์ ์ผ๋ก CI/CD ์๊ฐ 55.37% ๊ฐ์ CPU ์ฌ์ฉ๋ฅ ์ต๋ 97% ๋๋ฌ ๊ฐ์ ํ ์ฝ 53.6% ๊ฐ์ - CI/CD ๊ฐ์ ์ ํตํ CPU ๋ถํ ์ํ
-
Selenium์ ๋์ ๋๊ธฐ CPU ์ ์ ์จ์ 24% ๊ฐ์. (ํฌ๋กค๋ง ์ต์ ํ)
- Prometheus๋ฅผ ํตํ ๋ชจ๋ํฐ๋ง ์งํ๋ฅผ ํตํด ํฌ๋กค๋ง ์งํ ํ ์ฅ๊ธฐ์ ์ผ๋ก CPU ์ ์ ์จ์ด ์์นํ๋ ๊ฒ์ ๋ฐ๊ฒฌ
- ์ด๊ธฐ ์ค์ ์ ํตํด Selenium Driver๊ฐ ํ์ฑํ๋ ์ํ์์ CPU๋ฅผ ์ง์์ ์ผ๋ก ์ ์
Spring AOP์ ํตํด ํฌ๋กค๋ง์ด ์งํ๋ ๋ก์ง ์ํ ํ ์๋์ผ๋ก quit()์ ์ํํ๋๋ก ์ค์
ํญ๋ชฉ ๊ธฐ์กด ๋ฐฉ์ ๋ณ๊ฒฝ ํ ์ค์ Live Thread Count (ํ์ฌ ์คํ ์ค์ธ ๋ชจ๋ ์ค๋ ๋์ ์) 31 Threads 27 Threads (-4) Daemon Thread Count (๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ค์ธ ์ค๋ ๋์ ์) 26 Threads 22 Threads (-4) -
๋ฐ์ดํฐ๋ฒ ์ด์ค Index๋ฅผ ํ์ฉํด์ ๋น๋์ค ๋ฐ์ดํฐ ์กฐํ์ ๋ฐ์ํ๋ ์ฑ๋ฅ์ 96.49% ๊ฐ์
- ํํ์ด์ง ํ๋ฉด์์ ๋น๋์ค ์กฐํ์์ order by๋ฅผ ์ํ ํ ์กฐํํ๋ ์ฐ์ฐ์, ๊ธฐ์กด์๋
Table full scan์ ํ์ฉํด์ ์กฐํํ๋ฏ๋ก ๋๋ ธ์ - ์ด๋ฅผ ์ธ๋ฑ์ฑ์ ํ์ฉํด์ 10000๊ฐ์ ๋ฐ์ดํฐ ๊ธฐ์ค 0.009398sec์์ 0.00033sec๋ก 96.49% ์ฑ๋ฅ ๊ฐ์ (์ธ๋ฑ์ค๋ฅผ ํ์ฉํ ์กฐํ์ฑ๋ฅ ์ต์ ํ)
- ํํ์ด์ง ํ๋ฉด์์ ๋น๋์ค ์กฐํ์์ order by๋ฅผ ์ํ ํ ์กฐํํ๋ ์ฐ์ฐ์, ๊ธฐ์กด์๋

