최근 기술 관련 친구 몇 명과 식사를 하다가 데이터 요소 신정책에 대한 이야기가 나왔습니다. 전자상거래 회사에서 백엔드를 담당하는 한 친구가 했던 말이 특히 인상 깊었습니다. "우리 회사 시스템에서 돌아다니는 인터페이스 데이터는 마치 출퇴근 시간 지하철역 같아. 다들 움직이는 것처럼 보이지만 실제로는 완전히 엉망진창이야."
표현은 거칠지만 틀린 말은 아닙니다. 신정책이 시행되면서 데이터가 공식적으로 생산 요소로 관리되기 시작했습니다. 이게 무슨 뜻일까요? 예전에는 데이터베이스, 로그 파일, 심지어 동료 컴퓨터 바탕화면에 마음대로 넣어두던 데이터에 이제 제대로 된 신분이 필요하다는 뜻입니다. 특히 인터페이스 데이터는 많은 기업이 제대로 관리한 적이 없습니다.
인터페이스 데이터란 무엇일까요? 간단히 말해 시스템 간에 전달되는 것입니다. 예를 들어 주문을 하면 주문 시스템이 재고 시스템에 재고 차감을 알리고, 결제 시스템에 결제를 요청하고, 물류 시스템에 배송 준비를 알립니다. 전달할 때마다 JSON 형식의 데이터가 생성됩니다. 이건 중괄호 안에 중괄호가 있고 키-값 쌍이 가지런히 정리되어 있어 꽤 규칙적으로 보입니다. 하지만 문제는 인터페이스를 작성하는 사람이 너무 많고 각자 스타일이 달라서 시간이 지나면 완전히 엉망이 된다는 점입니다.
가장 황당한 사례를 본 적이 있는데, 한 회사의 사용자 인터페이스가 반환하는 JSON에서 사용자 ID가 어떤 때는 "uid", 어떤 때는 "userId", 또 어떤 때는 "user_id"였습니다. 프론트엔드 개발자는 연동할 때마다 문서를 먼저 찾아보고, 문서를 본 후에도 시도해보고, 시도한 후에는 문서와 실제 반환값이 다르다는 걸 발견합니다. 7~8단계 중첩 구조는 말할 것도 없습니다. 열어보면 눈이 어지러울 정도입니다.
이때 JSON 포매팅 도구가 유용합니다. 이 기능을 얕보면 안 됩니다. 많은 사람이 압축된 한 줄 JSON을 들여쓰기 있는 여러 줄로 펼치는 게 뭐 대단한 기술이 있냐고 생각합니다. 하지만 실제로 작업해본 사람은 편리한 포매팅 도구가 얼마나 많은 일을 덜어주는지 압니다. 어지러운 계층 관계를 정리해서 어떤 필드가 어떤 객체에 있는지, 어떤 배열에 어떤 속성이 포함되어 있는지 한눈에 볼 수 있게 해줍니다. 특히 인터페이스를 디버깅할 때 포매팅 전과 후는 완전히 다른 세계입니다.
신정책은 데이터가 관리 가능하고, 추적 가능하고, 평가 가능해야 한다고 요구합니다. 인터페이스 데이터가 어떻게 생겼는지조차 제대로 볼 수 없다면 어떻게 관리하고 추적하겠습니까? 그래서 첫 단계는 데이터를 읽을 수 있게 만드는 것입니다. JSON 포매팅이 하는 일이 바로 이것입니다. 기계는 읽을 수 있지만 사람이 읽기 힘든 것을 사람도 쉽게 이해할 수 있는 형태로 바꿔줍니다. 고급 기술은 아니지만 모든 데이터 거버넌스 작업의 출발점입니다.
그 전자상거래 친구는 나중에 회사에서 규칙을 하나 도입했습니다. 모든 인터페이스 문서에 포매팅된 JSON 예시를 첨부하고, 코드를 제출하기 전에 반드시 포매팅 도구로 반환 구조를 확인해야 한다는 것이었습니다. 처음에는 다들 귀찮아했지만 나중에는 연동 테스트 시간이 절반으로 줄어든 것을 발견하고 아무도 불평하지 않았습니다. 보시다시피 때로는 데이터를 잘 관리하는 것이 그렇게 복잡하지 않습니다. 좋은 포매팅 도구를 제대로 사용하는 것에서 시작하면 됩니다.