*** 현재 해당 서비스는 마크애니와는 무관한 자체적인 개발팀에서 개발한 시스템을 사용하고 있음.
화물차 면허 관리 플랫폼의 관리자 페이지 개발 및 운영
React18, JS
MUI
ReduxToolkit
이 프로젝트는 기존 PHP로 운영되던 플랫폼 서비스를 리액트와 스프링부트로 변경하는 작업이었다. 주된 목적은 모바일 앱 서비스 지원이었다. 기존 서버는 API 서버가 아니었기 때문에 모바일에서의 요청을 처리하기 어려웠다.
나는 이 프로젝트에 프론트엔드 개발자로 참여했으며, 본격적으로 리액트를 접한 첫 프로젝트이기도 했다.
이 서비스는 관리자가 사용자와 반드시 상담을 진행해야 하는 비즈니스 특성이 있었다. 따라서 일반 사용자보다 관리자가 사용해야 할 기능이 더 많았고, 필연적으로 게시판 기능과 폼 개발이 중요시되었다. 백엔드에서 게시판 이동, 최대 개수 등의 정보가 정제되어 제공되지 않고 통째로 넘어왔기 때문에 프론트에서 데이터를 정제하는 작업이 많았다. 폼 관련해서는 병렬적으로 값을 가져와야 하는 경우가 빈번했고, 이로 인해 Promise.all()을 활용해야 했다.
리액트를 공부한 지 얼마 되지 않은 상태에서 진행한 프로젝트였기 때문에 사용방법에 익숙해지기까지 어려움이 있었다. 하지만 가장 도전적이었던 부분은 CSS를 다루는 일이었다. MUI를 중심으로 디자인 시스템을 사용했는데, 텍스트 에디터를 개발할 때 필요에 따라 CSS를 조작하거나 아예 별도로 작성해야 하는 경우도 있었다. 팀 내에 CSS를 전문적으로 다뤄본 사람이 없었고, AI도 정확한 해결책을 제시하지 못하는 상황이 있어 어려움을 겪었다. 프로그래밍 언어로 작성된 로직은 절차적으로 점검하며 트러블슈팅이 가능하지만, CSS는 예상치 못한 곳에서도 간섭이 발생할 수 있어 변수가 너무 많았다. 차라리 전부 순수 CSS로 작성했다면 오히려 수월했을지도 모르지만, MUI와 같이 내부 코드와 스타일링을 공개하지 않는 라이브러리와 결합된 프로젝트여서 더욱 복잡했다. 결국 일부 스타일은 완전히 걷어내야 하는 경우도 있었다.
이 프로젝트를 통해 얻은 가장 큰 소득은 두 가지로 요약할 수 있다
일반 고객들이 사용하는 서비스를 실제로 1년 가까이 운영할 수 있었던 경험
서비스의 실사용자와 직접 소통하는 기회를 가질 수 있었던 점
솔루션 회사에서 근무하면서 항상 서비스 운영에 대한 로망과 궁금함이 있었는데, 그 경험을 해볼 수 있어서 의미가 컸다. 트래픽이 많지는 않았지만 기존에 운영되던 서비스였기에 어느 정도의 사용량은 있었다. 이를 통해 특정 사양의 환경에서 어느 정도의 운영 비용이 발생하는지 간접적으로나마 체감할 수 있었다. 또한 실사용자인 관리자들과 직접 소통하면서, 그들과 개발자들의 개발 우선순위가 다르다는 것을 깨닫게 되었다. 개발자들은 기획자가 전달한 문서를 기반으로 나름의 우선순위(예: 공통 모듈화 가능 여부)를 고려해 개발하지만, 관리자들은 실제 사용자들의 요청을 처리하기 위한 기능을 우선적으로 개발해주기를 원한다. 당연한 사실처럼 보일 수 있지만, 이러한 현실적인 요구사항들이 기획서에는 반영되지 않는 경우가 많다.
