'번스 절벽', '컬럼비아 힐스', '인데버', '보너빌 크레이터'를 들어본 적이 있습니까? 맞습니다! 바로 NASA의 MER(화성 탐사 로버)이 탐사한 지리 구조입니다. 수년간 MER은 화성의 고해상도 이미지를 포함하여 흥미로운 데이터를 수집하여 지구로 보내 왔습니다. 이제 Amazon Simple Workflow Service(Amazon SWF)는 이 임무를 지원하는 일부 핵심 컴퓨팅 기술에 동참하여 NASA의 연구원이 미션 크리티컬 작업을 안정적으로 운영하고 점점 축적되는 우주에 대한 지식을 효율적으로 처리할 수 있도록 돕습니다.
화성 탐사 로버

NASA JPL(제트 추진 연구소)은 MER(화성 탐사 로버) 및 CARVE(북극의 탄소 저장에 관한 취약성 실험) 등 여러 임무의 주요한 부분에 Amazon SWF를 활용하고 있습니다. 이러한 임무는 효율적이고 안정적으로 처리, 분석 및 저장되어야 하는 많은 볼륨의 데이터를 지속적으로 생성합니다. 전술 작전 및 과학적 분석을 위한 데이터 처리 파이프라인에는 여러 기계의 병렬화를 위해 충분한 기회를 제공하도록 순서대로 진행되는 대규모의 실행 단계가 수반됩니다. 이미지 쌍의 입체 데이터 생성, 과학자가 화성 지역 연구에 몰두할 수 있도록 수 기가픽셀의 파노라마 사진을 병합하는 작업, 원하는 때에 이러한 데이터를 로드할 수 있도록 기가픽셀 이미지를 타일링하는 작업을 예로 들 수 있습니다. 이러한 데이터를 필요로 하는 전 세계의 운영자와 과학자 커뮤니티가 있습니다. 이 커뮤니티는 전술 작전 일정은 흔히 수 시간으로 짧은 경우가 많습니다. 이 요구를 충족하기 위해 JPL 엔지니어는 몇 분 만에 화성의 이미지를 처리하고 전달한다는 목표를 세웠습니다.

JPL은 오랫동안 데이터의 저장과 처리에 AWS를 사용해 왔습니다. 이 작업은 대부분 JPL의 클라우드 지향 아키텍처의 참조 구현인 Polyphony 프레임워크로 이루어졌습니다. Polyphony 프레임워크는 클라우드의 데이터 처리 작업에 대한 프로비저닝, 저장, 모니터링, 작업 조직화를 지원합니다. 데이터 처리 및 분석을 위한 Polyphony의 기존 도구 세트는 컴퓨팅 파워에 사용되는 Amazon EC2, 저장 및 데이터 배포에 사용되는 Amazon S3, 작업 분산 및 실행을 위한 하둡 등의 구현에 사용되는 Amazon SQS 및 MapReduce로 이루어져 있습니다. 그러나 이 도구 세트에는 핵심적인 서비스 하나가 빠져 있습니다. 바로 대규모의 복잡한 워크플로 작업을 안정적으로 관리할 수 있는 조직화 서비스입니다.

대기열은 대규모의 병렬 작업을 효율적으로 분산할 수 있는 처리 방법을 제공했지만, 엔지니어는 금세 단점을 발견해 냈습니다. 대기열 내의 순서와 종속성을 구현할 수 없었기 때문에 복잡한 워크플로에는 적합하지 않았던 것입니다. 그뿐만 아니라, JPL의 엔지니어는 대기열을 사용할 때의 중복 메시지도 처리해야 했습니다. 예를 들어, 여러 개의 이미지를 하나로 병합하는 작업을 할 때는 중복되는 이미지 병합 작업 처리로 인해 비용이 높아질 수 있습니다. 이는 전체적인 컴퓨팅 비용이 높아진다는 것을 의미하며 이렇게 되면 파이프라인이 아무 가치 없이 완료될 가능성이 있습니다. 이뿐만 아니라 JPL은 대규모 데이터 처리의 범위를 넘어서며 제어 흐름을 추진할 메커니즘이 필요한 수많은 사용 사례를 보유하고 있습니다. 엔지니어는 MapReduce를 사용해 데이터 주도 흐름을 쉽게 구현할 수 있었지만, 파이프라인의 모든 단계를 프레임워크의 의미 체계 내에서 구현하기는 어렵다는 것을 확인했습니다. 특히, 데이터 처리의 복잡성이 증가함에 따라 처리 단계 간 종속성을 구현하고 분산 컴퓨팅 실패를 처리하는 것이 가장 큰 어려움이었습니다.

