Personal
Hospital Job Alert Service
2024-08-02 — 2024-08-14
Serverless backend service that automatically collects job postings from 4 university hospitals and delivers keyword-based email notifications
Project Description
Built to eliminate the hassle of manually checking multiple hospital career sites for medical job seekers. The service automatically scrapes job postings from 4 university hospitals (Severance, Ewha, Chung-Ang, etc.) every hour and sends email notifications when new postings match subscriber-registered keywords. Applied the Strategy pattern to handle varying hospital site structures — separating API-based scraping and Puppeteer browser automation per hospital. Ensured email delivery reliability through pessimistic locking and retry logic on the notification queue.
Highlights
- Hourly automated collection from 4 hospitals with Strategy pattern
- Pessimistic locking on notification queue preventing duplicate sends
- Dual deployment: Docker on EC2 + Serverless Framework on Lambda
- GitHub Actions CI/CD with automated post-deploy health checks
Features
- Automated scraping of 4 university hospital job postings (hourly cron scheduling)
- Strategy pattern per hospital — API-based (Severance, Ewha, Chung-Ang) + Puppeteer browser automation (Chung-Ang Heukseok)
- Email notifications for new postings matching subscriber keywords
- Notification queue management — pessimistic locking, batch processing (10), up to 3 retries on failure
- Duplicate post filtering via external ID
- Subscription management API (keyword registration per hospital)
Lessons Learned
- 💡 Achieved scraping logic extensibility and maintainability by applying Strategy pattern to handle varying hospital site structures
- 💡 Designed extensible architecture enabling new hospital additions without modifying existing code through runtime algorithm switching
- 💡 Experienced dual deployment architecture combining EC2 persistent server with Lambda serverless for cost efficiency and reliability
- 💡 Ensured deployment reliability through GitHub Actions CI/CD pipeline with automated post-deploy health checks
Tech Stack
NestJS TypeScript PostgreSQL TypeORM Puppeteer Cheerio Nodemailer Docker AWS EC2 AWS RDS AWS Lambda Serverless Framework