대마위키는 대덕소프트웨어마이스터고등학교 학생들을 위한 위키 서비스입니다.
Spring WebFlux를 사용하여, 전부 리액티브 스택으로 리소스 사용을 최적화한 고성능 웹 애플리케이션을 구축하였습니다.
이 프로젝트에서 백엔드 리드를 맡아 전체 API 설계 및 구현을 주도했으며, 함수형 프로그래밍과 리액티브 프로그래밍 패러다임을 사용하여 고성능 웹 애플리케이션 구축을 하였습니다.
문서 관리 작성 및 관리
대마위키의 핵심 도메인인 ‘문서 관리’에 필요한 모든 API를 설계 및 구현하였습니다.
실시간 문서 공동 편집
실시간 문서 공동 편집 기능에서 발생하는 갱신 손실 문제를 WebSocket과 작업 동기화를 통해 해결했습니다. 여러 사용자의 동시 편집을 가능하게 했으며, 커스텀 Flow 객체를 공유하여 데이터 일관성을 유지하면서도 실시간 협업이 가능하도록 구현했습니다.
또한, 노션과 같이 하나의 열을 객체로 분리하여 동시성에 대한 관리를 더욱 편리하게 하였습니다.
이를 통해 문서 전체에서 발생하던 갱신 손실 문제를 하나의 열 단위로 축소하였습니다.
사용자 인가 관리
회원가입 및 로그인과 같은 ‘**사용자 인가’**에 필요한 모든 API를 설계 및 구현하였습니다.
회원가입 프로세스에서는 이메일 중복 검사와 인증 코드 확인 작업을 병렬로 처리하도록 개선했습니다.
Mono.when()
을 활용하여 두 작업을 동시에 수행함으로써 전체 처리 시간을 약 40% 단축했습니다.
메일 인증 프로세스
대덕소프트웨어마이스터고 학생임을 증명하기 위해 @dsm.hs.kr
도메인을 사용하는 메일 인증 프로세스를 구축했습니다.
메일 전송 프로세스에서는 Fire-and-Forget 패턴을 도입하여 기존 4초가 소요되던 응답 시간을 1초 미만으로 93% 개선했습니다. 메일 전송 요청을 받은 즉시 응답을 반환하고, 실제 전송은 비동기로 처리하도록 변경했습니다. 또한, 이벤트 기반 아키텍처로 리팩토링하여 다른 서비스 간의 결합도를 최소화했습니다.
어드민 기능
사용자를 관리할 수 있도록 어드민 기능 API를 설계 및 구현했습니다.
접근 제어, 권한 관리 등의 기능을 제공해 편리한 사용자 관리 기능을 제공했습니다.