< 기술 스택 >
Vue.js, vuetify, javascript, Spring boot, mybatis
< 프로젝트 개요 >
항저우 아시안게임 GMS(Game System Management System)의 유니폼 관리(UNM)와 교통 관리(TRA)시스템을 맡아 개발 및 협업하였습니다. GMS는 특정 행사가 운영되는 동안 유니폼, 교통, 항공, 의료, 의전 등 대회 전반에 걸쳐 지원되는 서비스를 효율적으로 운영하기 위한 관리 시스템입니다.
주로 쓰인 기술 스택 및 툴로는 Vue.js, vuetify, javascript, Spring boot, mybatis, mysql, Gradle, intelliJ 등이 있습니다. Jenkins와 Redis 등 직접적으로 설정에 관여하진 않았지만 해당 툴이 적용된 환경에서 업무하며 간접적으로 경험한 것들도 있었습니다. 기존에 구축된 GMS 시스템의 레거시가 있었으나 항저우 아시안게임 주관사인 중국 업체 측의 요구사항에 맞추어 커스터마이징 및 추가기능을 도입하였습니다. 이 과정에서 오류 또한 많이 경험하였고 기존 레거시 코드를 분석 및 수정해가며 신입 개발자로서 많은 것을 배울 수 있었습니다.
< 프로젝트를 통해 얻은 경험 >
1. 설계 단계에서 테스트 단계까지
한 시스템의 비즈니스로직 문서 분석, DB 설계, Restful API 설계(레거시참고), 프론트엔드 개발 등 설계에서부터 개발 단계까지의 프로세스에 참여하였고, 이후에는 Supplier Test, DAT(Data Acceptance Test), UAT(User Acceptance Test) 등 체계적인 테스트 절차를 통해 서비스의 완성도에 대해 고민하는 경험을 하였습니다.
2. 협업 및 커뮤니케이션
팀 내부적으로는 Jira, 협력사와는 redmine을 사용해 협업하였습니다. 또한 약 1년 간 외국 협력 업체 및 테스터 분들과 소통하며 커뮤니케이션 했습니다. 종종 커뮤니케이션 자체만으로도 시간적인 비용이 크게 늘어나는 것을 경험하였고 한 번의 요청으로 어떻게 의사를 명확하게 전달하고 원하는 답변을 얻을 수 있을지 고민하였습니다.
3. 프로젝트 기여 및 어려움
어려웠던 점 :
a. 공통 컴포넌트
프론트엔드 (Vue.js) 단의 공통 UI 컴포넌트는 여러 시스템이 import해서 사용하였기 때문에 수정하는 것을 최대한 지양해야 했습니다. 우선적으로 개별 컴포넌트에서 요구사항을 구현할 수 있는지를 최대한 검토해야 했고, 부득이하게 공통컴포넌트를 수정해야 하는 경우 해당 기능을 추가해야 하는 이유를 정리하고 다른 시스템에 미칠 가능성을 검토한 후 코드를 작성해 변경 요청을 해야 했습니다. 어려운 과정이었지만 이러한 작업을 통해 컴포넌트의 재사용성이나 관심사 분리 등 프론트 분야에서의 고민들에 대해 생각해 볼 수 있었습니다.
b. 레거시 코드에 새로운 요구사항 통합의 어려움
교통 관리 시스템(TRA)의 경우 DB 설계부터 개발까지를 도맡아서 진행하였지만 유니폼 관리 시스템(UNM)의 경우 기존 레거시 코드와 선임 개발자의 업무를 인수인계 받았으며 중국 프로젝트 주관사가 문서 추가 발행 급의 요구사항 반영을 요청하는 상황이었습니다. 그래서 기존 프론트엔드 단의 구조가 달라지는 경우도 있었고, Vuex 같은 상태관리 라이브러리를 사용하지 않는 상황에서 상태관리 흐름을 파악하고 새로운 로직을 적용하는데 어려움이 있었습니다. 하지만 이러한 문제들을 해결하면서 Vue의 구조와 상태관리에 대해 더 배울 수 있었습니다.
성능 개선 :
- 기존 레거시 코드로 8초 이상 걸리는 80만 건의 데이터 조회를 1초대로 개선
( 서브쿼리를 이용하여 불필요한 조인을 피하고, 테이블 구조에 따라 service 단 수정 등으로 최적화 )
- 기타 issue로 제기된 성능 문제 해결
( index 문제 또는 테이블 join 구조에 따른 성능 이슈 )
====================================================
더보기