파일 프로토콜을 통한 데이터 동기화

이 섹션에서는 CitrusAd가 지원하는 프로토콜과, CitrusAd가 서버에서 자동으로 데이터 파일을 다운로드할 수 있도록 파일 이름을 지정하는 방법을 설명합니다.

프로토콜

CitrusAd는 여러 데이터 파일 검색 방법을 지원합니다. 데이터 파일은 서버에 저장되어야 하며, 파일은 표준 프로토콜 중 하나를 통해 다운로드됩니다.

현재 CitrusAd는 다음의 프로토콜을 통한 데이터 파일 다운로드를 지원합니다.

  • GCS
  • SFTP
  • SCP
  • HTTPS

일반적으로 CitrusAd가 다운로드할 수 있도록 데이터 파일의 프로토콜, 호스트, 포트 및 파일 경로에 대한 정보를 제공해야 합니다. 데이터 파일을 다운로드하는 데 인증이 필요한 경우 CitrusAd에 자격 정보(예: 사용자 이름 및 비밀번호)를 제공하여 시스템 인증을 진행해야 합니다.

SFTP 프로토콜을 사용하는 경우, CitrusAd는 데이터 파일을 다운로드하기 위한 두 가지 유형의 인증을 지원합니다.

  • 사용자 이름 및 비밀번호
  • CitrusAd의 공개 키.

두 번째 인증 유형에서는 아래의 공개 키를 SFTP 서버에 설치해야 합니다.

스테이징:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMd4w5Z6hsjlUc0/r3dTJ+IaM9Mm+l3ZTrX3D5+30ZNiAb3Mhvlp8gv37CFKzqM90oFejl15bbr5dymjycsOWInxqkMyLOTbdMFAk7hmicNvN5bt3tx/Z0UewNvAx0Uw9Qxu7SCMSAalk9l7dqLp5RFFj+RHq9ApV8KIA/Fw2mjCw2vrJhiRWeuUuNNQTbGFBA5y72ATeYA2p0ZK3/TTJxyxCL70zGVxFG0jdAurfXKujYaF73Ql/gl5wmtnxGvTORtvObQdc2jCTsynj1w17LSZAdeoPQGnQkVCk37ZUnWTw8s4RYjHFVunsTDxJO5Qnw5yj8oqhe5IdpQyavUj+otRd6900q/3dK60IELH6AFz+ZEqudlBh8ZO2hvHIDS2Ii5S3LunlejykAVdRl7RVHA17Pk3mmrHCS6i3n9ZliBYeVQiKme2jHVB+ESrHFxQWl3ct9MYFNlAqwuhTFQRSG9ioSEHX5Dnmqk8aqbm/4pYY4b7YHOcIpHrtrVrFTJ3vLM1If1OVrDQidFhi1ArmoCU+PO65jNSeMj27m/HoX7Mbcmi8F++Op3MgP8iJrohE0Wjz+use7nlDtQTtDxDeEQQYGqsz4DOtH/jn1TWRynaXZqwPqC5Q6b52QM22T+E3rgT/4G7yJU3IRKioByOck251MEtOEgSCvvIAaV685fQ==

제작

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtpIUFoYu8OUesZGP9rffv6/hky1HbQCAhC8hNRmcWpdptzRYsKIZFPz9t2vb85dierTZqJstAEJkePHd25cZ8btIBacbAR49avCIXiBuVgvlJk1+Er2dyYqSzSeFhpzlZxi4CkGo/Nsx7yxPi5693fdVF3vr+/iencw1tdLJJXfT6j1YLBCREg+IziBCO6m9P0QQGEDXYvsOmIzl0CJ8enU7gjvnYL5ify1/aGpoXv9/XcCYJWXTQmvmISknOMdC4pBiuDqsE9CX27FLQQb1ZT5jNrqD5hFsEo0rWqLiCbb5qoxIdMSe/IbA+sewgpgTPNJXeCNLSSH/MHhj2IgiMZGDDDaVaqMZD7N2jeQdI6SQbgvXiLTTUL4gNyO5eN9oqoeJumeZMi0+MQ7kkfHDYGtKe3RMxL7heL650HL+eWDIybezyPdQmfyVew9KuN0uB+2X+2NxQs8ZLqow486XDfUDfo+rPuoIvkYy7Z8ox+gne+1iAk43TCekcDwxlc56R9muMtGLuzzg1x9s9MqsAg5JNWEPQ8giAwCQJwm7h3UcCY3TJCn0LUzYHc7Ycr11JfIXL47vYGH3C0XBYlbEU/8m4VhhexzgJi8G/reclY5pfjtwQGOiobsxLsWgGx6Qoz/qWqmGwQIg+qi7jvA7jnltUP+RTFZpmd18/dSxB+w==

