Skip to content

hun9008/CV_Search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

72 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

goodJob: CV ๊ธฐ๋ฐ˜ ์ฑ„์šฉ๊ณต๊ณ  ์ถ”์ฒœ ํ”Œ๋žซํผ

Team Member

Name Part What I do branch
์ •์šฉํ›ˆ BE AI ์ถ”์ฒœ ์‹œ์Šคํ…œ ๋ฐ OCR ํŒŒ์ดํ”„๋ผ์ธ, ์ถ”์ฒœ ๊ด€๋ จ API ๋ฐ Redis ์บ์‹ฑ, DevOps Go to Dev Go to Dev
์œ ์ง„ BE OAuth ํšŒ์›๊ฐ€์ž…, ์ง€์›์ด๋ ฅ, ํ”ผ๋“œ๋ฐฑ ์ƒ์„ฑ, ๊ณต๊ณ  ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ Go to Dev
์œก์„ธํ˜„ DATA ํฌ๋กค๋ง, ํ•„ํ„ฐ๋ง, ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๊ตฌํ˜„ Go to Dev
์œ„์˜์ข… FE ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ UX/UI Go to Dev
  • ๋ฑƒ์ง€๋ฅผ ๋ˆŒ๋Ÿฌ ๊ฐ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

DeepWiki Docs Visit GoodJob

goodJob์€ ๊ตฌ์ง์ž๊ฐ€ PDF ํ˜•์‹์˜ ์ด๋ ฅ์„œ(CV)๋ฅผ ์—…๋กœ๋“œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด
์ด๋ ฅ์„œ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ๋งž์ถค ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ์ถ”์ฒœํ•˜๊ณ 
์ง€์› ํ˜„ํ™ฉ์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ํ†ตํ•ฉ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ์ฐจ๋ณ„์ 

์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ CV๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํฌ๋กค๋ง๋œ ์ฑ„์šฉ ๊ณต๊ณ ๋“ค๊ณผ์˜ ํ…์ŠคํŠธ ๋ฐ
์ž„๋ฒ ๋”ฉ ์œ ์‚ฌ๋„ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ณต๊ณ ๋ฅผ ์ž๋™ ์ถ”์ฒœํ•˜๋Š” ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

  • ์ขŒ์ธก: ์ถ”์ฒœ ๊ณต๊ณ  ๋ฆฌ์ŠคํŠธ (์œ ์‚ฌ๋„ ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์ •๋ ฌ)
  • ์šฐ์ธก: ์„ ํƒํ•œ ๊ณต๊ณ ์˜ ์ƒ์„ธ ์ •๋ณด, ๋งค์นญ ์ ์ˆ˜, ํ”ผ๋“œ๋ฐฑ, ์ง€์› ๊ธฐ๋Šฅ ์ œ๊ณต

๊ด€์‹ฌ ์žˆ๋Š” ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ๋ถ๋งˆํฌํ•˜์—ฌ ์ €์žฅํ•˜๊ณ 
ํ•œ๋ˆˆ์— ๋น„๊ตํ•˜๊ฑฐ๋‚˜ ์ถ”ํ›„ ์ง€์›์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

  • ์นด๋“œํ˜• UI๋กœ ๊ณต๊ณ ๋“ค์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •๋ฆฌ
  • ์ƒ์„ธ ๋ณด๊ธฐ ๋ฐ ์ƒํƒœ ํ™•์ธ์ด ์šฉ์ด

1. CV ํ˜•์‹ ๋ฌด๊ด€, ์ •๋ฐ€ ๊ณต๊ณ  ์ถ”์ฒœ

ํ•ญ๋ชฉ ์„ค๋ช…
ํ˜•์‹ ์ž์œ ๋„ ์–ด๋–ค ํ˜•ํƒœ์˜ PDF ์ด๋ ฅ์„œ๋“  ์—…๋กœ๋“œ๋งŒ ํ•˜๋ฉด ๋ถ„์„ ๊ฐ€๋Šฅ
๊ธฐ์ˆ  ๊ธฐ๋ฐ˜ VILA ๊ธฐ๋ฐ˜ OCR (EfficientNet ๊ธฐ๋ฐ˜)๋กœ ๋ฌธ์„œ ๊ตฌ์กฐ์™€ ์‹œ๊ฐ ๋ธ”๋ก ์ •๋ฐ€ ์ธ์‹
์ถ”์ฒœ ๋กœ์ง BM25 (TF-IDF ๊ธฐ๋ฐ˜ ํ‚ค์›Œ๋“œ ์œ ์‚ฌ๋„)
+ SentenceTransformer (Cosine Similarity)
๊ฒฐ๊ณผ ์ž์œ  ์–‘์‹ ์ด๋ ฅ์„œ๋„ ๋†’์€ ์ •ํ™•๋„๋กœ ์ฑ„์šฉ ๊ณต๊ณ  ์ž๋™ ์ถ”์ฒœ

