2011-12-28 3 views
3

정기적으로 외부 공급 업체의 데이터 (구체적으로 거래 세부 목록)를 검색하는 배치 응용 프로그램을 설계하라는 요청을 받았습니다. 우리는 데이터 교환을 위해 XML을 사용하기로 동의했지만 실제 데이터 전송을 용이하게하기 위해 여러 가지 방법/프로토콜을 조사하고 있습니다. 공급 업체는 데이터를 전송할 수단으로 이메일 또는 FTP를 제안했지만 물류 및 안정성 문제로 인해 첫 번째 옵션을 오른쪽에서 거부했습니다.FTP는 자동화 된 데이터 교환 응용 프로그램과 함께 사용할 수 있습니까?

두 번째로 FTP는 안정성이 중요한 생산 환경에서 FTP를 사용하는 것을 주저했습니다. 공급 업체가 정기적으로 파일을 FTP로 게시하여 주기적으로 끌어 내려는 설계는 신뢰할 수없고 오류가 발생할 수 있습니다. 필자의 초기 반응은 웹 서비스 (이 특정 공급 업체가 제공 할 수도 있고 제공하지 않을 수도 있음)쪽으로 끌어 당기는 것으로, 특정 기간 동안 필요에 따라 데이터를 쿼리 할 수 ​​있습니다.

일반적으로 이와 같은 상황에서 사용하는 가장 좋은 방법은 무엇입니까? FTP (또는 SFTP)는 일반적으로 수용 가능한 옵션으로 간주됩니까? 아니면 더 좋은 점이 있습니까? 이러한 간단한 데이터 교환을위한 웹 서비스 과잉인가? 내가 완전히 간과하고있는 실행 가능한 다른 옵션이 있습니까?

+0

당신이 말하는 파일의 크기는 얼마나됩니까? –

+0

나는 그 (것)들이 아주 클 것으로 예상하지 않을 것입니다. 아마도 XML로 인코딩 된 트랜잭션 레코드가 5000 개 미만일 것입니다. 각각 최대 50 자의 필드가 10 개일 수 있습니다. XML 마크 업으로 인해 20 %의 인플레이션을 허용합니다. 트랜잭션이 증가 할 경우 전체적으로 솔루션은 확장 가능해야합니다. –

답변

3

파일 전송에는 여러 가지 복잡한 문제가 있습니다.

webservice를 선호하거나 digest/basic auth가있는 파일에 https 액세스 만 가능하지만 매우 큰 파일의 경우 이는 실용적이지 않을 수 있습니다.

또 다른 대답은 아마존 s3에서 공유 버킷을 사용하는 것입니다.이 버킷에는 읽기 액세스 권한이 있으며 쓰기 권한이 있습니다. 가난한 사람의 안전한 파일 전송으로 몇 번 사용했습니다. - FTP는 자격 증명 또는 데이터에 대한 안전하지

1) SFTP를 같은 보안 버전을 사용

나는이 방법으로 FTP의 맛을 사용하고, 여기에 당신이 할 경우 몇 가지 도움말입니다.

2) 세마포어 파일을 사용하여 최신 파일이 완료되어 사용할 수있는 시간을 표시하거나 파일을 FTP 디렉토리에 쓸 때 파일을 전체적으로 이동하여 불완전한 파일에 액세스하지 않도록하십시오.

3) 처리 한 파일과 읽지 않은 파일을 추적 할 수 있도록 각 파일에 고유 한 파일 이름 (타임 스탬프, 시퀀스 번호 등)이 있는지 확인하십시오. 이미 처리 한시기를 알지 못해서 파일 이름을 다시 사용하지 마십시오. 파일에 액세스 할 때 파일의 경쟁 조건이 업데이트 될 수 있습니다.

4) 성공적인 전송을 위해 해시 값을 사용하십시오. 파일에 대해 md5 해시를 제공 할 수 있으며, 복사가 완료되면 버전과 비교하여 확인할 수 있습니다. 필자는 종종 md5 파일을 세마포어로 사용하여 파일을 사용할 수 있음을 나타내며 전송이 완전하고 정확했는지 확인하는 방법을 제공합니다.

+0

귀하의 대답은 몇 가지 좋은 점을 제시하고 발생할 수있는 함정에 대한 해결책을 제시합니다. 웹 서비스가 바람직 할 것이라는 것에 동의하지만, 공급 업체가 우리 소비에만 공급할 의향이 있는지는 의문입니다. –

+0

내 경험이기도합니다. 벤더가 ftp를 제안하면 API와 같은 실제 개발을하지 않으려 고하지만 어딘가에 파일을 던지기위한 스크립트를 작성할 것입니다. ftp는 가장 낮은 공통 분모이며이 항목에 너무 자주 사용됩니다. –

+0

스크립트에서'ftp' 명령을 대체 할 수있는 비교적 쉬운 HTTP (S) 클라이언트가 많이 있습니다 (cURL이 마음에 듭니다). WebDAV 백엔드는 웹 서비스/HTTPS 액세스 라인을 따라 솔루션이 될 수도 있습니다. HTTPS는 대용량 파일 (특히 HTTP PUT, 일반 또는 WebDAV를 통해)을 업로드하는 경우에도 실제로 실제로 실행 가능합니다. MBs의 10은 연결에 따라 문제가되어서는 안됩니다. – Bruno

1

AS2을 사용할 수 있습니다.

그러나 이것은 푸시 메커니즘입니다. as2 mendelson은 무료 게이트웨이 소프트웨어입니다. "채널"을 설정하면 코딩없이 모든 것이 전송됩니다. 일부 문제가 나타나면 알림을 받아야합니다.

FTP는 꽤 불안합니다. 그것은 신뢰할 수 있어야합니다.

0

글쎄, 나는 파티에 늦게 왔지만, 위의 모든 것을 구현했으며 지금까지 AS2 (멘델슨 사용)가 가장 쉽고 오류가 발생하기 쉽습니다.

내 관찰 :

  • SFTP/FTPS 구현은 정직과 항목에 낮은 장벽 상당히 신뢰할 수있다,하지만 당신은 (앤드류가 언급 한 바와 같이)
  • 자신의 폴링 방법을 쓸 필요가 결국 웹 서비스는 훌륭하지만 벤더가 적절하게 설계하고 문서화 한 경우에만 가능합니다. 작은 파트너는 API를 함께 채찍질하거나 다른 고객 요청에 따라 기능을 추가하거나 전송에 정보를 추가하는 경향이 있지만 새로운 기능을 반영하기 위해 문서를 업데이트하지 않는 경향이 있음을 발견했습니다. 한 가지 경우에 이것은 우리가 sftp로 이동하는 것을 촉진시켰다.
  • AS2는 mendelson을 사용하여 안전하고 유지 관리가 매우 편리합니다. 서버 출력 폴더에 디렉터리 감시자를 추가하면 실시간 처리가 끝납니다.

당연히 하루가 끝날 때까지 공급 업체는 연결 방법을 제공하는 데있어 얼마나 기꺼이 지정해야하며 제공하는 최상의 방법을 선택해야합니다.

실시간 처리는 실제로 실시간 처리가 아니지만 관리가 허용하는 근사값입니다. 관리자는 내 회사와 다를 수 있습니다.