문서 없는 레거시 시스템 연동, 발주 전에 확인할 것들

웹 · 앱 개발5분 읽기

오래된 사내 시스템을 자동화하거나 다른 시스템과 연동하는 일을 외주로 맡길 때, 발주자와 개발자 사이에서 가장 자주 어긋나는 지점은 기술이 아니라 초기 정보의 준비 상태입니다. 문서가 없고 접근도 제한된 시스템일수록 처음에 무엇을 확인하고 준비했느냐가 프로젝트의 성패를 가릅니다. 한 통행료 정산 시스템을 역설계해 연동한 경험을 바탕으로, 이런 프로젝트를 발주하기 전에 발주자가 미리 챙기면 좋은 것들을 정리했습니다. 개발사를 고를 때의 눈높이를 맞추는 데도 도움이 될 것입니다.

접근 조건부터 분명히 한다

가장 먼저 확인할 것은 대상 시스템에 어떻게 접근할 수 있는가입니다. 원격 접속이 되는지, 안 된다면 현장 방문만 가능한지, 방문한다면 언제 몇 번이나 가능한지가 프로젝트의 형태를 통째로 바꿉니다. 이 통행료 프로젝트는 원격 접속이 원천적으로 막혀 있어 실제 시스템을 볼 수 있는 기회가 현장 방문으로만 열렸습니다. 이런 조건에서는 방문 한 번에 필요한 정보를 최대한 확보하는 것이 중요하고 그러려면 무엇을 캡처하고 확인할지 방문 전에 미리 계획해야 합니다.

접근과 함께 확인할 것은 자격증명입니다. 자동화가 사용할 계정이 이미 발급되어 있는지, 발급에 내부 승인이 얼마나 걸리는지를 미리 파악해야 합니다. 시스템 분석은 다 끝났는데 정작 프로그램이 쓸 계정이 안 나와서 착수가 미뤄지는 일이 흔합니다. 또한 그 계정으로 어디까지 조회하고 처리할 수 있는 권한이 있는지도 확인해야 합니다. 사람이 쓰는 계정과 자동화가 쓰는 계정의 권한 범위가 다를 수 있기 때문입니다.

실제 업무 흐름을 온전히 확보한다

문서 없는 시스템에서 개발자에게 가장 값진 자료는 정상적으로 동작하는 실제 업무 한 사이클입니다. 로그인부터 조회, 처리, 완료까지 사람이 실제로 수행하는 흐름을 빠짐없이 확보하면, 개발자는 그것을 정답지 삼아 시스템의 통신 규칙을 역설계할 수 있습니다. 그래서 발주 전이나 초기에, 담당자가 실제 업무를 수행하는 과정을 개발자가 함께 관찰하거나 그 통신을 기록할 수 있는 자리를 마련하는 것이 큰 도움이 됩니다. 화면 설명만으로는 부족하고 실제로 성공한 요청과 응답이 남아 있어야 합니다.

이때 성공한 사례뿐 아니라 다양한 경우를 포함하면 더 좋습니다. 데이터가 없을 때, 여러 건이 한꺼번에 나올 때, 특수한 값이 들어갈 때가 각각 어떻게 처리되는지가 확인되면 개발이 훨씬 촘촘해집니다. 이 통행료 프로젝트에서도 미납이 한 건인 차량과 여러 건인 차량이 응답에서 다르게 오는 것을 실제 흐름에서 확인했기에, 데이터를 올바르게 묶는 처리를 처음부터 정확히 설계할 수 있었습니다.

실행 환경과 운영 조건을 미리 정한다

프로그램이 어디서 어떻게 돌아야 하는지도 발주 전에 정해 두면 좋습니다. 실행될 PC가 인트라넷인지 인터넷인지, 망분리가 되어 있는지, 무인으로 정해진 시각에 돌아야 하는지, 결과를 누가 어떻게 확인하는지 같은 조건이 아키텍처를 좌우합니다. 이 프로젝트는 망분리 때문에 프로그램을 둘로 나누고 파일로 잇는 구조가 됐는데, 이런 결정은 개발 초기에 환경 조건이 분명해야 제대로 내릴 수 있습니다. 다 만든 뒤에 환경 제약을 알게 되면 구조를 다시 짜야 합니다.

운영 조건에는 보안과 개인정보 처리도 포함됩니다. 자동화가 다루는 데이터에 개인정보가 있는지, 있다면 로그나 결과물에 어떻게 남겨야 하는지, 실제로 데이터를 바꾸는 동작에 어떤 안전장치가 필요한지를 미리 합의해야 합니다. 이 프로젝트에서는 개인정보를 로그에 마스킹하고 실제 등록과 발송 같은 쓰기 동작에는 명시적으로 지정하기 전에는 실행되지 않는 안전 가드를 두었습니다. 이런 요건은 나중에 얹으면 번거롭지만 처음부터 설계에 넣으면 자연스럽습니다.

변화와 유지보수의 경계를 합의한다

마지막으로, 대상 시스템이 바뀌면 어떻게 할지를 미리 이야기해 두는 것이 좋습니다. 레거시 시스템 연동은 그 시스템의 통신 구조에 기대어 동작하므로, 시스템이 개편되면 연동도 손봐야 합니다. 이것은 결함이 아니라 이런 방식의 자연스러운 특성입니다. 그래서 개발 범위에 무엇이 포함되고 나중에 시스템이 바뀌었을 때의 재대응은 유지보수로 어떻게 다룰지 경계를 처음부터 분명히 하면 서로 오해가 없습니다.

이런 준비들이 갖춰지면, 문서도 접근도 없는 오래된 시스템이라도 안정적으로 연동할 수 있습니다. 실제로 이 통행료 시스템은 이 조건들을 하나씩 확인하며 역설계로 연동했고 그 전체 과정은 레거시 통행료 시스템 역설계 연동 사례에 담았습니다. 통신을 어떻게 읽어 시스템을 여는지 구체적인 방법은 Nexacro 레거시 프로토콜 역설계에서, 망분리 환경의 구조 설계는 인트라넷과 인터넷이 분리된 환경에서 자동화 설계하기에서 이어집니다.

자주 묻는 질문

API 문서가 전혀 없는 시스템도 연동을 맡길 수 있나요?

맡길 수 있습니다. 문서가 없어도 시스템이 서버와 주고받는 실제 통신을 확보하면 그것을 기준으로 역설계할 수 있습니다. 다만 그 실제 통신을 확보할 방법, 즉 접근 조건과 실제 업무 흐름을 관찰할 기회를 발주 초기에 마련하는 것이 성패를 가릅니다.

발주자가 미리 준비하면 좋은 것은 무엇인가요?

자동화가 쓸 계정과 그 권한, 실제 시스템에 접근할 방법과 일정, 정상 업무 한 사이클을 관찰하거나 기록할 기회, 프로그램이 실행될 환경과 무인 운영 조건, 개인정보와 보안 요건, 그리고 시스템 변경 시의 유지보수 경계입니다. 이것들이 초기에 분명하면 프로젝트가 매끄럽게 진행됩니다.

나중에 대상 시스템이 바뀌면 어떻게 되나요?

레거시 연동은 대상 시스템의 통신 구조에 기대어 동작하므로, 시스템이 개편되면 연동도 손봐야 합니다. 이는 이 방식의 자연스러운 특성입니다. 개발 범위와 이후 변경 대응의 경계를 처음부터 유지보수 조건으로 합의해 두는 것을 권합니다.

#레거시연동#외주#체크리스트#시스템연동#프로젝트관리

업무자동화 구축이 필요하신가요?

무료 상담 신청