Azure에서 지속 가능한 워크로드의 애플리케이션 디자인
새 애플리케이션을 빌드하거나 기존 애플리케이션을 업데이트할 때 솔루션이 기후에 미치는 영향과 개선 및 최적화 방법이 있는지를 고려하는 것이 중요합니다. 보다 지속 가능한 애플리케이션 디자인을 위해 코드 및 애플리케이션을 최적화하기 위한 고려 사항 및 권장 사항에 대해 알아봅니다.
중요
이 문서는 Azure Well-Architected 지속 가능한 워크로드 시리즈의 일부입니다. 이 시리즈에 익숙하지 않은 경우 지속 가능한 워크로드란?으로 시작하는 것이 좋습니다.
코드 효율성
애플리케이션에 대한 수요는 다양할 수 있으며, 불필요한 에너지 유출로 이어질 수 있는 자원의 과잉 또는 활용을 방지하기 위해 사용률을 안정화하는 방법을 고려하는 것이 중요합니다.
마이크로 서비스 아키텍처로 모놀리식 이동 평가
모놀리식 애플리케이션은 일반적으로 하나의 단위로 크기가 조정되므로 필요할 수 있는 개별 구성 요소만 확장할 수 있는 공간이 거의 없습니다.
Green Software Foundation 맞춤: 에너지 효율성, 하드웨어 효율성
권장 사항:
- 마이크로 서비스 아키텍처 지침을 평가합니다.
- 마이크로 서비스 아키텍처를 사용하면 최대 부하 동안 필요한 구성 요소만 스케일링할 수 있습니다. 유휴 구성 요소가 축소 또는 축소되도록 합니다. 또한 모놀리식 애플리케이션을 배포하는 데 필요한 오버헤드 및 리소스를 줄일 수 있습니다.
- 이 절충을 고려합니다. 필요한 컴퓨팅 리소스를 줄이면 네트워크의 트래픽 양이 증가할 수 있으며 애플리케이션의 복잡성이 크게 증가할 수 있습니다.
- 이 다른 장단점을 고려합니다. 마이크로 서비스로 이동하면 배포 파이프라인에서 여러 유사점이 있는 추가 배포 오버헤드가 발생할 수 있습니다. 모놀리식 및 마이크로 서비스 아키텍처에 필요한 배포 리소스를 신중하게 고려합니다.
- 또한 모놀리식 애플리케이션 컨테이너화에 대해 알아봅니다.
API 효율성 향상
많은 최신 클라우드 애플리케이션은 서비스와 구성 요소 간에 많은 메시지를 비동기적으로 거래하도록 설계되었습니다. 페이로드 데이터를 인코딩하는 데 사용되는 형식을 고려합니다. 애플리케이션에서 통신해야 하는 정보의 양과 수다를 줄일 수 있는 여지가 있나요?
Green Software Foundation 맞춤: 에너지 효율성
권장 사항:
- 많은 수의 요청이 성능 및 응답성에 미치는 영향을 더 잘 이해하려면 번잡한 I/O 안티패턴 에 대해 알아봅니다.
- 안정성을 개선하고 시스템에 대한 불필요한 부하를 줄입니다. API Management 사용하여 고급 요청 제한을 구현합니다.
- 선택적으로 메시지를 인코딩하여 애플리케이션이 요청에서 반환하는 데이터의 양을 최소화합니다. 메시지 인코딩 고려 사항을 참조하세요.
- 필요한 경우가 아니면 백 엔드 시스템에서 동일한 유형의 정보를 다시 처리하지 않도록 응답을 캐시합니다. Azure API Management 캐싱을 참조하세요.
이전 버전 소프트웨어 호환성을 보장하여 레거시 하드웨어에서 작동하는지 확인합니다.
애플리케이션이 정보를 렌더링하는 방법을 고려합니다. 애플리케이션이 최고 품질의 모든 것을 중요하게 처리하여 더 높은 대역폭 및 처리를 수행해야 합니까? 지속 가능성 목표를 더 잘 제공하기 위해 UI의 구성 요소 품질을 줄일 여지가 있나요?
Green Software Foundation 맞춤: 하드웨어 효율성
권장 사항:
- 이전 브라우저 및 운영 체제와 같은 더 많은 최종 사용자 소비자 디바이스를 지원합니다. 이 이전 버전과의 호환성은 솔루션이 작동하기 위해 하드웨어 업그레이드를 요구하는 대신 기존 하드웨어를 다시 사용하여 하드웨어 효율성을 향상시킵니다.
- 이 절충안 고려: 최신 소프트웨어 업데이트의 성능이 크게 향상되면 이전 소프트웨어 버전을 사용하는 것이 더 효율적이지 않을 수 있습니다.
클라우드 네이티브 디자인 패턴 활용
클라우드 네이티브 디자인 패턴에 대해 알아보는 것은 애플리케이션이 Azure에서 호스트되거나 다른 곳에서 실행되는지 여부에 관계없이 애플리케이션을 빌드하는 데 유용합니다. 클라우드 애플리케이션의 성능과 비용을 최적화하면 리소스 사용률도 감소하므로 탄소 배출량도 줄어듭니다.
Green Software Foundation 맞춤: 에너지 효율성, 하드웨어 효율성
권장 사항:
- 애플리케이션을 작성하거나 업데이트 할 때 클라우드 네이티브 디자인 패턴을 활용합니다.
회로 차단기 패턴 사용 고려
애플리케이션이 실패할 가능성이 있는 작업을 수행하지 못하도록 평가하고 방지하는 것이 좋습니다. 반복되는 오류로 인해 적절한 디자인 패턴으로 방지할 수 있는 오버헤드 및 불필요한 처리가 발생할 수 있습니다.
Green Software Foundation 맞춤: 에너지 효율성
권장 사항:
- 회로 차단기는 실패할 수 있는 작업에 대한 프록시 역할을 할 수 있으며 발생한 최근 오류 수를 모니터링하고 해당 정보를 사용하여 진행할지 여부를 결정해야 합니다.
- 회로 차단기 패턴을 연구한 다음, 애플리케이션에 회로 차단기 패턴을 구현하는 방법을 고려합니다.
- Azure Monitor를 사용하여 오류를 모니터링하고 경고를 설정하는 것이 좋습니다.
효율적인 리소스 사용을 위한 코드 최적화
비효율적인 코드를 사용하여 배포된 애플리케이션은 지속 가능성에 내재된 영향을 미칠 수 있습니다.
Green Software Foundation 맞춤: 에너지 효율성, 하드웨어 효율성
권장 사항:
- CPU 주기 및 애플리케이션에 필요한 리소스 수를 줄입니다.
- 최적화되고 효율적인 알고리즘 및 디자인 패턴을 사용합니다.
- 직접 반복하지 마세요(DRY) 원칙을 고려합니다.
비동기 액세스 패턴 최적화
애플리케이션에 대한 수요는 다양할 수 있으며, 불필요한 에너지 유출로 이어질 수 있는 자원의 과잉 또는 활용을 방지하기 위해 사용률을 안정화하는 방법을 고려하는 것이 중요합니다.
Green Software Foundation 맞춤: 에너지 효율성
권장 사항:
- 즉시 처리할 필요가 없는 큐 및 버퍼 요청은 일괄 처리로 처리합니다. 이러한 방식으로 애플리케이션을 디자인하면 안정적인 사용률을 달성하고 소비를 평면화하여 뾰족한 요청을 방지할 수 있습니다.
- 비동기 액세스 패턴 최적화에 대해 읽어봅니다.
서버 쪽 렌더링과 클라이언트 쪽 렌더링 평가
UI를 사용하여 애플리케이션을 빌드할 때 서버 쪽 또는 클라이언트 쪽에서 렌더링할지 여부를 결정합니다.
Green Software Foundation 맞춤: 에너지 효율성, 하드웨어 효율성
권장 사항:
서버 쪽 렌더링의 이점은 다음과 같습니다.
- 서버의 전원이 클라이언트의 로캘보다 오염이 적은 대안에서 오는 경우.
- 서버의 하드웨어에 더 나은 처리 에너지 비율이 있는 경우.
- 중앙 집중식 캐싱을 사용하여 여러 불필요한 렌더링을 줄일 수 있습니다.
- 클라이언트 디바이스에 손실 링크가 있는 경우 브라우저-서버 왕복 횟수를 줄이는 것이 특히 중요할 수 있습니다.
- 클라이언트 디바이스가 오래되고 CPU가 느린 경우. 사용자는 최신 브라우저를 지원하기 위해 디바이스를 업그레이드할 필요가 없습니다.
클라이언트 쪽 렌더링의 이점은 다음과 같습니다.
- 최종 사용자 디바이스가 더 적합한 경우 렌더링 책임을 클라이언트에 푸시합니다.
- 모든 항목을 한 번 이상 렌더링하는 것이 아니라 필요한 항목과 요청된 대로 렌더링하는 것이 더 효율적입니다.
- 정적 스토리지를 사용할 수 있으므로 서버가 필요하지 않습니다.
- 브라우저 캐싱은 클라이언트에서 사용됩니다.
지속 가능성을 위한 UX 설계에 유의하세요.
워크로드의 UX 디자인이 지속 가능성에 미치는 영향을 고려하고 에너지 효율성을 개선하고 불필요한 네트워크 부하, 데이터 처리 및 컴퓨팅 리소스를 줄이기 위한 옵션이 무엇인지 결정합니다.
Green Software Foundation 맞춤: 에너지 효율성
권장 사항:
- 페이지에서 로드 및 렌더링할 구성 요소 수를 줄이는 것이 좋습니다.
- 애플리케이션이 저해상도 이미지 및 비디오를 렌더링할 수 있는지 여부를 결정합니다.
- 브라우저에서 크기 조정을 수행하는 경우 전체 크기 이미지를 썸네일로 렌더링하지 마세요.
- 전체 크기 이미지를 썸네일 또는 크기 조정된 이미지로 사용하면 이미지 크기 조정 및 사전 렌더링으로 인해 더 많은 데이터, 불필요한 네트워크 트래픽 및 추가 클라이언트 쪽 CPU 사용량이 전송됩니다.
- 사용되지 않는 페이지가 없는지 확인하면 UX 디자인을 최소화하는 데 도움이 됩니다.
- 검색 및 찾기 기능을 고려합니다. 사용자가 원하는 항목을 더 쉽게 찾을 수 있도록 하면 저장 및 검색되는 데이터의 양을 줄이는 데 도움이 됩니다.
- 더 적은 리소스를 사용하고 지속 가능성에 미치는 영향이 낮은 더 가벼운 UI를 제공하고 사용자에게 정보에 입각한 선택을 제공하는 것이 좋습니다.
- 어두운 배경의 어두운 모드에서 앱과 웹 사이트를 제공하여 에너지를 절약하세요.
- 클라이언트가 추가 글꼴을 다운로드하도록 강제하지 않도록 가능하면 시스템 글꼴을 사용하도록 선택하면 네트워크 부하가 더 많이 발생합니다.
레거시 코드 업데이트
최신 클라우드 인프라 또는 최신 업데이트에서 실행되지 않는 경우 레거시 코드를 업그레이드하거나 더 이상 사용하지 않는 것이 좋습니다.
Green Software Foundation 맞춤: 하드웨어 효율성
권장 사항:
- 현대화에 적합한 비효율적인 레거시 코드를 식별합니다.
- 서버리스 또는 최적화된 PaaS 옵션으로 이동하는 옵션이 있는지 검토합니다.
- 이 절충을 고려합니다. 더 이상 사용되지 않을 수 있는 이전 코드를 업데이트하면 귀중한 시간이 소요될 수 있습니다.
다음 단계
애플리케이션 플랫폼에 대한 디자인 고려 사항을 검토합니다.