[MSA 전환 및 계산 서버 비동기 처리로 API 성능 개선 (4초 → 1초)]
- 학생 출석률 집계 시, 다중 API 호출과 순차 처리로 인한 성능 병목 발생
- 코루틴의 Dispatcher.IO, async, await를 사용해 비동기 처리로 전환, 이를 통해 응답 시간을 4초에서 1초로 단축하여 성능 개선
[DB 레플리카를 활용한 서버 부하 분산]
- K6로 부하 테스트를 진행한 결과, 실 사용 시 서버 접속 실패와 타임아웃 발생 가능성이 예측됨
- JPA의 DataSource 라우팅을 사용해 Master-Slave 구조로 DB 분산 처리 구현
[테스트 코드로 안정성 확보]
- 프로젝트가 진행될수록 코드 수정 시 사이드 이펙트에 대한 불안감이 커져 테스트 코드의 필요성을 느낌
- 팀과 협의하여 서비스 및 컨트롤러 레이어까지 테스트 범위를 정하고, 테스트 통과 후에만 PR 가능하도록 컨벤션을 설정
- JUnit5와 Mockito를 사용해 테스트 코드 작성
[파사드 패턴으로 순환 참조 해결 및 로직 단순화]
- 도메인이 복잡해지면서 서비스 레이어 간 순환 참조 문제가 발생
- 비즈니스 로직이 구현 세부 로직과 결합되어 전체적인 흐름 파악이 어려웠음
- 파사드 패턴을 도입해 순환 참조를 해결하고, 비즈니스 로직을 깔끔하게 정리
[전략 패턴으로 중복된 조건문 제거]
- 출석 시스템 개발 중, if문으로 타입을 구분하는 중복 코드가 발생하여 추가 요구사항이 생길 경우 확장성 문제가 우려됨
- 첫 번째로, 공통적인 처리 흐름을 탬플릿 메소드 패턴으로 리팩토링
- 두 번째로, 전략 패턴을 도입해 새로운 전략 추가 시 기존 코드를 수정할 필요 없이 중복 코드를 제거
더보기