피플앤드테크놀러지 솔루션개발 1팀에서 의료 IoT 도메인의 백엔드 엔지니어로 근무하며, 환자 바이탈 센서와 위치추적 태그 등 다양한 의료 IoT 기기의 실시간 데이터를 처리했습니다.
IoT 데이터 처리 엔진
- 동기 HTTP와 단일 서버 구조를 MQTT, Kafka 기반 비동기 메시지 구조로 전환했습니다.
- 단일 API 서버를
core-api와service-api로 분리했습니다. - MariaDB 샤딩과 Galera Cluster, MongoDB 시계열 저장, Redis Cluster를 적용했습니다.
- k6 기준 가상 사용자 10,000명, 30분 지속, 총 1,800만 건 요청에서 10,000 TPS를 달성했습니다.
- 응답 속도를 40% 개선하고 서버 운영 비용을 약 30% 절감했습니다.
협력사 연동 파이프라인
- Kafka 기반 사내 플랫폼과 Kafka를 사용하지 않는 협력사 서버 사이의 Netty TCP 커넥터를 구현했습니다.
- 분할 도착하는 ECG 프레임을 프레임 ID와 조각 인덱스로 재조립했습니다.
- 유예 시간 내 재정렬과 고정 간격 방출로 순서, 간격, 지연 상한을 함께 제어했습니다.
- 카운터 롤오버를 단조 증가 가상 시퀀스 키로 변환해 역행과 중복 패킷을 폐기했습니다.
- 협력사의 2초 폐기 SLA를 충족했고, 사내 의료 도메인 개발팀의 표준 ECG 처리 엔진으로 선정됐습니다.
EMR 연동 장애 해결
- Redis 단일 HASH의 O(n) 조회와 쓰기를 직원별 개별 키로 나눠 O(1) 조회로 바꿨습니다.
- CGLib와 JDK 프록시가 혼재하던 AOP 구성을 JDK Dynamic Proxy로 일원화했습니다.
- 10억 건 단일 로그 테이블을 날짜 기반 파티셔닝과
DROP PARTITION방식으로 전환했습니다. - 상용 서버 CPU 사용률을 99%에서 60% 이하로 안정화했습니다.
- 로그 삭제 스케줄러 실행 시간을 20시간에서 1시간으로 단축했습니다.
테스트 코드 도입
- Spring REST Docs, Testcontainers, JUnit5를 도입했습니다.
- 테스트 작성과 API 문서 생성, Slack 알림을 연결했습니다.
- QA 단계 수정 PR을 약 90% 줄였고, 3개월 목표를 2개월 만에 완료했습니다.