2. ๊ตฌ์ฒด์ ์ด๊ณ  ์‹ค์šฉ์ ์ธ ๊ณต๊ณ  ํ”ผ๋“œ๋ฐฑ

ํ•ญ๋ชฉ ์„ค๋ช…
๋ถ„์„ ๋Œ€์ƒ ์ฑ„์šฉ ๊ณต๊ณ ์™€ ์ด๋ ฅ์„œ๋ฅผ ํ•ญ๋ชฉ ๋‹จ์œ„๋กœ ์ •๋ ฌยท๋น„๊ต
๋ถ„์„ ํ•ญ๋ชฉ ๋ถ€์กฑํ•œ ์—ญ๋Ÿ‰ (๊ธฐ์ˆ  ์Šคํƒ, ํ”„๋กœ์ ํŠธ ๋“ฑ)
๊ฐ•์  ์š”์†Œ (ํ•ต์‹ฌ ๊ธฐ์ˆ , ์—ฐ์ฐจ ๋“ฑ)
ํ”ผ๋“œ๋ฐฑ ๋ฐฉ์‹ ํ•ญ๋ชฉ๋ณ„๋กœ ์ •๋Ÿ‰์  ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต
์‚ฌ์šฉ์ž ํšจ๊ณผ ๋ชฉํ‘œ ์„ค์ •๊ณผ ๋ณด์™„ ์ „๋žต ์ˆ˜๋ฆฝ ๊ฐ€๋Šฅ
๋‹จ์ˆœ ์ถ”์ฒœ์„ ๋„˜์–ด์„  ์‹ค์งˆ์  ๋ฐฉํ–ฅ ์ œ์‹œ

3. ํ†ตํ•ฉ๋œ ์ด๋ ฅ ๋ฐ ์ง€์› ํ˜„ํ™ฉ ๊ด€๋ฆฌ

ํ•ญ๋ชฉ ์„ค๋ช…
๊ธฐ๋Šฅ ๊ด€์‹ฌ ๊ณต๊ณ  ๋ถ๋งˆํฌ
์ง€์› ์ด๋ ฅ ๋ฐ ์ƒํƒœ(์ง€์› ์™„๋ฃŒ, ๊ฒฐ๊ณผ ๋Œ€๊ธฐ ๋“ฑ) ํ†ตํ•ฉ ๊ด€๋ฆฌ
ํšจ์œจ์„ฑ ๊ณต๊ณ  ํƒ์ƒ‰๋ถ€ํ„ฐ ์ง€์›ยท๊ฒฐ๊ณผ ํ™•์ธ๊นŒ์ง€ ํ•œ ํ”Œ๋žซํผ์—์„œ ์—ฐ์†์  ํ๋ฆ„ ์ œ๊ณต
์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ถ„์‚ฐ๋œ ๊ตฌ์ง ํ™œ๋™์„ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ ํšจ์œจ ๊ทน๋Œ€ํ™”

4. ์šด์˜ ํ™•์žฅ์„ฑ๊ณผ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€์›

ํ•ญ๋ชฉ ์„ค๋ช…
๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ Prometheus + Grafana ๋Œ€์‹œ๋ณด๋“œ
์ง€ํ‘œ ํ™•์ธ ์„œ๋ฒ„ ๋ถ€ํ•˜, ์ถ”์ฒœ ์‘๋‹ต ์‹œ๊ฐ„, ์‚ฌ์šฉ์ž ์ง€ํ‘œ ๋“ฑ ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™”
์•ˆ์ •์„ฑ ํ™•๋ณด RabbitMQ, Redis, ECS ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ํ™•์žฅ ๋ฐ ๋ณต์› ๊ฐ€๋Šฅ
์ „์ฒด ํ๋ฆ„ ๊ด€๋ฆฌ ์ถ”์ฒœ, OCR, ํฌ๋กค๋ง ๋“ฑ ๋ชจ๋“  ์‹œ์Šคํ…œ ์ƒํƒœ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง

์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์›์น™

  1. DB Isolation: ๊ธฐ๋Šฅ ๋‹จ์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„๋ฆฌ ์‚ฌ์šฉ์ž, ๊ณต๊ณ , ์ถ”์ฒœ, ์ด๋ ฅ์„œ ๋“ฑ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ชจ๋“ˆ๋ณ„ ๋…๋ฆฝ ๋ฐฐํฌ์™€ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ ์ตœ์†Œํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ์€ API ๋ ˆ๋ฒจ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  2. ํ™•์žฅ์„ฑ๊ณผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: ์ถ”์ฒœ ์—ฐ์‚ฐ์€ FastAPI ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ๋˜๋ฉฐ ECS ๊ธฐ๋ฐ˜ Auto Scaling์„ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. RabbitMQ๋กœ ์š”์ฒญ์„ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌํ•˜๊ณ  Redis ์บ์‹ฑ์œผ๋กœ ์‘๋‹ต ์†๋„์™€ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค.

  3. ๋ชจ๋“ˆํ™”์™€ ์ฑ…์ž„ ๋ถ„๋ฆฌ: ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, ์ถ”์ฒœ ์„œ๋ฒ„, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ชจ๋‘ ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜๋˜์–ด ์œ ์ง€๋ณด์ˆ˜์™€ ์žฅ์•  ๋Œ€์‘์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

  • 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, ์ž‘์—… ์ƒํƒœ ์ถ”์ , ์ค‘๊ฐ„ ๊ฒฐ๊ณผ ์บ์‹ฑ ๋“ฑ์˜ ์†๋„ ์ตœ์ ํ™”์™€ ์ƒํƒœ ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Tech Stack