JPL 엔지니어는 다음과 같은 특성을 갖춘 조직화 서비스가 필요하다는 것을 확인했습니다.

  • 고가용성: 미션 크리티컬 작업을 지원하기 위함
  • 확장 가능: Amazon EC2 인스턴스 수백 개에서 동시에 병렬 실행을 용이하게 하기 위함
  • 지속성: 예약된 작업은 높은 확률로 한 번 실행되어야 함
  • 구현: 신속한 개발을 위해 복잡한 워크플로를 간단히 구현할 수 있어야 함
  • 유연성: 워크플로 실행은 Amazon EC2에만 국한되지 않아야 하며 작업은 라우팅 가능해야 함
  • 성능 기준 준수: 작업은 최소 지연 시간으로 일정에 맞춰 이루어져야 함

JPL 엔지니어는 Amazon SWF를 사용하고, 서비스를 전술 작전용 화성 이미지의 데이터 처리를 담당하는 Polyphony 파이프라인과 통합했습니다. 이를 통해 파이프라인 분산 실행에 대한 전례 없는 제어와 가시성을 확보했습니다. 무엇보다 중요한 점은 특정 패러다임에 맞춰 문제를 표시하지 않고도 복잡한 워크플로를 간결하게 표현할 수 있었다는 것입니다.

MSL(Mars Science Laboratory)이라고도 알려진 Curiosity 로버에 대한 '빠른 모션 현장 테스트'를 지원하기 위해 JPL 엔지니어는 이미지를 처리하고 입체 화면을 생성하여 파노라마를 만들어야 했습니다. 입체 화면을 만들려면 동시에 촬영된 이미지 쌍이 필요하며 이는 전술 작전 담당자에게 로버의 거리와 방향을 이미지의 픽셀로 알려주는 영역 데이터를 생성합니다. 왼쪽과 오른쪽 이미지는 병렬로 처리할 수 있지만, 입체 이미지 처리는 각 이미지의 처리가 완료되기 전까지는 시작할 수 없습니다. 이 전형적인 분할-조인 워크플로는 대기열 기반 시스템으로 구현하기에는 어렵습니다. 반면에 SWF를 사용하면 Java 코드 몇 줄을 AWS Flow Framework 주석과 합치면 되므로 구현이 쉽습니다.

swf-nasa-mer-stereo-cameras-whiteboard
swf-nasa-mer-swf-code-whiteboard

파노라마 생성 또한 워크플로로 구현할 수 있습니다. 전술적 목적을 위해 파노라마는 로버가 멈춰서 사진을 찍은 각 위치에서 생성되므로, 새로운 사진이 특정 지역에서 수신될 때마다 파노라마에 새로운 정보가 합쳐지게 됩니다. 파노라마는 그 규모가 크며 가능한 한 빨리 생성되어야 하므로 작업이 여러 대의 기계로 분산되었다가 조직화되어야 합니다. 엔지니어가 채택한 알고리즘은 파노라마를 대규모의 여러 열로 나눕니다. 워크플로의 첫 번째 작업은 위치에서 사용 가능한 이미지를 기반으로 각 열을 생성하는 것입니다. 열이 생성되고 나면 여러 해상도로 규모가 축소되며 원격 클라이언트에서 사용될 수 있도록 타일링됩니다. Amazon SWF가 제공하는 여러 기능을 사용하여 JPL 엔지니어는 이 애플리케이션 흐름을 Amazon SWF 워크플로로 구현했습니다.

swf-nasa-mer-tiling

