이 콘텐츠는 어떠셨나요?
AWS 기반 EngFlow Remote Execution을 통해 빠르고 신뢰성이 높으며 비용 효율적인 방식으로 대규모로 빌드/테스트
현대의 엔지니어링 조직이 마이크로서비스 아키텍처를 도입하고 모놀리스 애플리케이션을 분해하고 있음에도 여전히 크고 복잡한 코드 베이스를 흔하게 볼 수 있습니다. 코드가 많을수록 빌드/테스트 주기가 길어져 개발자 생산성이 저하되고 비용이 상승합니다. 게다가 한정된 지속적 통합(CI) 컴퓨팅 예산으로 인해 실행 대기열이 발생하여 엔지니어링 생산성이 더욱 저하됩니다.
EngFlow는 현대적 조직이 원격 실행 및 캐싱을 통해 빌드 및 테스트 주기를 개선하여 소프트웨어 개발 팀의 생산성을 극대화할 수 있도록 지원합니다.
EngFlow는 고객에게 성능과 신뢰성이 뛰어나고 비용 효율적인 솔루션을 제공하기 위해 AWS Well-Architected Framework의 모범 사례를 따랐습니다. 이 게시물에서는 가격 대비 성능과 가용성을 개선하는 데 도움이 된 사례를 중점적으로 살펴보겠습니다.
EngFlow Remote Execution 서비스의 아키텍처
EngFlow 고객은 Network Load Balancer, Virtual Private Cloud(VPC) 엔드포인트, 서브넷 및 보안 그룹과 같은 다양한 네트워크 기술을 활용하여 여러 계층에서 보호되는 안전한 프라이빗 채널을 통해 Remote Execution 서비스와 상호 작용합니다(그림 1 참조).
Amazon Elastic Block Store(Amazon EBS) 볼륨이 구축된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행되는 스케줄러는 각 빌드/테스트 요청을 독립적인 부분으로 나누고, 빌드/테스트 작업 컴퓨팅/메모리 요구 사항을 충족하는 개별 빌드/테스트 작업을 기존 워커 인스턴스에 배치합니다. AWS Auto Scaling은 일정 수의 실행 스케줄러 인스턴스를 유지하여 자가 복구 기능을 제공하는 데 사용됩니다. 장애가 발생한 Amazon EC2 스케줄러 인스턴스는 사람의 개입 없이 자동으로 교체됩니다.
EngFlow의 Remote Execution 소프트웨어는 빌드/테스트 작업을 수백 또는 수천 개의 워커 인스턴스에 분산하며, 이들 인스턴스는 모두 EBS 볼륨이 탑재된 EC2 인스턴스에서 실행됩니다. 여기서 EngFlow는 AWS Auto Scaling을 사용하여 필요한 컴퓨팅 파워를 수요에 따라 확장 및 축소함으로써 낭비를 최소화하고 사용률을 극대화합니다. 다양한 고객 니즈를 지원하고 비용 효율적인 솔루션을 제공하기 위해, 워커 인스턴스를 EC2 온디맨드 또는 스팟 인스턴스에서 실행할 수 있습니다. EngFlow는 온디맨드 인스턴스로 폴백하여 신뢰성을 높일 수 있는 기능을 제공합니다.
Remote Execution 기능은 EngFlow의 원격 캐싱 솔루션과 함께 작동하여, 작업 중복을 방지합니다. EngFlow는 조직에서 수행하는 모든 빌드/테스트 아티팩트를 로컬 스토리지에 캐싱함으로써 팀이 빌드/테스트를 직접 다시 실행하는 대신 이전 빌드/테스트 아티팩트를 다운로드할 수 있도록 합니다. 따라서 빌드/테스트 시간이 단축되고 빌드/테스트당 비용이 절감됩니다. 클라우드의 인스턴스가 활성화되고 비활성화되면서, 빌드/테스트 아티팩트가 지속적, 비용 효율적으로 Amazon Simple Storage Service(S3)에 동기화되어 영구적으로 액세스할 수 있게 됩니다.
EngFlow의 Remote Execution 솔루션은 고객 계정에 배포할 때 운영을 지원하기 위해, Amazon CloudWatch Logs, 지표 및 경보와 같은 AWS 표준 서비스를 사용합니다.
EngFlow가 어떻게 AWS에서 빠르고 신뢰성이 높으며 비용 효율적인 구축을 지원하는지, 그리고 Well-Architected Review를 통해 원격 실행 솔루션을 개선할 부분을 어떻게 식별하는지를 자세히 살펴보겠습니다.
성능
빌드/테스트 속도를 EngFlow의 주요 가치 제안 중 하나로 간주하는 EngFlow 고객이 많습니다. 이러한 가치 제안 중 몇 가지를 예로 들자면, 개발자 생산성이 향상되고 출시 시간이 단축되는 동시에, 더 많은 실험을 실행할 수 있습니다. 클라우드에서 CI 빌드/테스트를 실행하고 로컬 워크스테이션 대신 가장 강력한 최신 CPU 세대의 분산 컴퓨팅 노드를 사용함으로써 Blue River Technology와 같은 고객이 CI 빌드/테스트에서 9배 향상된 성능을 실현할 수 있었습니다.
EngFlow 엔지니어는 고객이 최신 AWS Graviton3 프로세서와 같은 고유한 요구 사항에 가장 잘 맞는, 최고의 성능과 비용 효율성을 갖춘 EC2 인스턴스를 선택하는 데 도움을 줍니다. 이들 엔지니어는 고객에게 최신 범용 SSD 볼륨 생성 기능을 제공하여 빌드/테스트를 최대한 빠르게 진행할 수 있도록 하는 최신 EBS gp3 볼륨을 사용합니다. 이는 표준 및 사용자 지정 CloudWatch 지표를 활용하여 고유한 고객 워크로드를 분석함으로써 가능했습니다.
또한 워커 인스턴스의 AWS Auto Scaling 구성을 미세 조정하는 기능은 EngFlow가 용량과 비용의 최적 균형을 찾아 고객이 유휴 리소스에 비용을 낭비하지 않으면서 항상 충분한 컴퓨팅 및 스토리지 용량을 확보하여 예정된 신규 빌드/테스트를 즉시 시작할 수 있도록 하는 데 도움을 줍니다.
신뢰성
EngFlow는 수천 명의 개발자가 시간이 중요한 빌드/테스트를 실행할 수 있는 안정적인 서비스를 제공하기 위해 처음부터 AWS 모범 사례를 따랐습니다.
AWS Auto Scaling은 선택한 AWS 리전의 세 곳의 AWS 가용 영역에 걸쳐 구성되어 고객의 수요에 따라 규모를 조정하고, 로컬 서비스 가동 중단을 견디며, 장애가 발생한 Amazon EC2 인스턴스를 자동으로 교체하여 자가 치유 기능을 제공합니다. Amazon S3는 빌드/테스트 아티팩트를 위한 내구성과 가용성이 뛰어난 스토리지 서비스로서 솔루션을 보완합니다.
Well-Architected Review에서 EngFlow는 서비스의 신뢰성을 개선할 수 있는 부분을 발견했습니다. Amazon EC2 Auto Scaling은 종료 정책을 사용하여 스케일 인 이벤트 중에 어떤 인스턴스를 먼저 종료할지 결정합니다. 종료 정책은 종료할 인스턴스를 선택할 때 Auto Scaling에 사용되는 종료 기준을 정의합니다.
기본적으로 종료 정책은 인스턴스가 가장 많은 가용 영역을 선택합니다. 그리고 가장 오래된 시작 템플릿 또는 시작 구성에서 시작된 인스턴스를 종료합니다. 인스턴스가 동일한 시작 템플릿 또는 시작 구성에서 시작된 경우, Amazon EC2 Auto Scaling은 다음 청구 시간에 가장 가까운 인스턴스를 선택하여 해당 인스턴스를 종료합니다.
EngFlow는 이 기본 종료 정책으로 인해, 고객에게 중요한 작업을 실행하는 중이던 EC2 인스턴스가 종료되는 경우가 있다는 사실을 발견했습니다. EngFlow Remote Execution이 작업을 자동으로 재시도했지만, 이로 인해 빌드/테스트 실행 시간이 길어지고 비용이 증가하며 고객 문의가 발생했습니다. EngFlow는 인스턴스 스케일 인 보호 기능과 함께 자체 사용자 지정 종료 정책을 생성하여 신뢰성을 높이고 효율성을 개선할 수 있었습니다.
비용 효율성
EngFlow 고객은 피크 시간대에 수백 또는 수천 개의 EC2 인스턴스를 동시에 사용하여 대규모로 CI 빌드/테스트를 실행합니다. 이러한 워크로드는 고객을 대신하여 비용 최적화 기회를 모색할 최적의 기회라고 할 수 있습니다.
온디맨드 대비 컴퓨팅 비용을 최대 90% 절약하기 위해, Well-Architected Review에서는 Amazon EC2 스팟 플릿을 기반으로 스팟 인스턴스를 원격 실행할 수 있는 기능에 대해 EngFlow와 논의했습니다.
EngFlow의 엔지니어인 Yannic Bonenberger는 “이 기능은 저희와 고객 모두에게, AWS에서 실행할 때 비용 효율성을 높일 수 있는 큰 기회를 제공합니다. 저희는 이 기능을 구현하는 과정에 매우 만족했습니다. 워커 인스턴스는 상태 비저장 인스턴스로서, 강력한 재시도 메커니즘을 통해 자발적 종료를 처리하도록 설계되었습니다. AWS 스팟 인스턴스는 EngFlow와 고객이 평균 70%의 컴퓨팅 비용을 절감할 수 있는 완벽한 솔루션이었습니다”라고 설명합니다.
EngFlow는 스팟 인스턴스 통합 작업을 진행하는 동안 워커 인스턴스 예약 알고리즘을 개선하여 전체 EC2 인스턴스 리소스 사용률을 개선함으로써, 고객이 추가로 비용을 절감할 수 있도록 했습니다.
EngFlow는 스팟 인스턴스를 통합한 후 Amazon EC2가 스팟 인스턴스를 중지하거나 종료하기 2분 전에 발행되는 스팟 인스턴스 중단 알림에 주의를 기울였습니다. 따라서 곧 회수될 인스턴스에 새 빌드/테스트 작업을 예약하지 않아도 됩니다. 이와 마찬가지로, AWS Solution Architect는 EC2 인스턴스 재조정 권장 사항에 주의를 기울여 곧 회수될 가능성이 높은 인스턴스에 새로운 빌드/테스트 작업을 예약할 필요가 없도록 할 것을 권장했습니다. 이러한 권장 사항을 구현한 후 EC2 인스턴스가 조기 종료됨에 따라 EngFlow 고객의 빌드/테스트 작업 재시도 횟수가 줄어들었습니다.
현대적 빌드/테스트에 대한 유망한 접근 방식
소셜 미디어 플랫폼, 단기 여행 마켓플레이스 및 자동차 제조사와 같은 민첩성을 갖춘 대규모 기술 조직은 EngFlow의 플랫폼을 사용하여 엔지니어의 업무 흐름을 유지하는 한편, 최신 소프트웨어 개발에 필요한 민첩성을 유지합니다. EngFlow의 성공의 중심에는 AWS가 있습니다. AWS는 유연한 아키텍처와 비용 효율성을 제공하며, 이는 곧 최종 고객의 경쟁력으로 이어집니다.
EngFlow의 CTO인 Ulf Adams는 “얼마나 큰 유연성이 제공되는지를 보면 정말 놀랍습니다. 단일 개발자로서 1,000대의 머신을 확보하여 대규모로 시험해 볼 수 있게 된 것은 역사상 처음입니다”라고 말합니다.
Christian Mueller
Amazon Web Services(AWS)에서 전략적 자동차 고객을 위한 수석 솔루션스 아키텍트로 활동하면서 Christian은 고객이 AWS 클라우드의 잠재력을 최대한 활용하여 더 큰 성공을 거둘 수 있도록 지원합니다. 그는 서버리스의 모든 것에 관심이 있으며 커넥티드 카 및 자율 주행차부터 소프트웨어 정의 자동차에 이르기까지 자동차 업계에서 진행 중인 대규모 혁신에 참여하는 것을 즐깁니다.
Luis Pino
Luis는 EngFlow의 소프트웨어 엔지니어로서 EngFlow의 인프라 설정이 최대한 원활하게 실행되도록 하는 일을 담당하고 있습니다. 이전에 Luis는 Google에서 5년 동안 근무하는 동안 외부 API와 MacOS 지원에 중점을 두고 Bazel을 개발하는 데 도움을 주었습니다. 또한 공식 소프트웨어 검증을 전문으로 하는 École Polytechnique에서 컴퓨터 과학 박사 학위를 취득했습니다.
이 콘텐츠는 어떠셨나요?