FrontEnd

TypeScript React SCSS Zustand Vite

BackEnd

Java Spring Boot Spring Data JPA Spring Security JUnit Jacoco Gradle FastAPI Pytest Tomcat Node.js

DB & Infra

MySQL Elasticsearch Redis Docker GitHub Actions AWS EC2 AWS S3 CloudFront Route53 ECS ECR ALB Naver Cloud

Monitoring

Prometheus Grafana Kibana

์™ธ๋ถ€ API

Google API Kakao API Claude

Utilities & Collaboration

Notion Figma Swagger Google Docs Jira Slack draw.io

Git ๋ธŒ๋žœ์น˜ ๋ฐ ๋ฐฐํฌ ์ „๋žต

๋ชฉ์ 

  • ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ๋‚˜๋‰œ ๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ณ  ๋ช…ํ™•ํ•œ CI/CD ์šด์˜
  • ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐํฌ ๋ธŒ๋žœ์น˜์™€ ๊ฐœ์ธ ์ž‘์—… ๋ธŒ๋žœ์น˜์˜ ๋ถ„๋ฆฌ
  • main ๋ธŒ๋žœ์น˜๋Š” ์ฝ”๋“œ ํ†ตํ•ฉ ๋ฐ ๊ตฌ์กฐ ํ™•์ธ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉ

๋ธŒ๋žœ์น˜ ๊ตฌ์กฐ

1. ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜ (dev_{part})

๋ธŒ๋žœ์น˜๋ช… ์—ญํ•  ๋ฐฐํฌ ๋ฐฉ์‹
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
  • ๊ฐ ๋ธŒ๋žœ์น˜๋Š” ๋‹ค์Œ ํŒŒ์ผ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
    • Dockerfile
    • docker-compose.yml
    • .github/workflows/deploy.yml
  • CI/CD๋Š” ํ•ด๋‹น ๋ธŒ๋žœ์น˜์—์„œ๋งŒ ๋™์ž‘ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. ๊ฐœ์ธ ์ž‘์—…์šฉ ๋ธŒ๋žœ์น˜ (dev_{part}_{name})

์˜ˆ์‹œ ์„ค๋ช…
dev_spring_yh ๊ฐœ์ธ Spring ๋ฐฑ์—”๋“œ ์ž‘์—…์šฉ
dev_crawl_sh ๊ฐœ์ธ ํฌ๋กค๋Ÿฌ ์ž‘์—…์šฉ
  • ๊ฐ์ž์˜ ์‹คํ—˜ ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์€ ์ด ๋ธŒ๋žœ์น˜์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์™„์„ฑ ํ›„ dev_{part} ๋ธŒ๋žœ์น˜๋กœ Pull Request๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ์ธ ์ž‘์—… ๋ธŒ๋žœ์น˜์—์„œ๋Š” GitHub Actions๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3. main ๋ธŒ๋žœ์น˜

  • ์„œ๋น„์Šค ํ†ตํ•ฉ ๊ตฌ์กฐ ํ™•์ธ ๋ฐ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค.
  • ์‹ค์ œ ๋ฐฐํฌ๋Š” ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์œผ๋ฉฐ, .github/workflows ๋””๋ ‰ํ† ๋ฆฌ๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
root/
โ”œโ”€โ”€ spring/       # dev_spring์—์„œ ๋ณ‘ํ•ฉ
โ”œโ”€โ”€ crawl/        # dev_crawl์—์„œ ๋ณ‘ํ•ฉ
โ”œโ”€โ”€ front/        # dev_front์—์„œ ๋ณ‘ํ•ฉ
โ”œโ”€โ”€ rdb/          # dev_RDB์—์„œ ๋ณ‘ํ•ฉ
โ”œโ”€โ”€ es/           # dev_ES์—์„œ ๋ณ‘ํ•ฉ
โ””โ”€โ”€ README.md     # ํ†ตํ•ฉ ๋ฌธ์„œ

GitHub Actions ์ž‘๋™ ๋ฐฉ์‹

  • ๊ฐ dev_{part} ๋ธŒ๋žœ์น˜์— ์กด์žฌํ•˜๋Š” .github/workflows/deploy.yml์„ ํ†ตํ•ด ์ž๋™ ๋ฐฐํฌ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
on:
  push:
    branches:
      - dev_spring
    paths:
      - '**'

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors