배경 및 목표
① 노후한 레거시 시스템: 사내 장애관리 시스템(ITSM)은 ASP.NET MVC 5 기반으로 오래 운영돼 UI가 낡고 유지보수가 어려웠으며, raw SQL 문자열 연결 같은 구조적 결함도 남아 있었음.
② 분리된 두 시스템: 서비스 정기점검은 장애관리와 별개인 시스템(LiveOps)에서 따로 운영돼, 같은 서비스를 두 시스템이 서로 다른 기준으로 들고 있었음.
→ 기존 비즈니스 규칙·상태 전이·계산식은 그대로 지키면서(기능 동등성) React + Nest.js + MySQL 스택으로 전면 재개발하고, 별도 시스템이던 점검관리까지 흡수해 한 SPA 안의 두 워크스페이스로 통합함.
역할
시스템 구조 설계 및 주도적 개발 (설계 · API · 프론트엔드 · 데이터 이관 · 배포 · 보안 하드닝)
주요 업무 및 성과
① 레거시 스키마를 유지한 기능 동등성 재개발과 실데이터 이관
- 기존 스키마 계승 DB를 갈아엎지 않고 기존 MySQL 스키마를 그대로 쓰되, varchar 날짜·‘Y’/‘N’ 불리언은 ORM transformer로 흡수해 API·도메인에서는 Date·boolean으로 다루도록 설계.
- 레거시 데이터 대응 FK가 없고 삭제된 행까지 참조하는 데이터를 표시용과 선택용 조회로 나눠 처리하고, 기존 결함(raw SQL 연결, 뒤집힌 플래그 의미 등)은 이식하지 않음.
- 실데이터 이관 기존 점검관리 시스템의 회차·작업 데이터를 이관 스크립트로 옮기고 검증을 거쳐 live 전환 완료.
② 별도 시스템이던 점검관리의 흡수 통합
- 워크스페이스 통합 독립 운영되던 점검관리 시스템을 같은 SPA의 워크스페이스로 이식하고 공용 모듈(멤버·연락처·감사 로그·메일)은 한곳에 모음. 점검 이슈 본문은 Yjs 동시편집, 화면 상태는 SSE로 실시간 반영함.
- 서비스 마스터 단일화 점검관리의 ‘서비스’를 마스터로 삼아 장애 분류 트리를 자동 동기화하고, 복잡한 역할 트리·등급별 수신 목록을 걷어내 ‘잎 분류에 직접 매인 담당자’로 수신자 규칙을 단순화.
- Chat 연동 작업 지연·전체 완료 같은 점검 워크플로 이벤트마다 서비스 스페이스에 Google Chat 한 줄 카드를 보내고 담당자에게는 DM으로도 알리며, 카드 버튼으로 작업 시작·종료와 점검 종료를 Chat 안에서 바로 처리하게 함.
③ 메일 · 문자 · 자동전화 3채널 장애 전파
- 채널 연동 SMTP 메일, 사내 장문 문자(LMS), Twilio 자동전화를 실제 게이트웨이로 연동.
- 자동전화 에스컬레이션 AWS Lambda 음성 프록시를 거쳐 담당자 목록 순서대로 전화를 걸고, 키패드(DTMF) 응답으로 장애 인지 여부를 기록.
④ 보안 · 배포 · 공용 UI
- 인증과 보안 하드닝 Keycloak OIDC를 BFF 방식으로 붙여 토큰은 서버가 암호화 httpOnly 쿠키로 보관하고 모든 엔드포인트에 Guard·역할 검사를 적용. 외부 공개 전 전체 기능을 점검해 확정된 취약점을 하드닝하고, 첨부 파일 접근은 HMAC 키 토큰으로 통제.
- 배포 EKS + Helm + GitLab CI로 개발·운영 환경 배포 파이프라인 구성.
- 공용 디자인 시스템 shadcn/ui 기반 공용 컴포넌트를 사내 npm 패키지(@neo/ui)로 분리·배포해 다른 서비스에서도 쓸 수 있게 함.
결과
① 2026년 9월 live 전환: 기존 장애관리 시스템과 점검관리 시스템을 하나로 대체한 통합 시스템으로 운영 중.
② 운영 정보 일원화: 두 시스템에 따로 흩어져 있던 서비스·담당자 정보를 한 곳에서 관리하게 되어, 서비스 하나를 등록하면 장애 분류와 점검 대상이 함께 갖춰짐.
회고
오래 운영된 레거시를 다시 만드는 일은 새로 짓는 것보다 ‘무엇을 남길지’ 고르는 일에 가까웠다. 규칙은 지키되 결함은 옮기지 않는다는 원칙을 세우고, 기존 코드를 역분석한 설계 문서를 단일 진실 원천으로 두어 판단이 흔들릴 때마다 그 문서로 돌아갔다.
→ 이 규모를 짧은 기간에 끝낼 수 있었던 건 AI 코딩 에이전트 덕분이었다. 다만 에이전트를 잘 일하게 만든 건 프롬프트보다 문서였다. 도메인 규칙, 코드만 봐선 모르는 함정, UI·용어 규약을 저장소 문서로 쌓아 두고, 사고가 날 때마다 그 원인을 규칙으로 남겼다. 사람이 판단하고 에이전트가 빠르게 손을 움직이는 분업이 레거시 재개발에서도 통한다는 걸 확인했다.