제작:

데이터 압축 및 암호화

동기화를 위해 서버에 업로드하기 전에 데이터를 압축 및 암호화해야 할 수 있습니다. 데이터 파일에 압축 및 암호화가 모두 적용된 경우, CitrusAd는 데이터 파일이 암호화되기 전에 압축되었다고 가정합니다.

데이터 파일이 암호화되면 CitrusAd는 데이터 파일을 다운로드한 후 암호를 해독합니다. 현재 CitrusAd는 PGP 프로그램에 의해 암호화된 파일에 대한 데이터 암호 해독을 지원합니다. PGP 암호화에 대한 자세한 사항은 https://tools.ietf.org/html/rfc4880에서 확인할 수 있습니다.

데이터 파일에 이러한 유형의 암호화를 사용하도록 선택하는 경우, 서버에 파일을 업로드하기 전에 아래의 공개 키를 사용하여 데이터 파일을 암호화할 수 있습니다. CitrusAd를 통해서만 암호화된 데이터 파일의 암호를 해독할 수 있습니다.

공용 키:

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
tPA=
=lRkN
-----END PGP PUBLIC KEY BLOCK-----

데이터 파일이 압축되어 전달되면 처리하기 전에 데이터 파일의 압축을 해제합니다. 현재 두 가지 유형의 압축 형식(zip 및 gzip) 해제를 지원합니다.

파일 이름 지정 규칙

앞서 언급했듯이 CitrusAd가 데이터 파일을 다운로드하고 처리할 수 있도록 데이터 파일의 프로토콜, 호스트, 포트 및 파일 경로에 대한 정보를 제공해야 합니다. 매일 서버에서 데이터 파일이 준비되었는지 확인하기 위해 하루 중 편리한 시간을 선택할 수 있으며, CitrusAd는 매일 데이터 파일을 다운로드합니다.

매일 CitrusAd가 다운로드할 대상 파일을 지정하는 가장 간단한 방법은 명시적인 파일 이름을 지정하는 것입니다. 그러면 CitrusAd가 이러한 파일 이름을 사용하여 서버에서 데이터 파일을 검색합니다.

서버와 CitrusAd 간의 통신을 위해 FTP, FTPS 및 SFTP 프로토콜을 사용하는 경우 다음을 포함하여 CitrusAd가 다운로드할 대상 파일을 지정할 수 있는 다른 옵션을 지원합니다.

  • Rolling_earliest
  • Rolling_earliest_24_hours
  • Rolling_latest
  • Rolling_latest_24_hours.

또한 이들을 대상 파일 모드라고도 부릅니다.

위에서 기술한 옵션 중 하나를 선택하면 데이터 파일 이름에 대한 텍스트 템플릿을 CitrusAd에 제공해야 합니다. 텍스트 템플릿에는 특수 문자열 "{*}"이 있습니다. CitrusAd는 서버의 파일 이름을 일치시키기 위해 사용자가 제공한 템플릿을 사용하여 날마다 대상 파일을 선택하고 다운로드합니다.

템플릿 예시는 “CitrusAdCatalogDataAU{}.txt"입니다. 템플릿 내 일치하는 파일 이름은 “CitrusAdCatalogData_AU"로 시작하며 ".txt"로 끝납니다. 템플릿 “CitrusAdCatalogDataAU{_}.txt”가 사용된 경우 아래 파일 이름은 템플릿과 일치하게 됩니다.

CitrusAdCatalogProduct_AU_20190315.txt
CitrusAdCatalogProduct_AU_20190314.txt
CitrusAdCatalogProduct_AU_20190312.txt

업로드 중인 데이터 파일의 다운로드를 피하기 위해, CitrusAd는 서버에 액세스한 순간을 기준으로 수정한지 1분 이상 지난 데이터 파일만 다운로드합니다.

몇몇 파일 이름이 템플릿과 일치하더라도 CitrusAd는 한 번에 하나의 파일만 다운로드하여 처리합니다. 후보 목록에서 파일을 선택하기 위해, 선택할 수 있는 다양한 대상 파일 모드를 정의합니다. 대상 파일 모드는 아래에 자세히 설명되어 있습니다.

