그동안 공부했던 내용들 그리고 프로젝트들을 통해 얻었던 키워드들 중
중요했고, 다시 공부했고, 다시 공부해야하는 것들을 적었다.
송인태님: 백엔드 개발자로 일하며 다양한 도전적인 과제들을 수행해왔고, 그중 주문별 라이더 배치작업 성능 개선 과제를 소개하고자 합니다.
서비스가 빠르게 성장하며 주문별 라이더 배치작업 시스템의 데이터베이스에도 영향을 주기 시작했어요. 시스템 알람을 통해 장애가 발생하기 전에 로그 및 지표들을 확인하며 두 가지 문제점을 발견하게 되었습니다.
첫 번째는 데이터를 병렬로 처리하고 있는데, 데이터양이 방대해진 탓에 사용하는 스레드 개수가 증가하고 있었고 두 번째로는 각각의 스레드들이 독립적으로 작업을 수행하여 전체 배치의 성공 여부와, 배치 작업 완료 시점을 파악하기 어려운 부분이 있었습니다.
마침, 저희가 사용하는 기술 중에 스프링 배치로 문제점을 해결할 수 있는 Partitioning 기술을 제공하고 있어서 작업을 하는 스레드수를 손쉽게 제어할 수 있었고 전체 배치 성공 여부 및 완료 시점을 파악할 수 있었습니다. 또한 파트에서 이미 사용하고 있는 기술셋을 이용함으로써 다른 개발자분이 이해하기 쉬운 구조로 만들 수 있었어요.
이 경험이 인상 깊었던 것은 제가 주도적으로 모니터링을 진행하면서 장애가 발생할 수 있었던 문제를 파악해 사용하는 기술을 조금 더 깊이 있게 학습하며 현재 상황에 필요한 사항을 반영하는 경험을 할 수 있었던 점과 팀분들이 지속적으로 리뷰하고 피드백을 주셔서 문제를 잘 해결해 나가며 더 큰 보람을 느꼈기 때문입니다.
Tomcat
스프링부트 내장 WAS
Netty
리액티브 프로그래밍, Webflux2 내장 WAS
Redis