Google Cloud 아키텍처 프레임워크의 성능 최적화 요소 원칙은 모듈식 설계를 촉진하는 데 도움이 되는 권장사항을 제공합니다. 모듈식 구성요소와 명확한 인터페이스를 사용하면 유연한 확장, 독립적인 업데이트, 향후 구성요소 분리를 지원할 수 있습니다.
원칙 개요
확장 가능한 시스템을 설계하려면 애플리케이션 구성요소와 시스템 구성요소 간의 종속 항목을 이해하세요.
모듈식 설계를 사용하면 모놀리식 아키텍처 또는 마이크로서비스 아키텍처 중 어느 것이 처음 배포되었는지와 관계없이 유연성과 탄력성을 확보할 수 있습니다. 시스템을 명확한 인터페이스가 있는 잘 정의된 독립형 모듈로 분해하면 개별 구성요소를 확장하여 특정 요구사항을 충족할 수 있습니다.
타겟팅된 확장은 다음과 같은 방식으로 리소스 사용률을 최적화하고 비용을 절감하는 데 도움이 됩니다.
- 각 구성요소에 필요한 리소스만 프로비저닝하고 리소스 요구량이 적은 구성요소에는 더 적은 리소스를 할당합니다.
- 트래픽이 많은 기간에 리소스를 추가하여 사용자 환경을 유지합니다.
- 성능 저하 없이 사용률이 낮은 리소스를 삭제합니다.
또한 모듈식 구조는 유지보수성을 향상시킵니다. 소형의 독립형 단위는 이해, 디버그, 업데이트가 더 쉽기 때문에 개발 주기를 단축하고 위험을 줄일 수 있습니다.
모듈식 설계는 상당한 이점을 제공하지만 잠재적인 성능 절충점을 평가해야 합니다. 모듈 간의 통신이 증가하면 지연 시간과 오버헤드가 발생할 수 있습니다. 모듈성과 성능 간의 균형을 유지합니다. 고도로 모듈식 설계는 보편적으로 적합하지 않을 수 있습니다. 성능이 중요한 경우에는 더 긴밀하게 결합된 접근 방식이 적합할 수 있습니다. 시스템 설계는 모듈식 설계를 지속적으로 검토하고 수정하는 반복 프로세스입니다.
권장사항
모듈식 설계를 장려하려면 다음 섹션의 권장사항을 고려하세요.
느슨한 결합을 위한 설계
느슨하게 결합된 아키텍처를 설계합니다. 종속 항목이 최소인 독립형 구성요소를 사용하면 확장 가능하고 복원력이 우수한 애플리케이션을 빌드하는 데 도움이 됩니다. 서비스의 경계를 계획할 때는 가용성과 확장성 요구사항을 고려해야 합니다. 예를 들어 한 구성요소에 다른 구성요소와 다른 요구사항이 있는 경우 구성요소를 독립형 서비스로 설계할 수 있습니다. 중요하지 않은 하위 프로세스 또는 기본 서비스의 응답 시간에 영향을 미치지 않는 서비스에 대해 조용히 실패하는 계획을 구현합니다.
동시 실행 및 동시 로드 설계
사용자가 시스템과 상호작용하는 동안 여러 사용자 요청을 처리하거나 백그라운드 작업을 실행하는 등 여러 작업을 동시에 지원하도록 애플리케이션을 설계합니다. 대규모 태스크를 여러 서비스 인스턴스에서 동시에 처리할 수 있는 작은 청크로 분할합니다. 태스크 동시 실행을 사용하면 자동 확장과 같은 기능을 사용하여 다음과 같은 제품에서 리소스 할당을 늘릴 수 있습니다.
유연한 리소스 할당을 위한 모듈식 설계의 균형 맞추기
가능하면 각 구성요소가 특정 작업에 필요한 리소스(예: 메모리, 저장용량, 처리 능력)만 사용하도록 합니다. 리소스 할당이 과도하면 불필요한 비용이 발생할 수 있고, 리소스 할당이 부족하면 성능이 저하될 수 있습니다.
잘 정의된 인터페이스 사용
모듈식 구성요소가 명확하고 표준화된 인터페이스 (예: API 및 메시지 큐)를 통해 효과적으로 통신하여 변환 레이어 또는 외부 트래픽의 오버헤드를 줄입니다.
스테이트리스(Stateless) 모델 사용
스테이트리스(Stateless) 모델을 사용하면 이전 요청과 관계없이 서비스에서 각 요청 또는 상호작용을 처리할 수 있습니다. 이 모델은 진행 중인 요청 또는 프로세스에 필요한 데이터가 손실되지 않고 서비스를 확장, 축소 또는 다시 시작할 수 있으므로 확장성과 복구 성능에 도움을 줍니다.
보완 기술 선택
모듈식 디자인을 보완하는 기술을 선택합니다. 프로그래밍 언어, 프레임워크, 데이터베이스의 모듈식 지원을 평가합니다.
자세한 내용은 다음 리소스를 참조하세요.