Rolling_earliest

이 대상 파일 모드에서는 템플릿을 사용하여 이름별로 파일을 필터링한 후 결과를 파일 이름의 오름차순으로 정렬하고 첫 번째 결과를 반환합니다.

예를 들어 파일 이름에 대한 템플릿이 “CitrusAdCatalogDataAU{*}.txt”이고 템플릿으로 필터링된 파일 이름 목록이 아래와 같은 경우 " CitrusAdCatalogProduct_AU_20190312.txt" 파일이 대상 파일 모드에서 다운로드하도록 선택됩니다.

CitrusAdCatalogProduct_AU_20190312.txt
CitrusAdCatalogProduct_AU_20190313.txt
CitrusAdCatalogProduct_AU_20190314.txt

Rolling_earliest_24_hours

이러한 대상 파일 모드에서는 먼저 템플릿을 사용하여 이름별로 파일을 필터링합니다. 그런 다음 최근 24시간 이내에 수정된 파일만 선택합니다. 마지막으로, 결과를 파일 이름의 오름차순으로 정렬하고 첫 번째 결과를 반환합니다.

예를 들어 현재 시간은 2019 -03-15 10:30:07이고 파일 이름에 대한 템플릿은 "CitrusAdCatalogDataAU{*}.txt"라고 가정하겠습니다. 템플릿으로 필터링된 파일 이름 목록이 아래 표에 있는 경우 "CitrusAdCatalogProduct_AU_20190314.txt" 파일을 선택하여 대상 파일 모드에서 다운로드합니다.

이름 및 마지막 수정 날짜 정보가 있는 파일 예시

파일 이름마지막 수정 날짜
CitrusAdCatalogProduct_AU_20190312.txt13/03/19 15:35:11
CitrusAdCatalogProduct_AU_20190313.txt13/03/19 15:35:08
CitrusAdCatalogProduct_AU_20190314.txt14/03/19 15:35:10
CitrusAdCatalogProduct_AU_20190315.txt15/03/19 10:05:07

Rolling_latest

이 대상 파일 모드에서는 템플릿을 사용하여 이름을 사용하는 파일을 필터링합니다. 그런 다음 결과를 파일 이름의 내림차순으로 정렬하고 첫 번째 결과를 반환합니다.

예를 들어 파일 이름에 대한 템플릿이 “CitrusAdCatalogDataAU{*}.txt”이고 템플릿으로 필터링된 파일 이름 목록이 아래와 같은 경우 “CitrusAdCatalogProduct_AU_20190314.txt” 파일이 대상 파일 모드에서 다운로드하도록 선택됩니다.

CitrusAdCatalogProduct_AU_20190314.txt
CitrusAdCatalogProduct_AU_20190313.txt
CitrusAdCatalogProduct_AU_20190312.txt

이 대상 파일 모드는 Rolling_earliest와 유사합니다. 그러나 파일을 파일 이름의 오름차순이 아닌 내림차순으로 정렬합니다.

Rolling_latest_24_hours

이 대상 파일 모드에서는 먼저 템플릿을 사용하여 이름을 사용하는 파일을 필터링합니다. 그런 다음 최근 24시간 이내에 수정된 파일만 선택합니다. 마지막으로, 결과를 파일 이름의 내림차순으로 정렬하고 첫 번째 결과를 반환합니다.

예를 들어 현재 시간은 2019 -03-15 10:30:07이고 파일 이름에 대한 템플릿은 "CitrusAdCatalogDataAU {*}.txt"라고 가정하겠습니다. 템플릿으로 필터링된 파일 이름 목록이 아래 표에 있는 경우 "CitrusAdCatalogProduct_AU_20190315.txt" 파일이 대상 파일 모드에서 다운로드하도록 선택됩니다.

이 대상 파일 모드는 Rolling_earliest_24_hours와 유사합니다. 그러나 파일을 파일 이름의 오름차순이 아닌 내림차순으로 정렬합니다.

이름 및 마지막 수정 날짜 정보가 있는 파일 예시

파일 이름마지막 수정 날짜
CitrusAdCatalogProduct_AU_20190312.txt13/03/19 15:35:11
CitrusAdCatalogProduct_AU_20190313.txt13/03/19 15:35:08
CitrusAdCatalogProduct_AU_20190314.txt14/03/19 15:35:10
CitrusAdCatalogProduct_AU_20190315.txt15/03/19 10:05:07