레거시 시스템인 COBOL을 현대화하고 그 정확성을 스스로 검증하는 AI 개발 사례

1959년에 설계된 COBOL은 현재 하루 3조 달러의 거래와 ATM 거래의 95%를 처리하고 있지만, 현대화 과정에서 가독성이 낮은 'Py-BOL' 코드 생성이나 LLM의 로직 환각 문제가 발생해왔습니다. 이를 해결하기 위해 정확성은 컴파일러가, 의미 변환은 LLM이 담당하여 로직 무결성을 유지하며 현대화하는 'Py-BOLD' 시스템이 개발되었습니다.

AI 요약

전 세계 금융 시스템의 중추인 COBOL은 설계된 지 60년이 넘었음에도 불구하고 여전히 막대한 규모의 금융 거래를 처리하고 있으나, 숙련된 엔지니어들의 은퇴로 유지보수 위기에 직면해 있습니다. 기존 AI 툴을 이용한 현대화 방식은 변수명을 단순히 스네이크 케이스로 바꾸는 수준인 'Py-BOL'을 생성하여 유지보수성을 악화시키거나, LLM이 비즈니스 로직을 자의적으로 해석하여 미세한 오류를 만드는 '환각' 문제를 일으켰습니다. 특히 COBOL 코드 자체가 유일한 사양서인 상황에서 이러한 로직의 변형은 치명적입니다. 저자는 이를 해결하기 위해 '정확성'은 결정론적 컴파일러가 맡고, '의도 파악'은 LLM이 담당하는 뉴로-심볼릭(Neuro-symbolic) 접근 방식의 'Py-BOLD' 시스템을 구축했습니다. 이 시스템은 LLM에 소스 코드를 직접 전달하는 대신 파서가 생성한 AST(추상 구문 트리)만을 전달함으로써 로직의 변조를 원천 차단하고 코드의 가독성만 높이는 데 성공했습니다.

핵심 인사이트

  • 금융 인프라의 핵심: COBOL은 1959년에 설계되었으며, 현재 전 세계 ATM 거래의 95%, 신용카드 결제의 80%, 하루 약 3조 달러(USD)의 금융 거래를 처리하고 있음.
  • Py-BOL 문제: 기존 도구들은 WS-CUST-ID-X와 같은 난해한 COBOL 변수명을 ws_cust_id_x로 직역하여 현대적 언어로 옮겨도 가독성이 개선되지 않는 문제를 노출함.
  • 환각의 위험성: 제로샷 LLM은 비즈니스 로직을 추측하는 과정에서 30년간 검증된 에지 케이스(Edge case)의 수식이나 조건문을 미세하게 틀리게 작성할 위험이 큼.
  • 레이어 분리: 정확성(Correctness)은 결정론적 모델이, 의미(Intent)는 확률적 모델인 LLM이 담당하도록 역할을 명확히 구분함.

주요 디테일

  • COBOL의 명명 규칙: WS-는 Working-Storage(글로벌 변수), -N은 숫자형, -X는 영숫자형을 뜻하며, 이는 1987년 당시 작성된 오리지널 코드의 관습을 그대로 담고 있음.
  • 구조적 접근: 'Py-BOLD' 시스템은 Lexer와 Recursive-Descent Parser를 통해 소스 코드를 Typed AST 노드로 먼저 변환함.
  • 데이터 플로우 그래프(DFG): 로직의 정확한 흐름을 유지하기 위해 LLM에는 구조화된 AST 블록만 전달되며, LLM은 AST에 없는 로직을 임의로 추가하거나 수정할 수 없음.
  • 비즈니스 의도 회복: LLM은 ws_order_amt_norder_amount로, ws_premium_flag_xis_premium으로 변환하는 등 도메인 지식을 바탕으로 한 의미론적 개선에만 집중함.
  • 검증 가능성: 오리지널 코드가 사양서 역할을 하는 상황에서, 로직을 건드리지 않고 가독성만 개선함으로써 결과물의 신뢰성을 확보함.

향후 전망

  • 메인프레임 전환 가속화: 금융 및 미 연방정부 등 COBOL 의존도가 높은 기관들이 로직 손실 걱정 없이 시스템 현대화를 추진할 수 있는 신뢰성 높은 도구가 될 것으로 보임.
  • AI 협업 모델의 변화: 모든 것을 LLM에 맡기는 방식 대신, 컴파일러 이론과 같은 전통적 컴퓨터 과학과 LLM이 결합된 하이브리드형 개발 방식이 표준화될 것으로 예상됨.
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...