척척학사는 학생들이 학교 포털과 연동하여 본인의 이수 현황과 졸업 요건을 손쉽게 확인하고 관리할 수 있도록 도와주는 서비스입니다.
기존에는 학생들이 졸업 요건을 직접 확인하며 수작업으로 비교해야 했지만,
척척학사는 이를 학교 포털과 비동기 연동, 자동 분석, 시각적 안내 기능으로 효율화합니다.
- ✅ 6,000명 이상 수원대 재학생 사용 중
- 🔁 학교 포털과 비동기 연동 + job_id 상태 조회
- 🧠 졸업 요건 자동 분석 및 부족 항목 안내
- 포털 연동을 통한 학점·성적·커리큘럼 비동기 동기화
- 졸업 요건과 사용자 학사 정보 자동 비교
- 부족한 학점 및 조건 자동 분석 및 안내
- job_id 기반 비동기 파이프라인: 요청 접수 -> Outbox 패턴으로 SQS에 발행 -> 비동기 처리 후 결과 반영
APP_KEY: 카카오 OIDCaud검증에 사용하는 기본 키(REST API 키)APP_NATIVE_KEY: 안드로이드 OIDCaud검증에 사용하는 네이티브 앱 키 (선택)
GitHub Actions 배포 시
dev/prod저장소 secrets에APP_NATIVE_KEY를 함께 등록해야 합니다.
- Java 17
- Spring Boot 3.2.5
- Spring Security, OAuth2
- JPA, Hibernate
- AWS API Gateway (HTTP API v2) + AWS Lambda (Spring Boot) + Route53/ACM
- AWS SQS + HMAC Callback 파이프라인 (스크래핑 워커 연동)
- PostgreSQL (Supabase 연동) + Caffeine / Redis 캐시
- Observability: Sentry, Grafana Cloud(OTLP), CloudWatch Logs
- Docker 기반 Lambda 패키징 및 GitHub Actions 배포
장애 롤백 대비를 위해 기존 EC2 ASG 경로는 보조 배포선으로 유지합니다.
- Git, GitHub
- Swagger (OpenAPI)
- Gradle, Tomcat
flowchart LR
Client["Web / Android Client"]
APIGW["API Gateway (HTTP API v2)"]
Lambda["AWS Lambda (Spring Boot)"]
Domain["Domain & Graduation Analysis"]
DB[(PostgreSQL)]
Cache[(Caffeine / Redis)]
Outbox["Scrape Job & Outbox"]
SQS["AWS SQS Queue"]
Worker["Scraping Worker"]
Portal["University Portal"]
Client --> APIGW --> Lambda
Lambda --> Domain
Domain --> DB
Domain --> Cache
Lambda -->|idempotent job_id| Outbox --> SQS --> Worker --> Portal
Worker -- HMAC signed callback --> APIGW
APIGW --> Lambda
- 사용자는
Idempotency-Key와 함께 비동기 포털 연동을 요청하고, Lambda는 job_id와 polling endpoint를 즉시 반환합니다. - 스크래핑 요청은 Scrape Job Outbox -> AWS SQS -> 전용 워커 -> 학교 포털 순으로 전달되어 병목을 분리합니다.
- 워커는 HMAC 서명된 callback을 API Gateway로 보내고, Lambda는 이를 처리해 졸업 요건 데이터/캐시를 갱신한 뒤 상태/요약 API에 반영합니다.
척척학사의 핵심 기능인 포털 동기화, 데이터 적재, 졸업 요건 분석 프로세스에 대한 시퀀스 다이어그램입니다.
type: subject
body (선택)
feat: 기능 추가
fix: 버그 수정
refactor: 코드 리팩토링
comment: 주석 추가/수정
docs: 문서 수정
test: 테스트 코드 작성 또는 수정
chore: 빌드/패키지 설정 변경
rename: 파일/폴더명 변경
remove: 파일 삭제
style: 코드 포맷팅
!BREAKING CHANGE!: 기존 API 사용에 영향을 주는 변경 (예: 응답 포맷 변경 등)
feat: 로그인 기능 구현
Email 중복확인 API 개발
---
fix: 사용자 정보 누락 버그 해결
사용자 서비스 코드 수정







