AI로 레거시 코드를 부활시킨 방법: Kiroween을 위한 CodePhoenix 구축

발행: (2025년 12월 5일 오전 01:08 GMT+9)
10 min read
원문: Dev.to

Source: Dev.to

문제: 850억 달러 규모의 사라져 가는 코드

지금 이 순간에도 전 세계 은행 시스템은 1970년대에 작성된 COBOL 코드에 의존하고 있습니다. 정부 기관은 1990년대의 Visual Basic 6 애플리케이션으로 운영되고, 과학 기관은 이제는 살아 있는 사람도 완전히 이해하지 못하는 Fortran 프로그램에 의존하고 있습니다.

핵심 통계

  • 전 세계 기술 부채 850억 달러
  • 아직도 운영 중인 COBOL 코드 2,200억 라인
  • 은행 시스템의 43 %가 전적으로 COBOL로 구동
  • 레거시 시스템 하나를 마이그레이션하는 평균 비용 $500 k–$5 M
  • 일반적인 마이그레이션 기간 6–18 개월
  • IT 리더 92 %가 기술 부채가 혁신을 늦춘다고 답변

이 코드를 작성한 개발자들은 은퇴하고 있습니다. 평균 COBOL 프로그래머는 55세 이상이며, 10년 후에는 이 지식이 사라질 것입니다. 이것은 단순한 기술 문제가 아니라 기업 소프트웨어의 존재 자체를 위협하는 위기입니다.

아이디어: CodePhoenix – AI를 통한 부활

Kiroween 해커톤의 “Resurrection” 카테고리를 위해, 나는 죽은 코드를 문자 그대로 되살리는 무언가를 만들어야 했습니다. 피닉스 메타포는 레거시 시스템의 잿더미에서 다시 일어서는 모습을 완벽히 표현했습니다. 나는 72시간만에 혼자 작업해야 했기에 Kiro AI에 의존했습니다.

CodePhoenix 워크플로우

  1. Upload – 고대 레거시 파일(COBOL, VB6, Fortran, PHP 등)을 업로드
  2. Analyze – AI가 비즈니스 로직, 데이터 구조, 보안을 깊이 이해
  3. Transform – AI가 현대 언어(TypeScript, React, Python, Go)로 변환
  4. Export – 클라우드‑준비, 컨테이너화, 문서화된 애플리케이션을 다운로드

모두 Kiro AI가 불가능을 가능하게 만들었습니다.

Kiro 사양으로 시작

Architecture as Code

.kiro/specs/architecture.md에 사양을 작성했습니다:

Core Architecture:
- Frontend: Next.js 14 App Router with TypeScript
- Backend: Next.js API Routes
- AI Engines: GPT‑4 for transformation, Claude for analysis
- Storage: Session‑based filesystem
- UI: Tailwind CSS with custom phoenix theme (orange/red gradients)
- Code Editor: Monaco Editor (VS Code engine)

Kiro는 이 단일 파일을 읽고 다음을 생성했습니다:

  • 완전한 Next.js 14 프로젝트 구조
  • 엄격 모드가 적용된 TypeScript 설정
  • 커스텀 피닉스 색상 팔레트를 적용한 Tailwind 설정
  • API 라우트 템플릿
  • 컴포넌트 스캐폴딩

Vibe Coding UI

Vibe 1: 메인 업로드 영역

.kiro/vibe/coding-instructions.md에 적힌 지시사항:

VIBE 1: Create the main upload zone
- Drag‑and‑drop area with phoenix rising animation
- Support .cbl, .vb, .for, .php, .pas files
- Show file previews with syntax highlighting
- Animated fire particles on hover
- Error states for unsupported files

Kiro는 다음을 포함한 완전한 React 컴포넌트를 생성했습니다:

  • Framer Motion 애니메이션(업로드 시 피닉스 상승)
  • 파일 검증 및 오류 처리
  • 구문 강조 미리보기
  • 반응형 모바일 레이아웃
  • 로딩 상태
  • 접근성(ARIA 라벨, 키보드 네비게이션)

Vibe 2: 분석 결과 대시보드

VIBE 2: Create the analysis results dashboard
- Beautiful card grid showing AI analysis
- Complexity visualization (1‑10 scale with color coding)
- Security vulnerabilities with severity badges
- Business logic extraction display
- Migration roadmap timeline
- ROI calculator with interactive sliders

Kiro가 만든 결과물:

  • 여섯 개의 상호 연결된 컴포넌트
  • React Flow 의존성 그래프 시각화
  • Recharts 통합 애니메이션 차트
  • 인터랙티브 ROI 계산기
  • 부드러운 페이지 전환

스티어링이 포함된 API 라우트

세 개의 복잡한 API 엔드포인트가 필요했습니다:

  • /api/upload – 파일 업로드 처리
  • /api/analyze – AI 코드 분석
  • /api/transform – AI 코드 변환

엔드포인트는 64개의 파일 확장자를 다루고, OpenAI와 Anthropic API와 통합되며, 정확한 비즈니스 로직을 보존하고, COBOL PICTURE 절에서 정확한 TypeScript 타입을 생성해야 했습니다. 그래서 .kiro/steering/api-guidelines.md를 만들었습니다:

API Transformation Rules:

