AI 시대, 더 이상 레거시 시스템을 지키려 하지 않는다 ── 동작하는 코드에서 업무 지식을 발굴하는 이야기
요약
본 글은 레거시 시스템의 가치가 기술 스택이 아닌 코드에 갇힌 '업무 지식'에 있음을 강조합니다. AI는 코드를 읽어 책임, 상태 전이, 업무 규칙 등을 추출하는 조사원 역할을 수행하며, 이를 통해 높은 업무 지식 회수 비용을 낮추고 시스템 분석 프로세스를 혁신할 수 있습니다.
핵심 포인트
- 레거시 시스템의 가치는 기술 스택보다 코드에 담긴 '업무 지식'이다.
- AI는 코드를 정독하여 책임, 상태 전이 등 구조화된 설계 문서 추출을 돕는다.
- 기존 시스템 분석은 조사 → 상담 → 사양화 단계로 진행되며 인간의 검토가 필수적이다.
- AI를 활용해 현재 동작하는 버그까지 포함한 특성 테스트 케이스 생성이 가능하다.
만든 사람은 퇴사했다. 설계서는 남아있지 않다. 테스트도 존재하지 않는다. 남아있는 것은 오직 코드뿐이다. 그럼에도 불구하고 업무는 돌아가고 있다. 그래서 아무도 건드리지 못한다. 그리고 가끔 이런 말을 듣는다. “이것을 고장 내면 회사가 멈춘다.”
본격적으로 매일 움직이며 매출을 올리고, 현업에서도 사용하고 있는 시스템이다. 하지만 그 누구도 전체를 설명할 수 없다. 그런 시스템은 많은 조직에 존재하지 않을까. 정말 무서운 것은 오래된 코드 자체라기보다는, 거기에 무엇이 적혀 있는지 아무도 설명할 수 없는 상태다.
레거시 시스템 이야기를 할 때는 Java, C++, VBA, Access와 같은 기술 스택 이야기에 치우치기 쉽다. 하지만 지켜야 할 대상은 기술 스택이 아니다. 업무 지식이다.
코드 속에는 청구 타이밍, 예외 처리, 단가 계산, 마감일 규칙, 상태 전이 등 오랜 기간 쌓인 현장의 노하우가 담겨 있다. 가치가 있는 것은 Java로 작성되었기 때문이 아니다. 그 Java 안에 업무가 갇혀 있기 때문이다.
레거시 재개발은 옛날부터 시도되어 왔다. 하지만 대부분 기대했던 대로 끝나지 않는다.
실패의 원인은 구현 비용의 높이만이 아니다. 업무 지식을 회수하는 비용이 높다는 점에 있다. 인터뷰를 하고, 사양서(요구사항 명세서)를 찾고, 현장에 확인하고, 실제로 작동시켜 본다. 몇 달을 들여 설계서를 복원하는 작업은 많은 조직에서 미뤄진다. 그 결과 사람들은 결단하지 못한다. “지금 돌아가니까 건드리지 말자.” 이것이 많은 레거시 시스템에 공통적으로 존재하는 정체 구조이다.
AI 활용이라고 하면, 코드 생성이 주목받기 쉽다. 하지만 기존 시스템에 대해서는 읽는 힘이 더 중요하다고 나는 생각한다.
기존 시스템에 대해 AI에게 화면 목록 작성, 상태 전이 정리, 업무 규칙 추출, 책임 분류 등을 맡길 수 있다. 즉, AI는 구현자일 뿐만 아니라 조사원 역할도 할 수 있다. 예를 들어, 다음과 같이 요청하는 것만으로 기존 시스템의 구조가 문서 형태로 손에 남게 된다.
이 코드를 정독하여, 책임(責務), 상태 전이, 예외 처리, 화면 구축 등을 설계 문서로 출력해 줘.
AI를 통한 독해는 이 회수 비용을 낮추고, 전체 리플레이스(전면 교체)의 전제 자체를 바꾼다.
물론 AI가 추출한 업무 규칙에는 오독이 포함될 수 있다. 그렇기 때문에 사람이 확인하는 단계가 필요하다.
신규 개발은 벽돌 쌓기(브레인스토밍)에서 시작해 설계, 구현으로 진행된다. 기존 시스템은 다르다. 먼저 실물이 존재한다. 따라서 작업 흐름은 다음과 같다.
조사 → 보고 → 상담 → 사양화 → 설계 → 구현
조사 단계에서는 AI에게 기존 코드를 읽게 하여 업무 규칙이나 책임을 추출한다. 보고 단계에서는 그 결과를 사람에게 보여준다. 상담 단계에서는 “이 해석으로 맞는가?”, “정말로 필요한 업무인가?”, “지금이라면 어떻게 만드는 것이 좋은가?”를 검토한다.
예를 들어, 다음과 같이 요청할 수 있다.
이 문서를 보고, 이 업무 규칙에 모순이나 누락된 부분이 없는지 지적해 줘. 근거가 되는 코드의 위치도 보여주고.
사양화 단계에서는 상담을 통해 확정된 동작을 테스트로 작성하여 사양을 고정한다. 이는 기존 코드의 현황을 기록하는 특성 테스트(Characteristic Test)이다. AI는 테스트 케이스를 대량으로 생성할 수 있지만, 어떤 동작을 정답으로 할지는 사람이 결정한다. 현재의 동작에는 기존 버그도 포함되어 있기 때문에, 그 판단은 상담 단계에서 끝내 놓아야 한다.
예를 들어, 다음과 같이 요청할 수 있다.
이 함수의 지금 동작을 테스트 케이스로 작성해 줘. 맞는지 아닌지는 판단하지 말고, 현재와 동일한 결과를 기대값으로 해 줘.
이전에는 레거시 시스템을 부채(負債)로 여겼다. 하지만 시각은 바뀌고 있다.
코드는 가치 그 자체가 아니다. 그러나 코드 안에는 업무 지식이라는 가치가 담겨있다. 기존 시스템은 유지보수 대상이라기보다, 업무 지식의 광산이라고 생각된다.
AI 덕분에 그 광맥을 캐내는 비용이 크게 낮아졌다. 만약 그렇다면, 오래된 코드를 연명시키기 위해 고통스러워할 필요는 없다. 먼저 채굴하여 업무 지식을 꺼내고, 그 위에 새로운 기술로 다시 만드는 것. 그러한 선택지가 현실성을 띠게 되었다.
언젠가 시스템을 구동하는 장치(器)는 사라진다. 오래된 OS일 수도 있고, 오래된 Office일 수도 있다. 하지만 업무는 계속된다. 문제는 업무를 아는 사람이 사라지기 전에 그 지식을 파낼 수 있느냐 하는 것이다.
AI는 코드 생성 도구로 이야기되는 경우가 많다. 하지만 진정으로 가치가 있는 것은, 코드 속에서 업무 지식을 채굴할 수 있게 되었다는 점일지도 모른다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기