Azure에서 지속 가능한 워크로드에 대한 테스트 고려 사항
클라우드에 솔루션을 개발하고 배포하는 조직도 신뢰할 수 있는 테스트가 필요합니다. 워크로드 테스트를 실행하기 위한 고려 사항 및 권장 사항 및 보다 지속 가능한 테스트 모델을 최적화하는 방법에 대해 알아봅니다.
중요
이 문서는 Azure Well-Architected 지속 가능한 워크로드 시리즈의 일부입니다. 이 시리즈에 익숙하지 않은 경우 지속 가능한 워크로드란?으로 시작하는 것이 좋습니다.
테스트 효율성
저탄소 기간 동안 통합, 성능, 부하 또는 기타 강렬한 테스트 실행
통합, 성능, 부하 또는 기타 강렬한 테스트 기능을 실행하면 많은 처리가 발생할 수 있습니다. 배포된 워크로드를 테스트하기 위한 잘 만들어진 디자인은 사용 가능한 리소스의 전체 사용률을 보장하여 탄소 배출을 줄이는 데 도움이 될 수 있습니다.
Green Software Foundation 맞춤: 탄소 인식
권장 사항:
- 데이터를 사용할 수 있는 경우 데이터 센터의 에너지 믹스가 주로 재생 가능 에너지를 사용하는 경우 테스트를 실행할 계획입니다. 예를 들어 일부 지역에서 야간 테스트를 실행하는 것이 더 유익할 수 있습니다.
필요에 따라 CI/CD를 자동화하여 작업자 에이전트 크기 조정
사용량이 부족하거나 비활성 CI/CD 에이전트를 실행하면 더 많은 배출이 발생합니다.
Green Software Foundation 맞춤: 하드웨어 효율성
권장 사항:
- 현재 수요에 따라 컴퓨팅 사용률을 높게 유지하여 불필요한 용량 할당을 방지합니다.
- 필요한 경우에만 스케일 아웃하고 테스트하지 않을 때만 스케일 인합니다. 궁극적으로 이렇게 하면 테스트 환경에 유휴 컴퓨팅 리소스가 없습니다.
- VM에서 테스트하는 동안 컨테이너와 같은 최적화된 플랫폼 서비스를 고려하여 플랫폼을 활용하여 유지 관리를 줄입니다.
CI/CD 에이전트를 사용할 때 캐싱 고려
CI/CD 중에 캐싱 메커니즘을 사용하면 컴퓨팅 시간과 탄소 배출을 줄일 수 있습니다.
녹색 소프트웨어 재단 맞춤: 에너지 효율성
권장 사항:
- 캐시에 있는 단계의 결과를 저장하고 가능한 경우 서로 다른 CI/CD 실행 간에 다시 사용: CPU 시간이 걸리는 단계가 서로 다른 실행 간에 자주 변경되지 않는 아티팩트를 생성하는 단계가 있는 경우, 동일한 아티팩트를 생성하는 모든 실행에서 CPU 시간이 낭비되지 않도록 나중에 사용할 수 있도록 저장하는 것이 좋습니다. 반복합니다.
- CI/CD 에이전트가 자체 호스팅되는 경우 에이전트에 로컬 캐시를 사용하여 데이터 전송 및 배출을 추가로 줄입니다. 이렇게 하면 캐시가 네트워크를 통해 전송되지 않으며 이는 상당한 배출원일 수 있습니다.
큰 코드 리포지토리 분할
큰 리포지토리를 분할하면 변경된 코드 부분만 컴파일되는 CI/CD 단계에 도움이 될 수 있습니다. 이렇게 하면 컴퓨팅 시간이 줄어들어 궁극적으로 탄소 배출량이 줄어듭니다.
녹색 소프트웨어 재단 맞춤: 에너지 효율성
권장 사항:
- 큰 코드 리포지토리를 분할하여 기본 코드를 라이브러리 및 종속성과 분리합니다.
- 여러 리포지토리에서 공통적인 아티팩트 및 코드 라이브러리를 게시하고 다시 사용합니다.
권장 사항:
- 코드의 큰 리포지토리를 더 작은 리포지토리로 분할하여 기본 코드를 라이브러리 및 종속성과 분리합니다.
- 여러 리포지토리에서 공통적인 아티팩트 및 코드 라이브러리를 게시하고 다시 사용합니다.
프로파일링 및 측정
할당된 리소스를 가장 잘 사용하는 방법을 이해하려면 워크로드 측정, 프로파일링 및 테스트가 필수적입니다.
병렬화가 가능한 위치 평가
워크로드를 제대로 프로파일링하고 테스트하지 않으면 기본 플랫폼 및 배포된 리소스를 최대한 활용하는지 알기 어렵습니다.
Green Software Foundation 맞춤: 지속 가능성 측정
권장 사항:
- 애플리케이션을 테스트하여 동시 요청, 동시 처리 등을 이해합니다.
- 테스트를 위해 ML(Machine Learning)을 실행하는 경우 효율성 향상을 위해 GPU가 있는 머신을 고려합니다.
- 워크로드가 성능 집약적인지 확인하고 최적화를 위해 노력합니다.
- 다음 절충을 고려합니다. ML 테스트를 위해 GPU 기반 컴퓨터를 실행하면 비용이 증가할 수 있습니다.
카오스 엔지니어링을 사용하여 평가
통합, 성능 및 부하 테스트를 실행하면 워크로드의 안정성이 향상됩니다. 그러나 카오스 엔지니어링의 도입은 안정성과 복원력 및 애플리케이션이 오류에 어떻게 반응하는지를 개선하는 데 크게 도움이 될 수 있습니다. 이렇게 하면 워크로드를 최적화하여 오류를 정상적으로 처리하고 낭비되는 리소스를 적게 처리할 수 있습니다.
Green Software Foundation 맞춤: 지속 가능성 측정
권장 사항:
- 부하 테스트 또는 카오스 엔지니어링 을 사용하여 워크로드가 플랫폼 중단 및 트래픽 급증 또는 하락을 처리하는 방법을 평가합니다. 이렇게 하면 서비스 복원력과 오류에 대응하는 기능이 향상되어 보다 최적화된 오류 처리를 수행할 수 있습니다.
- 다음 절충을 고려합니다. 카오스 엔지니어링 중에 오류를 주입하고 시스템의 부하를 늘리면 테스트 리소스에 사용되는 배출량도 증가합니다. 불필요한 테스트 세션을 실행할 때의 기후 영향을 고려하면서 카오스 엔지니어링을 활용하여 워크로드 안정성을 높이는 방법과 시기를 평가합니다.
- 이에 대한 또 다른 각도는 카오스 엔지니어링을 사용하여 탄소 배출량이 높은 에너지 결함 또는 순간을 테스트하는 것입니다. 애플리케이션이 가능한 최소 에너지를 소비하도록 도전할 테스트를 설정하는 것이 좋습니다. 애플리케이션이 특정 "에코" 버전으로 이러한 조건에 어떻게 반응하는지 정의하여 사용자에게 일부 기능과 성능을 희생하여 가능한 최소 탄소를 방출하고 있음을 알립니다. 이는 지속 가능성을 평가하기 위한 벤치마크 애플리케이션일 수도 있습니다.
테스트에서 CPU 및 메모리 임계값 설정
애플리케이션에서 지속 가능성을 테스트하기 위한 테스트를 빌드하는 데 도움이 됩니다. 기준 CPU 사용률 측정을 고려하고 테스트가 실행되면 CPU 사용률 기준에 대한 비정상적인 변경을 검색합니다. 기준을 사용하면 최근 코드 변경에서 최적이 아닌 결정을 더 일찍 검색할 수 있습니다.
배포 및 테스트 파이프라인에 테스트 및 품질 게이트를 추가하면 지속 불가능한 솔루션을 배포하지 않도록 방지하여 배출량 감소에 기여합니다.
Green Software Foundation 맞춤: 에너지 효율성
권장 사항:
- 통합 테스트 또는 단위 테스트를 실행할 때 CPU 및 메모리 할당을 모니터링합니다.
- 애플리케이션 코드에서 비정상적으로 높은 리소스 사용량 영역을 찾고 먼저 완화에 집중합니다.
- 설정된 기준 값을 초과하는 경우 경고 또는 테스트 실패를 구성하여 지속 가능하지 않은 워크로드를 배포하지 않도록 합니다.
- 이 절충안 고려: 애플리케이션이 증가함에 따라 새 기능을 도입할 때 테스트에 실패하지 않도록 기준이 적절하게 이동해야 할 수 있습니다.
다음 단계
운영 절차에 대한 디자인 고려 사항을 검토합니다.