데이터 변환에 대한 나의 생각
Source: Dev.to
Introduction
2011년에 개발 일을 시작했을 때는 상황이 더 단순했습니다. 대학에 다니면서 웹사이트를 만들고 데이터를 관리하던 우리 셋뿐이었죠. 무엇을 하고 있는지 거의 몰랐지만 경쟁도 적었고, 그래서 괜찮았습니다.
The Changing Landscape
맞춤형 웹사이트를 만들던 시절에서 자체 제품을 구축하게 되면서 변화가 시작되었습니다. 고객들이 찾아오면서 레거시 시스템이라는 미로를 안겨 주었고, 그 중에는 COBOL로 작성된 시스템도 있었습니다.
초기에는 모든 새로운 연동이 유료 작업이었고, 각 클라이언트를 위한 전용 모듈을 만들 수 있었기 때문에 비교적 쉬웠습니다.
하지만 오늘은 상황이 달라졌습니다. 연동 수가 늘어나고, 요구사항이 내부와 외부 모두에 걸쳐 있기 때문에 모든 연동이 직접적인 수익으로 이어지는 것은 아닙니다.
Towards Reusable Solutions
저는 재사용 가능한 모듈, 표준화된 API, 그리고 우리 API와 동일한 형식을 사용하는 FTP 워크플로우 쪽으로 방향을 틀었습니다.
Early Experiments
- JSON schemas – 이를 위한 UI를 만들었지만, 프로젝트가 충분히 흥미롭지 않아 여가 시간에 계속 진행하지 않았습니다.
Leveraging the AI Era
AI 도구가 널리 보급되면서 더 적은 시간에 더 많은 일을 할 수 있게 되었습니다. 이는 새로운 가능성을 열어 주었고, 쿼리라는 새로운 아이디어로 이어졌습니다.
The Query‑Based Approach
결과는 고무적이었습니다. 저는 다음을 구축했습니다:
- 명령줄 인터페이스
- 자동 Swagger 문서화를 제공하는 API 서버
- JavaScript/TypeScript 라이브러리
이 시스템은 CSV, XML, JSON은 물론 EDIFACT와 고정 길이 평문 텍스트와 같은 더 복잡한 형식도 변환할 수 있습니다.
Basic Example
from xml to json
transform
set id=CID
set number=number(progressive)
위 스니펫은 XML을 JSON으로 변환하면서 CID에서 id 필드를 추출하고, number 필드를 숫자형으로 변환합니다.
Playground
데이터를 기반으로 쿼리를 쉽게 구성할 수 있는 온라인 플레이그라운드를 만들었습니다. 도구를 사용하면서 필요에 따라 새로운 함수와 어댑터를 계속 추가하고 있습니다.
Call for Discussion
이 접근 방식에 잠재성을 느끼는 사람이 저만은 아닐 것이라 생각합니다. 여기서 공유함으로써 흥미로운 논의를 촉발하고 싶었습니다.
프로젝트가 흥미롭다면 언제든지 연락 주세요!