개인
병원 채용공고 알림 프로젝트
2024-08-02 — 2024-08-14
4개 대학병원 채용공고를 자동 수집하고 키워드 기반 이메일 알림을 제공하는 서버리스 백엔드 서비스
프로젝트 설명
의료계 취업 준비생이 여러 대학병원 채용 사이트를 일일이 확인해야 하는 불편함을 해소하기 위해 개발한 프로젝트이다. 세브란스, 이대, 중앙대 등 4개 대학병원의 채용공고를 매시간 자동으로 스크래핑하고, 구독자가 등록한 키워드와 매칭되는 신규 공고를 이메일로 알려준다. 병원별로 상이한 채용 사이트 구조에 대응하기 위해 Strategy 패턴을 적용하여 API 기반 스크래핑과 Puppeteer 브라우저 자동화를 병원별로 분리 구현했으며, 알림 큐에 비관적 락과 재시도 로직을 적용하여 이메일 발송의 신뢰성을 확보했다.
주요 내용
- 4개 대학병원 채용공고 매시간 자동 수집, Strategy 패턴 적용
- 비관적 락 기반 알림 큐로 동시 처리 시 중복 발송 방지
- Docker EC2 + Serverless Lambda 이중 배포 구성
- GitHub Actions CI/CD 구축 및 배포 후 헬스체크 자동 검증
담당 기능
- 4개 대학병원 채용공고 자동 스크래핑 (매시간 크론 스케줄링)
- 병원별 Strategy 패턴 기반 스크래핑 — API 방식(세브란스, 이대, 중앙대) + Puppeteer 브라우저 자동화(중앙대 흑석)
- 구독자 키워드 매칭 기반 신규 공고 이메일 알림
- 알림 큐 관리 — 비관적 락, 배치 처리(10건), 실패 시 최대 3회 재시도
- 외부 ID 기반 중복 공고 필터링
- 구독 관리 API (병원별 키워드 등록)
깨달은 점
- 💡 병원별 상이한 사이트 구조에 Strategy 패턴을 적용하여 스크래핑 로직의 확장성과 유지보수성 확보
- 💡 Strategy 패턴의 런타임 알고리즘 전환으로 새로운 병원 추가 시 기존 코드 수정 없이 확장 가능한 구조 설계
- 💡 EC2 상시 서버와 Lambda 서버리스를 이중 배포하여 비용 효율과 안정성을 동시에 확보하는 아키텍처 경험
- 💡 GitHub Actions CI/CD 파이프라인 구축과 배포 후 헬스체크 자동화로 무중단 배포 신뢰성 확보
기술 스택
NestJS TypeScript PostgreSQL TypeORM Puppeteer Cheerio Nodemailer Docker AWS EC2 AWS RDS AWS Lambda Serverless Framework