COBOL → TypeScript Mapping:
- IDENTIFICATION DIVISION → Module exports with metadata
- DATA DIVISION → Interface definitions
- PICTURE 9(5)V99 → number (with validation)
- PICTURE X(50) → string (max length 50)
- PICTURE S9(7)V99 COMP-3 → Decimal type
- PERFORM UNTIL → while loop with guard clause
- EVALUATE → switch statement with exhaustive checking

VB6 → React Mapping:
- Form → Functional component
- Control → React component with state
- Event handlers → onClick/onChange callbacks
- Recordset → Array of typed objects
- ADO connection → Fetch API or GraphQL

이 스티어링 규칙을 활용해 Kiro는 다음을 구현했습니다:

  • 64개의 레거시 언어 파일 확장자를 정확히 파싱
  • COBOL 데이터 타입을 TypeScript에 ~95 % 정확도로 매핑
  • 비즈니스 로직을 정확히 보존(핵심!)
  • 관용적인 최신 코드 생성
  • 포괄적인 오류 처리 포함

결과: 약 85 %가 AI‑생성된 풀스택 애플리케이션 기반.

변환 엔진

도전 과제: 50년 된 코드를 AI가 이해하도록 만들기

현대 LLM은 2010‑2020년대 GitHub 코드를 중심으로 학습되었습니다. TypeScript와 Python은 방대하지만 COBOL, Fortran 77, RPG 등은 학습 데이터에 거의 없습니다. 따라서 GPT‑4는 COBOL을 TypeScript로 변환할 수 있지만 미묘한 오류를 범하기 쉽습니다.

스티어링 없이 잘못된 변환

COMPUTE TAX-AMOUNT = INCOME * 0.20
// WRONG! Loses precision
const taxAmount = income * 0.2;

스티어링을 적용한 올바른 변환

// Correct – uses Decimal for exact arithmetic
const taxAmount = new Decimal(income).times(0.20);

해결책: 도메인 전문성을 위한 MCP 서버

.kiro/mcp/에 세 개의 Model Context Protocol (MCP) 서버를 구축해 각 레거시 언어에 대한 전문가 수준 이해를 AI에 제공했습니다.

COBOL Parser MCP (cobol-parser-mcp.ts)

/**
 * Capabilities:
 * - Tokenize COBOL divisions
 * - Parse PICTURE clauses to TypeScript types
 * - Extract PERFORM logic to function calls
 * - Map COPY books to imports
 * - Analyze COMP/COMP-3 binary fields
 * - Handle REDEFINES (union types)
 */

Fortran Analyzer MCP (fortran-analyzer-mcp.ts)

/**
 * Capabilities:
 * - Parse SUBROUTINE/FUNCTION blocks
 * - Analyze DO loops and GOTOs
 * - Map COMMON blocks to classes
 * - Convert FORMAT statements to template literals
 * - Handle IMPLICIT NONE type inference
 */

Legacy Database MCP (legacy-db-mcp.ts)

/**
 * Capabilities:
 * - Parse DB2/Oracle DDL
 * - Generate Prisma schema
 * - Suggest PostgreSQL migration
 * - Map hierarchical databases to relational
 */

이 MCP 서버들은 구조화된 AST와 의미 메타데이터를 Kiro에 공급해 95 % 이상 정확도의 변환을 가능하게 했습니다.

Diff Viewer 구축

사용자는 변환 결과를 나란히 확인해야 합니다. 하나의 Vibe 지시문을 작성했습니다:

Create an interactive code comparison viewer using Monaco Editor.

Left pane: original legacy code with syntax highlighting.  
Right pane: transformed modern code.

Features: line mapping, diff highlights, collapsible sections, export buttons.

Kiro는 약 400줄 규모의 React 컴포넌트를 생성했으며, 다음을 제공합니다:

  • 원본 vs 변환 코드를 보여주는 듀얼‑Pane Monaco 에디터
  • 64개 소스 언어와 40개 목표 언어에 대한 구문 강조
  • 라인‑바이‑라인 차이 강조
  • 대용량 파일을 위한 접을 수 있는 섹션
  • 양쪽 에디터에서 검색/교체 기능
  • PDF, Markdown, 원시 코드 등으로 내보내기 기능

다중 언어 지원

초기 목표는 5개 언어였지만, 현재 플랫폼은 64개의 소스 언어를 지원합니다. 주요 예시:

  • 메인프레임 시대: COBOL, RPG, JCL, PL/I, Assembler
  • 데스크톱 시대: VB6, PowerBuilder, Delphi, FoxPro
  • Web 1.0: Classic ASP, ColdFusion, Perl CGI
  • 과학: Fortran 77/90, ALGOL, APL
  • 시스템: Pascal, Modula‑2, Ada

그리고 40개 이상의 목표 프레임워크를 제공하는데, 예시:

  • Web: TypeScript, React, Next.js, Vue, Angular, Svelte
  • Backend: Python, FastAPI, Django, Flask, Node.js, NestJS
  • Enterprise: Java Spring Boot, C# .NET Core, Kotlin
  • Mobile: React Native, Flutter, SwiftUI

그 결과, 거의 모든 레거시 코드베이스를 부활시켜 현대적인, 프로덕션‑레디 애플리케이션으로 제공할 수 있는 다재다능한 AI‑구동 플랫폼이 완성되었습니다.

Back to Blog

관련 글

더 보기 »