전체 크기 11280×4280픽셀에 77색 이미지가 포함된 Opportunity Pancam 모자이크입니다. 이 이미지는 최종 사용자가 원하는 크기로 전송될 수 있도록 6단계의 세밀한 타일링 작업을 거쳐야 합니다. 노란색 격자 줄은 각 이미지에 필요한 타일을 뜻합니다. Mars Science Laboratory의 Mastcam 기구에서 찍은 파노라마는 최대 1,296장의 이미지로 이루어져 있으며 해상도는 거의 2기가픽셀에 달합니다! 이 파라노마 이미지는 아래에서 확인할 수 있습니다.

swf-nasa-mer-panorama-whiteboard

Amazon SWF를 통해 클라우드에서 조직화가 가능하게 됨으로써 JPL은 환경 내외부의 리소스를 활용하고 퍼블릭 클라우드에서 원활하게 애플리케이션 실행을 분산할 수 있습니다. 이를 통해 JPL의 애플리케이션을 진정한 분산 방식에 따라 동적으로 확장 및 실행할 수 있습니다.

대부분의 JPL 데이터 처리 파이프라인은 자동화 작업자가 방화벽으로 보호된 데이터를 업로드하고 병렬로 데이터를 처리하며 결과를 다운로드할 수 있도록 구조화되어 있습니다. 로컬 서버에서 실행되는 업로드 및 다운로드 작업자와 데이터 처리 작업자는 로컬 서버와 Amazon EC2 노드 모두에서 실행할 수 있습니다. JPL 개발자는 Amazon SWF의 라우팅 기능을 사용하여 작업자를 파이프라인에 동적으로 결합하고 데이터 로컬리티 같은 작업자 특성을 활용할 수 있습니다. 이 처리 애플리케이션은 로컬 작업자가 처리에 실패하더라도 클라우드 기반 작업자가 처리를 계속할 수 있으므로 가용성 또한 높습니다. Amazon SWF는 작업자 노드의 위치에 제약이 없으므로 JPL은 로컬 데이터 센터뿐만 아니라 여러 리전에서 작업을 실행하여 미션 크리티컬 시스템에 대한 가용성을 높게 유지할 수 있습니다. Amazon SWF를 여러 리전에서 사용할 수 있게 됨에 따라 JPL은 리전 전체에서 자동 장애 조치를 SWF로 통합할 계획입니다.

swf-nasa-mer-arch-whiteboard

JPL의 Amazon SWF 사용은 데이터 처리 애플리케이션에 그치지 않습니다. JPL 엔지니어는 Amazon SWF의 일정 예약 기능을 사용해 미션 크리티컬 작업을 적시에 안정적으로 수행하는 분산 Cron 작업 시스템을 구축했습니다. JPL은 안정성뿐만 아니라 AWS Management Console에서 사용할 수 있는 Amazon SWF의 가시성 기능을 통해 이러한 분산 작업에 대한 유례없는 중앙 집중식 가시성을 확보하게 되었습니다. JPL은 Amazon S3에 있는 MER의 필수 데이터를 백업하는 애플리케이션을 구축하기도 했습니다. JPL은 분산 Cron 작업으로 백업을 업데이트할 뿐만 아니라 프로젝트에서 원하는 만큼 빈번하게 데이터의 무결성을 감사합니다. 암호화, Amazon S3에 업로드, 감사할 데이터 임의 선택, S3를 사용해 현장 데이터를 비교하여 실제 감사 등 애플리케이션의 모든 단계는 Amazon SWF를 통해 안정적으로 조직화됩니다. 이뿐만 아니라 JPL의 여러 팀은 AWS Flow Framework에서 제공하는 프로그래밍 지원을 활용해 클라우드의 조직화를 사용하도록 기존 애플리케이션을 신속하게 마이그레이션했습니다.

JPL은 계속하여 단순한 데이터 처리 파이프라인에 하둡을 사용하며 이제 처리 단계 간 복잡한 종속성이 있는 애플리케이션을 구현하는 데 Amazon SWF를 사용하는 것이 자연스러운 일이 되었습니다. 또한, 개발자는 AWS Management Console에서 제공하는 진단 및 분석 기능을 주로 사용하여 개발하는 동안 애플리케이션을 디버깅하고 분산 실행을 추적하고 있습니다. AWS를 사용하여 이전에는 개발, 테스트, 배포하는 데 수개월이 걸렸던 미션 크리티컬 애플리케이션을 이제는 수일이면 완성할 수 있게 되었습니다.