레거시 C#에서 Next.js·NestJS로, 리뉴얼 프로젝트에 합류하며

2025년 2월, 건물관리 솔루션(SI/FMS/BEMS) 기업인 (주)엑센솔루션에 입사했습니다. 입사와 동시에 맡게 된 일은 신규 기능 개발이 아니라, 수년간 운영되어 온 레거시 C#(.NET) 기반 시스템을 Next.js·NestJS(TypeScript) 스택으로 전면 리뉴얼하는 프로젝트였습니다.

처음 마주한 것: 코드가 아니라 도메인

첫 달의 대부분은 코드보다 도메인을 이해하는 데 썼습니다. Modbus, MQTT, OPC-UA, BACnet 같은 산업 프로토콜 이름조차 처음 들어봤고, “포인트”, “설비”, “하이퍼테이블” 같은 용어가 무엇을 가리키는지부터 익혀야 했습니다. 죽전 데이터센터 BEMS 화면의 오류를 하나씩 추적하면서, SQL Server 저장 프로시저(SP)가 어떤 데이터를 어떻게 가공해서 화면에 내려주는지를 먼저 파악했습니다.

레거시 시스템을 그대로 옮기는 게 아니라 다시 설계해야 했기 때문에, “왜 이렇게 짜여 있는가”를 이해하는 과정이 오히려 “어떻게 새로 짜야 하는가”에 대한 힌트가 됐습니다. 예를 들어 기존 SP들이 왜 그렇게 많은 조건 분기를 갖고 있는지 보면, 그만큼 현장마다(카자흐스탄 지사, 죽전 데이터센터 등) 요구사항이 조금씩 달랐다는 뜻이었고, 이는 이후 멀티테넌트 구조를 설계할 때 중요한 참고가 됐습니다.

백엔드부터 프론트, 배포까지

리뉴얼 프로젝트는 한 팀이 백엔드만, 프론트만 나눠 맡는 구조가 아니었습니다. 저는 백엔드 설계·구현을 주력으로 하면서도 프론트엔드·모바일·배포 스크립트까지 총 8개 저장소(백엔드 4·프론트 2·모바일 1·배포 1)를 오가며 작업했습니다. 처음엔 컨텍스트 전환 비용이 크다고 느꼈지만, 오히려 API를 설계할 때 “이걸 프론트에서 어떻게 쓸지”를 스스로 검증할 수 있다는 장점이 있었습니다.

이 시기부터 본격적으로 실시간 데이터 파이프라인, 대용량 시계열 DB, 인증·인가 체계라는 세 개의 축을 맡아 지금까지 이어오고 있습니다. 각각의 설계 고민은 이후 글에서 따로 정리했습니다.

Updated: