평화이즈에서 의료 데이터를 기반으로 한 통계 및 시각화 데스크톱 애플리케이션 개발을 담당했습니다. 이 프로젝트는 저에게 단순히 기능을 구현하는 것을 넘어, 소프트웨어 아키텍처의 깊이를 고민하고 데이터 처리 성능을 끌어올리는 귀중한 경험이 되었습니다.
아키텍처 설계
WPF 개발에서 MVVM(Model-View-ViewModel) 패턴을 사용하는 것은 표준과도 같았습니다. 어떻게 하면 더 유지보수하기 쉽고 확장성 있는 구조를 만들 수 있을지 고민했습니다.
- 구조적 상속과 추상화: 이전의 MVVM 경험을 바탕으로, 공통된 로직과 속성을 담은
BaseViewModel
을 설계하고 이를 상속받는 구조를 적용했습니다. 이를 통해 중복 코드를 획기적으로 줄이고, 새로운 ViewModel을 만들 때 지켜야 할 규약을 명확히 하여 전체 아키텍처의 일관성을 확보했습니다. - 관심사의 분리 강화: View는 오직 UI 로직에만 집중하고, 모든 상태와 비즈니스 로직은 ViewModel이 책임지도록 역할을 엄격하게 분리했습니다. 이 원칙은 코드의 예측 가능성을 높여 디버깅을 용이하게 만들었습니다.
UI 커스터마이징
복잡한 의료 통계 데이터를 사용자에게 효과적으로 전달하기 위해서는 UI의 표현력이 매우 중요했습니다. 저는 DevExpress라는 상용 UI 라이브러리를 활용했지만, 요구사항에 맞는 데이터의 특성에 맞는 컨트롤을 직접 CustomControl을 통해 커스터마이징하거나 새롭게 구현하는 데 많은 노력을 기울였습니다.
이 과정에서 WPF의 UI 구성 및 확장 방식에 대한 깊은 이해를 얻었으며, 데이터를 가장 효과적으로 표현하는 UX에 대한 실질적인 인사이트를 쌓을 수 있었습니다.
성능 최적화
통계 기능의 핵심은 대용량 데이터를 빠르고 정확하게 처리하는 것이었습니다. 애플리케이션의 반응 속도가 느려지는 문제를 해결하기 위해, 저는 프론트엔드 개발자의 역할을 넘어 직접 데이터베이스단까지 파고들었습니다.
느린 쿼리를 찾아내고 실행 계획을 분석하며 직접 SQL 쿼리를 튜닝하는 과정을 통해, 데이터 처리 성능을 크게 개선했습니다. 이 경험은 애플리케이션 성능이 단지 코드 한 줄이 아닌, 전체 시스템의 상호작용에 의해 결정된다는 사실을 체감하게 된 중요한 계기가 되었습니다.