타사 연동 - API 와 파일 중 어느 쪽을 사용해야 할까?
서드파티 앱과의 통합은 자동 상호작용을 위해 API(애플리케이션 프로그래밍 인터페이스)를 활용한 여러 앱과의 연동이 일반적입니다. 이 API를 통해 두 앱 간의 데이터 교환이 가능해져 궁극적으로 사용자의 시간을 획기적으로 절약할 수 있습니다. 하지만 이러한 통합 구축에는 피할 수 없는 대가가 있는데, 바로 벤더, 고객, 파트너 등 제3자 등 의존관계가 추가된다는 점입니다.
적어도 두 당사자가 인터페이스에 대해 합의하고, API와 API를 사용하는 클라이언트 코드를 개발, 배포하고, 앱에 허점이 없는지 보안을 확인해야 합니다. 또한, 통합을 유지하기 위해 두 앱 모두 업데이트나 업그레이드가 있을 때마다 매번 안정적으로 작동하는지 확인해야 합니다.
'API 공급자'와 'API 소비자' 관계에서 당신의 역할에 따라 인터페이스, 데이터 구조, 사이버 보안, 각종 규제법 준수 등 상대방이 요구하는 모든 종류의 표준을 준수해야 할 수도 있습니다.
레거시 시스템을 운영하는 기업과의 거래에서 데이터 교환을 위해 최신 REST API가 아닌 안전한 파일 공유를 사용해야 하는 경우도 있습니다.
따라서 이 글에서는 API를 통한 서드파티 통합과 안전한 파일 교환을 비교해 보겠습니다.
스피드 vs. 벌크 조작
대부분의 API는 단일 항목 수준에서 작동합니다: 물론 객체 목록을 가져올 수는 있지만, 항목 생성, 업데이트, 삭제와 같은 작업은 일반적으로 레코드 단위의 조작으로 이루어집니다. 이는 API가 레코드 단위의 실시간 통합에 적합하다는 것을 의미합니다. 하지만 API는 일반적으로 대량 작업은 지원하지 않습니다. 대량 작업은 클라이언트가 레코드를 반복적으로 처리하고 레코드별로 실행해야 하므로 필연적으로 대량 작업의 API는 장시간 실행되고 위험이 높으며, API는 무결성을 보장하는 트랜잭션 작업(즉, '0 아니면 100') 개념을 거의 지원하지 않으므로 결국 작업은 업무 시간을 넘어서야만 끝나는 경우가 허다합니다.
파일 교환은 벌크 수준의 통합을 이용할 때 가장 효과적입니다. 예를 들어, 다른 앱에서 처리되는 신규 또는 업데이트된 레코드의 파일을 매일 밤 가져오는 것이 그것입니다. 최신 파일 교환은 파일이 업로드될 때 웹후크 알림을 설정할 수 있기 때문에 대량의 데이터든 하나의 레코드든 파일 교환을 통한 실시간 통합을 실현할 수 있습니다.
보안
API의 보안을 확보하기 위해서는 다음과 같은 것들이 필요합니다:
- 인증 메커니즘 구현: 이용하려는 사용자가 반드시 본인임을 명확히 합니다.
- 승인 구조 구현: 사용자가 하고자 하는 일 또는 접근하고자 하는 항목에 대해 반드시 그 권한을 가지고 있다는 것을 명확히 합니다.
- 중간자(man-in-the-middle)의 기습을 피하기 위해 클라이언트와 서버 간 전송 데이터는 확실하게 암호화합니다.
인증은 OAuth, 권한 부여는 API 범위, 암호화는 HTTPS 등 많은 기준이 있다. 그러나 이러한 구현에는 학습 비용과 기술적 부담이 있으며, VPN, 인바운드 네트워크 규칙 요구 사항, 정적 IP(아웃바운드 네트워크 규칙 설정에 사용)와 같은 기타 보안 조치로 인해 아키텍처와 배포 프로세스가 복잡해집니다.
SFTP 및 FTPS와 같은 일반적인 파일 교환 프로토콜은 다음과 같은 프로토콜 내 보안 조치를 내장하고 있습니다:
- 인증은 사용자가 폴더와 파일에 접근할 수 있는 권한의 형태로 이루어집니다.
- 공개키 인증은 매우 안전하다고 여겨지지만, 패스워드 인증도 사용할 수 있습니다.
- 통신상의 데이터 암호화는 프로토콜의 일부이며, 데이터 보호를 위해 다양한 강력한 암호를 사용합니다.
- VPN, 고정 IP 주소, 파일 교환과 관련된 인바운드 네트워크 규칙을 추가하는 것은 아주 쉬운 해결책입니다.
또한, 이러한 프로토콜은 오랫동안(20년 이상) 존재해 왔기 때문에 거의 모든 저명한 CISO와 IT 담당자는 이러한 프로토콜에 익숙하다고 할 수 있으며, (커스텀 API와 달리) 침입을 방지하기 위한 대규모 보안 테스트가 필요하지 않습니다.
상호운용성
정의상 HTTP 기반 API를 통해 상호운용성을 확보할 수 있습니다. 즉, 다양한 OS와 프로그래밍 언어에서 API에 접근할 수 있다는 뜻입니다. 그러나 API는 표준 웹 페이지에서 발견되는 것과는 다르게 작동하며, 사람이 소비하는 것을 전제로 하지 않습니다.
SFTP 파일 교환은 모든 OS에서 접근이 가능합니다. 또한 SFTP 프로토콜을 사용하여 원격 서버의 파일에 액세스하고 관리하기 위해 그 어떤 프로그래밍 언어로도 사용할 수 있는 프로그래밍 라이브러리도 있습니다. 또한 CLI(명령줄 인터페이스)를 이용하면 한 줄의 코드도 작성하지 않고도 처리를 자동화할 수 있어, 고급 사용자는 이러한 데이터 교환 포인트의 사용 자체도 자동화할 수 있습니다. 마지막으로 API와 달리 FileZilla, WinSCP, Cyberduck 등의 GUI (Graphical User Interface) 클라이언트에서는 문제가 발생하거나 버그가 발생했을 때 등 필요에 맞춰 권한을 부여하여 파일에 접근할 수 있도록 할 수 있습니다.
확장가능성
많은 수의 동시 API 요청을 처리해야 하는 경우는 어떻게 할까요? API 서버의 스케일아웃은 NLB (Network Load Balancer)를 통해 서버 간 트래픽을 분산시키면서 더 많은 웹서버를 투입하는 것만으로 쉽게 해결할 수 있을 것 같지만, 실제로는 그렇지 않습니다. 하지만, 이것은 일반적인 동시 요청을 받는 첫 번째 계층에 불과합니다. 일반적으로 API는 데이터베이스를 직접 쿼리하고 업데이트하기 때문에 이것이 다음 병목현상이 될 수 있습니다. 또한 분당, 시간당, 일일 요청 수 등 API의 횟수 제한을 관리하는 것은 쉽지 않지만, API에 요청이 폭주하여 다운되는 것을 방지하기 위해 반드시 필요한 작업입니다.
한편, 일반 파일 서버는 스케일아웃이 더 어렵고 NLB와 호환되지 않아 다른 네트워크 엔드포인트에 할당해야 하지만, SFTP To Go와 같은 최신 클라우드 기반 솔루션은 처리할 동시 세션 수에 따라 스케일업과 스케일다운이 가능합니다. 스토리지 자체에는 모든 서버에서 동시에 접근할 수 있기 때문에 사실상 서버리스 솔루션으로 취급할 수 있습니다. 참고로 SFTP To Go는 수백만 개의 동시 요청을 처리할 수 있는 설계는 아니지만, 수천 개의 동시 세션 처리에는 문제가 없기 때문에 웹후크 알림과 함께 파일 기반 요청을 적시에 소비하고 처리할 수 있습니다.
비용 및 유지보수
API 개발 및 유지보수는 전문 프로그래밍 지식뿐만 아니라 정기적인 유지보수가 필요합니다. 더우기, 제대로 작동하고 안전하게 작동하기 위한 전문적 프로그래밍 지식이 필요하다는 관점에서 비용도 많이 듭니다.
반면, 파일 교환은 문제를 완전히 해결하지는 못하지만(사용자를 대신해 데이터를 처리하지는 않기 때문에), 타사와 앱 간에 신뢰할 수 있는 비동기식 데이터 교환 지점 역할을 할 수 있습니다. 설정도 매우 간단하며, 경우에 따라서는 거의 아무것도 설정할 필요가 없습니다. 또한, 유지보수에 대해서도 관리형 서비스를 이용하면 사용자가 할 일이 거의 없어집니다. 직접 도입할 경우, 자체개발과 매니지드 서비스의 장단점을 비교 검토해 보시기 바랍니다.
유연성
파일 교환 방식과 달리, API는 일종의 인터페이스 구현이 필요합니다. 즉, API 엔드포인트가 어떤 인수를 입력으로 받아들이고 무엇을 반환할 것인지를 결정함으로써 인터페이스를 엄격하게 정의해야 합니다. 반면, 구현은 전적으로 개발자에게 맡겨져 있기 때문에 제공 기능은 매우 유연해집니다.
당사자 간 교환의 기본 단위인 파일 업로드, 다운로드, 관리에는 파일 교환 방식이 더 유리합니다. 파일은 사용자나 데이터 종류별로 지정한 폴더에 저장됩니다. 그러나 실제로 저장되는 파일의 내용에는 제한이 없으며 CSV, JSON, XML, 텍스트, 이미지, 동영상 등 다양할 수 있습니다. 파일을 다운로드하여 처리하고 합의된 형식을 준수하는 데이터가 포함되어 있는지 확인하는 것은 당사자의 몫입니다.
SFTP To Go를 만나보세요
SFTP To Go는 고급 클라우드 인프라를 활용한 안전한 클라우드 파일 저장 및 공유 서비스로, 데이터가 통신 중이던, 저장 중이던 안전하게 보호되고 손상되지 않도록 합니다.
SFTP To Go의 웹 UI와 API를 사용하여 인증 정보와 스토리지에 대한 액세스를 관리하여 사용자 및 주변 사용자가 SFTP, FTPS, S3, HTTPS와 같은 일반적인 프로토콜을 사용하여 파일에 안전하게 액세스할 수 있도록 지원합니다.
파일 시스템 변경을 트리거하는 웹후크 알림을 통해 비용 효율적인 파일 기반 실시간 데이터 통합을 실현할 수 있습니다.
SFTP To Go로 데이터를 쉽게 통합할 수 있는 방법을 알고 싶으신가요? 바로 지금 무료평가판에 가입하시거나 저희 팀에 연락하셔서 비즈니스 요구상황과 그에 맞는 솔루션에 대해 논의해 보십시오.