📌 Webmail 시스템 유지보수 및 개선 프로젝트

paste-1774241047570.png

paste-1774241124176.png

1. 프로젝트 개요

- 기존 Webmail 시스템의 기능 보완을 넘어, 장기적인 운영과 확장을 고려한 구조 개선을 목표로 진행한 프로젝트

- Spring Boot 기반으로 시스템을 재구성하고, 계층 분리와 유지보수 전략(완전화, 교정, 적응, 예방, 테스트)을 적용하여 코드 품질과 확장성을 향상하는 것을 목표함


2. 문제 기술

1. 기능 안정성 문제

- 로그인 실패, 첨부파일 처리 오류 등 기본 기능에서 예외 발생 시 정상적인 처리 및 안내가 부족한 상태

2. 구조적 한계로 인한 유지보수 어려움

- Controller에 비즈니스 로직이 집중되어 역할 분리가 이루어지지 않은 구조

- 중복 코드 및 비표준 코드로 인해 코드 가독성과 유지보수성 저하

3. 보안 및 기술 스택의 한계

- Spring Security 미적용으로 인증 및 보안 처리 미흡

- 기존 메일 서버 환경과 최신 서버 환경간 통합 부족

4. 확장성 및 사용자 기능 부족

- 주소록, 보낸 메일함, 다중 첨부파일 등 주요 기능 부족

- 기능 추가 시 구조적 제약 발생

5. 테스트 환경 부재

- 단위 테스트가 부족하여 코드 변경 시 안정성 검증이 어려운 상태


3. 주요 기능


4. 기술 스택


5. 핵심 구현 및 문제 해결

  1. Apache James 3.8.2 버전 업그레이드 (적응 유지보수)

    - Apache James 2.3.2는 최신 Java 버전 및 Jakarta EE 환경과의 호환성이 부족하고, 최신 보안 프로토콜 지원이 제한적임또한 유지보수와 확장성 측면에도 한계가 있어, 이에 대응하기 위하여 Apache James 3.8.2로 업그레이드를 수행하고, 그에 따른 기존 사용자 관리 로직을 새로운 구조에 맞게 리팩토링하였음

    paste-1774239238752.png


  2. 코드 품질 개선 (교정 유지보수)

    - 코드 품질 향상을 위해, 정적 코드 분석 툴 ‘SonarQube’를 사용하여 코드스멜을 발견 후, 소프트웨어 품질 유형에 따라 분류한 뒤 결함 심각도에 따라 우선순위를 부여하여 결함을 제거하였음

    paste-1774239579626.png

    paste-1774239080735.png



  3. 구조 개선 및 확장성 확보 (예방 유지보수)

    - Controller에 혼재되어 있던 비즈니스 로직을 Service 계층으로 분리하여 책임을 명확히 정리

    - 계층 분리 구조로 개선하여 코드 가독성과 유지보수성, 테스트 용이성 향상


  4. 보안 및 설정 개선

    - Spring Security 기반 인증 처리 보완

    - CSRF 보호 적용 및 폼 구조 수정으로 보안 취약점 개선


  5. 테스트 코드 작성 및 검증

    - 기능 별 단위 테스트 작성 (MockMvc 기반)

    - 기존 기능 변경 없이 테스트 가능한 구조로 리팩토링하여 커버리지 80% 이상을 확보

    paste-1774241249882.png


6. 결과 및 성과

- 테스트 코드 부재 → MockMvc 기반 테스트 도입으로 커버리지 80% 이상 확보

- Controller 중심 구조 → 계층 분리 구조로 개선하여 유지보수성 향상

- Apache James 2.3.2 → 3.8.2 업그레이드를 통해 보안 및 호환성 개선

- 코드스멜 제거로 시스템 안정성 향상