안녕하세요 :) 이번 시리즈는 인턴 기간에 주 업무였던 배치 프로세스를 복귀하면서 공부해 보려합니다. 부족하지만 큰 도움이 되셨으면 좋겠습니다. 잘못된 내용이나 오류 지적은 언제나 환영입니다. 😄
먼저 제가 맡았던 업무와 구현 내용에 대해 간략히 소개하겠습니다.
당시 사내 직원들의 근무 시간을 통합 관리할 수 있는 시스템이 없어 회사는 사원들이 기입한 근무 시간을 토대로 근무 여부를 판단할 수 밖에 없었습니다(이해가 잘 안가는 시스템...).
이에 기입한 근무 시간
과 실제 회사 출입 사원증 태깅 기록
을 조회하고 비교해 볼 수 있는 통합 근태관리 서비스 프로젝트
에 참여했습니다.
제가 맡은 역할은 모든 사원이 각자 기입한 근무 시간 데이터와 태깅 데이터를 배치 프로세스를 통해 서비스 데이터베이스에 저장하고 동기화하는 부분
을 구현했습니다.
주요 고안점은 다음과 같았습니다.
KakaoCloud
Next.js
Nest.js
Mysql
Spring Batch
사용 기술 스택은 당시 프로젝트에서 사용한 내용일 뿐 시리즈의 진행과는 상관없는 참고용입니다.
서비스의 전체 시스템 아키텍처 입니다.
실시간 태깅 데이터
를 호출하여 저장하는 BATCH A
근무 입력 데이터
를 호출하여 저장하는 BATCH B
두 테이블의 동기화
를 진행하는 BATCH C
이외에도 공휴일 정보, 추가된 사원 확인, 매달 첫날 key값 초기화 등을 수행하는 배치가 있으며 총 6가지 배치로 이루어진 프로세스입니다.
시리즈에서 다룰 주요 내용은 다음과 같습니다.
- Spring Batch 알아보기
- Spring Batch v4.xx vs v5.xx 차이점
- Spring Batch STEP 구현체 비교 (Tasklet vs Chunk)
- 배치 프로세스 성능 개선
목차 순서로 시리즈를 진행해보겠습니다:) 😆