goodJob: CV ๊ธฐ๋ฐ ์ฑ์ฉ๊ณต๊ณ ์ถ์ฒ ํ๋ซํผ
| Name | Part | What I do | branch |
|---|---|---|---|
| ์ ์ฉํ | BE AI | ์ถ์ฒ ์์คํ ๋ฐ OCR ํ์ดํ๋ผ์ธ, ์ถ์ฒ ๊ด๋ จ API ๋ฐ Redis ์บ์ฑ, DevOps |
|
| ์ ์ง | BE | OAuth ํ์๊ฐ์ , ์ง์์ด๋ ฅ, ํผ๋๋ฐฑ ์์ฑ, ๊ณต๊ณ ๊ฒ์ ๋ฐ ํํฐ ๊ธฐ๋ฅ ๊ตฌํ |
|
| ์ก์ธํ | DATA | ํฌ๋กค๋ง, ํํฐ๋ง, ๋ฐ์ดํฐ ์๊ฐํ ๊ตฌํ |
|
| ์์์ข | FE | ํ๋ก ํธ์๋ ๋ฐ UX/UI |
|
- ๋ฑ์ง๋ฅผ ๋๋ฌ ๊ฐ ๊ฐ๋ฐ ๋ธ๋์น๋ก ์ด๋ํ ์ ์์ต๋๋ค.
goodJob์ ๊ตฌ์ง์๊ฐ PDF ํ์์ ์ด๋ ฅ์(CV)๋ฅผ ์
๋ก๋ํ๊ธฐ๋ง ํ๋ฉด
์ด๋ ฅ์ ๋ด์ฉ์ ๋ถ์ํ์ฌ ๋ง์ถค ์ฑ์ฉ ๊ณต๊ณ ๋ฅผ ์ถ์ฒํ๊ณ
์ง์ ํํฉ์ ํตํฉ ๊ด๋ฆฌํ ์ ์๋๋ก ๋๋ ํตํฉ ํ๋ซํผ์
๋๋ค.
์ฌ์ฉ์๊ฐ ์
๋ก๋ํ CV๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฌ๋กค๋ง๋ ์ฑ์ฉ ๊ณต๊ณ ๋ค๊ณผ์ ํ
์คํธ ๋ฐ
์๋ฒ ๋ฉ ์ ์ฌ๋ ์ ์๋ฅผ ๊ณ์ฐํ์ฌ ๊ฐ์ฅ ์ ํฉํ ๊ณต๊ณ ๋ฅผ ์๋ ์ถ์ฒํ๋ ํ๋ฉด์
๋๋ค.
- ์ข์ธก: ์ถ์ฒ ๊ณต๊ณ ๋ฆฌ์คํธ (์ ์ฌ๋ ์ ์ ๊ธฐ๋ฐ ์ ๋ ฌ)
- ์ฐ์ธก: ์ ํํ ๊ณต๊ณ ์ ์์ธ ์ ๋ณด, ๋งค์นญ ์ ์, ํผ๋๋ฐฑ, ์ง์ ๊ธฐ๋ฅ ์ ๊ณต
๊ด์ฌ ์๋ ์ฑ์ฉ ๊ณต๊ณ ๋ฅผ ๋ถ๋งํฌํ์ฌ ์ ์ฅํ๊ณ
ํ๋์ ๋น๊ตํ๊ฑฐ๋ ์ถํ ์ง์์ ๊ด๋ฆฌํ ์ ์๋ ํ๋ฉด์
๋๋ค.
- ์นด๋ํ UI๋ก ๊ณต๊ณ ๋ค์ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌ
- ์์ธ ๋ณด๊ธฐ ๋ฐ ์ํ ํ์ธ์ด ์ฉ์ด
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ํ์ ์์ ๋ | ์ด๋ค ํํ์ PDF ์ด๋ ฅ์๋ ์ ๋ก๋๋ง ํ๋ฉด ๋ถ์ ๊ฐ๋ฅ |
| ๊ธฐ์ ๊ธฐ๋ฐ | VILA ๊ธฐ๋ฐ OCR (EfficientNet ๊ธฐ๋ฐ)๋ก ๋ฌธ์ ๊ตฌ์กฐ์ ์๊ฐ ๋ธ๋ก ์ ๋ฐ ์ธ์ |
| ์ถ์ฒ ๋ก์ง | BM25 (TF-IDF ๊ธฐ๋ฐ ํค์๋ ์ ์ฌ๋) + SentenceTransformer (Cosine Similarity) |
| ๊ฒฐ๊ณผ | ์์ ์์ ์ด๋ ฅ์๋ ๋์ ์ ํ๋๋ก ์ฑ์ฉ ๊ณต๊ณ ์๋ ์ถ์ฒ |
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ๋ถ์ ๋์ | ์ฑ์ฉ ๊ณต๊ณ ์ ์ด๋ ฅ์๋ฅผ ํญ๋ชฉ ๋จ์๋ก ์ ๋ ฌยท๋น๊ต |
| ๋ถ์ ํญ๋ชฉ | ๋ถ์กฑํ ์ญ๋ (๊ธฐ์ ์คํ, ํ๋ก์ ํธ ๋ฑ) ๊ฐ์ ์์ (ํต์ฌ ๊ธฐ์ , ์ฐ์ฐจ ๋ฑ) |
| ํผ๋๋ฐฑ ๋ฐฉ์ | ํญ๋ชฉ๋ณ๋ก ์ ๋์ ํผ๋๋ฐฑ ์ ๊ณต |
| ์ฌ์ฉ์ ํจ๊ณผ | ๋ชฉํ ์ค์ ๊ณผ ๋ณด์ ์ ๋ต ์๋ฆฝ ๊ฐ๋ฅ ๋จ์ ์ถ์ฒ์ ๋์ด์ ์ค์ง์ ๋ฐฉํฅ ์ ์ |
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ๊ธฐ๋ฅ | ๊ด์ฌ ๊ณต๊ณ ๋ถ๋งํฌ ์ง์ ์ด๋ ฅ ๋ฐ ์ํ(์ง์ ์๋ฃ, ๊ฒฐ๊ณผ ๋๊ธฐ ๋ฑ) ํตํฉ ๊ด๋ฆฌ |
| ํจ์จ์ฑ | ๊ณต๊ณ ํ์๋ถํฐ ์ง์ยท๊ฒฐ๊ณผ ํ์ธ๊น์ง ํ ํ๋ซํผ์์ ์ฐ์์ ํ๋ฆ ์ ๊ณต |
| ์ฌ์ฉ์ ๊ฒฝํ | ๋ถ์ฐ๋ ๊ตฌ์ง ํ๋์ ํตํฉ์ ์ผ๋ก ๊ตฌ์ฑํ์ฌ ๊ด๋ฆฌ ํจ์จ ๊ทน๋ํ |
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ๋ชจ๋ํฐ๋ง ๋๊ตฌ | Prometheus + Grafana ๋์๋ณด๋ |
| ์งํ ํ์ธ | ์๋ฒ ๋ถํ, ์ถ์ฒ ์๋ต ์๊ฐ, ์ฌ์ฉ์ ์งํ ๋ฑ ์ค์๊ฐ ์๊ฐํ |
| ์์ ์ฑ ํ๋ณด | RabbitMQ, Redis, ECS ๊ธฐ๋ฐ์ผ๋ก ์๋ ํ์ฅ ๋ฐ ๋ณต์ ๊ฐ๋ฅ |
| ์ ์ฒด ํ๋ฆ ๊ด๋ฆฌ | ์ถ์ฒ, OCR, ํฌ๋กค๋ง ๋ฑ ๋ชจ๋ ์์คํ ์ํ ํตํฉ ๋ชจ๋ํฐ๋ง |
-
DB Isolation: ๊ธฐ๋ฅ ๋จ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ๋ฆฌ ์ฌ์ฉ์, ๊ณต๊ณ , ์ถ์ฒ, ์ด๋ ฅ์ ๋ฑ ๋๋ฉ์ธ๋ณ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฆฌํด ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ๋ชจ๋๋ณ ๋ ๋ฆฝ ๋ฐฐํฌ์ ์คํค๋ง ๋ณ๊ฒฝ ์ ์ํฅ ์ต์ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ต๋๋ค. ๋ฐ์ดํฐ ํตํฉ์ API ๋ ๋ฒจ์์ ์ํ๋ฉ๋๋ค.
-
ํ์ฅ์ฑ๊ณผ ๋น๋๊ธฐ ์ฒ๋ฆฌ: ์ถ์ฒ ์ฐ์ฐ์ FastAPI ์๋ฒ์์ ์ฒ๋ฆฌ๋๋ฉฐ ECS ๊ธฐ๋ฐ Auto Scaling์ ํตํด ํธ๋ํฝ์ ์ ์ฐํ๊ฒ ๋์ํฉ๋๋ค. RabbitMQ๋ก ์์ฒญ์ ๋น๋๊ธฐ ์ฒ๋ฆฌํ๊ณ Redis ์บ์ฑ์ผ๋ก ์๋ต ์๋์ ์์ ์ฑ์ ํ๋ณดํ์ต๋๋ค.
-
๋ชจ๋ํ์ ์ฑ ์ ๋ถ๋ฆฌ: ํ๋ก ํธ์๋, ๋ฐฑ์๋, ์ถ์ฒ ์๋ฒ, ๋ชจ๋ํฐ๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ชจ๋ ์ปจํ ์ด๋ ๋จ์๋ก ๋ถ๋ฆฌ๋์ด ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์๋์ด ์ ์ง๋ณด์์ ์ฅ์ ๋์์ด ์ฉ์ดํฉ๋๋ค.
- Spring ๊ธฐ๋ฐ ๋ฉ์ธ ์๋ฒ๋ฅผ ์ค์ฌ์ผ๋ก ํต์ ๊ตฌ์กฐ ํตํฉ
- FastAPI ์๋ฒ๋ ECS์ ๋ฐฐํฌ๋์ด Auto Scaling ์ง์
- Redis, RabbitMQ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ฑ ํ๋ณด
- Docker ๋ฐ GitHub Actions๋ก CI/CD ์๋ํ
- Prometheus + Grafana๋ก ๋ก๊ทธ ๋ฐ ์ํ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง
- ํ๋ก ํธ์๋๋ S3 + CloudFront + Route53์ผ๋ก ์ ์ ๋ฐฐํฌ
- Redis ์บ์ฑ์ผ๋ก ์ถ์ฒ ๊ฒฐ๊ณผ ์๋ต ์๋ ์ฝ 60% ๊ฐ์
-
1๋จ๊ณ: URL ์์ง ๋ฐ ํ ๋ฑ๋ก
- Crawler๋ ์ด๊ธฐ ๋จ๊ณ์์ ์ฝ 5๋ง ๊ฐ ์ด์์ URL์ ์๋ ์์งํฉ๋๋ค.
- ์์ง๋ URL์ ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ(HTTP ์ํ ์ฝ๋, ์ฐจ๋จ ์ฌ๋ถ ๋ฑ)๋ฅผ ํ๋จํฉ๋๋ค.
- ๋ฐฉ๋ฌธํด์ผ ํ URL ๋ชฉ๋ก์ Redis์ ์ ์ฅํ๊ฑฐ๋, RabbitMQ ํ์ ํธ์ํ์ฌ ๋น๋๊ธฐ ์์ ์ ์ค๋นํฉ๋๋ค.
-
2๋จ๊ณ: ํ์ด์ง ๋ฐฉ๋ฌธ ๋ฐ ์ฝํ ์ธ ์์ง
- Headless ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ์ Crawler๊ฐ URL์ ๋ฐฉ๋ฌธํ๋ฉฐ ๋ค์ ์์ ์ ์ํํฉ๋๋ค:
- get href link: ํ์ด์ง ๋ด์ ์๋ธ ๋งํฌ ์ถ์ถ
- onclick: ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ๋์ ์ฝํ ์ธ ํธ๋ฆฌ๊ฑฐ๋ง
- get Text: ์ค์ ์ฑ์ฉ ๊ณต๊ณ ํ ์คํธ ์ ๋ณด ์์ง
- ์์ง๋ ๋ฐ์ดํฐ๋ visitResult ๊ฐ์ฒด๋ก ์ ๋ฆฌ๋์ด ๋ค์ ๋จ๊ณ๋ก ์ ๋ฌ๋ฉ๋๋ค.
-
3๋จ๊ณ: ๊ณต๊ณ ์ฌ๋ถ ํ๋ณ ๋ฐ ์ ์
- ์์ง๋ visitResult๋ Gemini LLM์ ์ ๋ฌ๋์ด ๋ค์ ์์ ์ ์ํํฉ๋๋ค:
- ์ฑ์ฉ ๊ณต๊ณ ์ฌ๋ถ ๋ถ๋ฅ (์ก๋ด/๋ด์ค/ํ์ฌ์๊ฐ ๋ฑ์ ์ ๊ฑฐ)
- ์ค์ ์ ๋ณด ์ถ์ถ ๋ฐ ๊ตฌ์กฐํ (ํ์ฌ๋ช , ํฌ์ง์ , ์ง์ญ, ๊ฒฝ๋ ฅ ์กฐ๊ฑด, ์๊ตฌ ์คํ ๋ฑ)
- ๊ฒฐ๊ณผ๋ ํํฐ๋ง๊ณผ ์ ์ ๊ณผ์ ์ ๊ฑฐ์ณ updater filter ๋ชจ๋๋ก ์ ๋ฌ๋ฉ๋๋ค.
-
4๋จ๊ณ: ์ต์ข ์ ์ฅ ๋ฐ ๊ฒ์ ์ต์ ํ
- ์ ์ ๋ ๊ณต๊ณ ๋ฐ์ดํฐ๋ MySQL ๊ธฐ๋ฐ์ main Jobs Database์ ์ ์ฅ๋ฉ๋๋ค.
- ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ดํ ๊ฒ์ ์์ง(์: Elasticsearch)์ด๋ ์ถ์ฒ ์์คํ ์์ ํ์ฉ ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
-
๋น๋๊ธฐ ๋ฐ ์์ ์ฑ ๊ตฌ์ฑ
- RabbitMQ๋ ์ ์ฒด ๊ณผ์ ์ ์ค๊ฐ ํ ์ญํ ์ ํ๋ฉฐ, ์์ ๊ฐ ๋น๋๊ธฐ ๋ฉ์์ง ์ ๋ฌ์ ๋ด๋นํฉ๋๋ค.
- Redis๋ URL deduplication, ์์ ์ํ ์ถ์ , ์ค๊ฐ ๊ฒฐ๊ณผ ์บ์ฑ ๋ฑ์ ์๋ ์ต์ ํ์ ์ํ ๊ด๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค.
FrontEnd
BackEnd
DB & Infra
Monitoring
์ธ๋ถ API
Utilities & Collaboration
- ์ปดํฌ๋ํธ๋ณ๋ก ๋๋ ๋ฐฑ์๋, ํ๋ก ํธ์๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์์ ์์ ํ๊ณ ๋ช ํํ CI/CD ์ด์
- ์ค์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฐํฌ ๋ธ๋์น์ ๊ฐ์ธ ์์ ๋ธ๋์น์ ๋ถ๋ฆฌ
main๋ธ๋์น๋ ์ฝ๋ ํตํฉ ๋ฐ ๊ตฌ์กฐ ํ์ธ์ฉ์ผ๋ก๋ง ์ฌ์ฉ
| ๋ธ๋์น๋ช | ์ญํ | ๋ฐฐํฌ ๋ฐฉ์ |
|---|---|---|
| dev_front | ํ๋ก ํธ์๋ | GitHub Actions โ S3, CloudFront |
| dev_spring | Spring ๋ฐฑ์๋ ์๋ฒ | GitHub Actions โ EC2 |
| dev_crawl | ํฌ๋กค๋ฌ ์๋ฒ (Node.js) | GitHub Actions โ EC2 |
| dev_RDB | MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค | GitHub Actions โ EC2 + Docker |
| dev_ES | FastAPI ์๋ฒ | GitHub Actions โ ECS, ECR |
- ๊ฐ ๋ธ๋์น๋ ๋ค์ ํ์ผ๋ค์ ํฌํจํฉ๋๋ค:
Dockerfiledocker-compose.yml.github/workflows/deploy.yml
- CI/CD๋ ํด๋น ๋ธ๋์น์์๋ง ๋์ํ๋ฉฐ, ๋ค๋ฅธ ๋ธ๋์น์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
| ์์ | ์ค๋ช |
|---|---|
| dev_spring_yh | ๊ฐ์ธ Spring ๋ฐฑ์๋ ์์ ์ฉ |
| dev_crawl_sh | ๊ฐ์ธ ํฌ๋กค๋ฌ ์์ ์ฉ |
- ๊ฐ์์ ์คํ ๋ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ด ๋ธ๋์น์์ ์์ ๋กญ๊ฒ ์งํํฉ๋๋ค.
- ์์ฑ ํ
dev_{part}๋ธ๋์น๋ก Pull Request๋ฅผ ์์ฑํฉ๋๋ค. - ๊ฐ์ธ ์์ ๋ธ๋์น์์๋ GitHub Actions๊ฐ ์คํ๋์ง ์์ต๋๋ค.
- ์๋น์ค ํตํฉ ๊ตฌ์กฐ ํ์ธ ๋ฐ ๋ฌธ์ํ๋ฅผ ์ํ ๋ธ๋์น์ ๋๋ค.
- ์ค์ ๋ฐฐํฌ๋ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉฐ,
.github/workflows๋๋ ํ ๋ฆฌ๋ ์กด์ฌํ์ง ์์ต๋๋ค.
root/
โโโ spring/ # dev_spring์์ ๋ณํฉ
โโโ crawl/ # dev_crawl์์ ๋ณํฉ
โโโ front/ # dev_front์์ ๋ณํฉ
โโโ rdb/ # dev_RDB์์ ๋ณํฉ
โโโ es/ # dev_ES์์ ๋ณํฉ
โโโ README.md # ํตํฉ ๋ฌธ์
- ๊ฐ
dev_{part}๋ธ๋์น์ ์กด์ฌํ๋.github/workflows/deploy.yml์ ํตํด ์๋ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
on:
push:
branches:
- dev_spring
paths:
- '**'









