클라우드 디자인 패턴

클라우드 디자인 패턴은 시스템 아키텍처를 설계할 때 발생할 수 있는 전형적인 문제에 대해 설계 방법, 해결 방안을 알기 쉽게 분류하여 노하우로 이용할 수 있도록 정리한 것이다.
이는 클라우드 환경에서 안정적, 확장적, 안전한 애플리케이션을 빌드하는 데 유용하다.

고려 사항

  • 가용성(Availability)
    클라우드에서 가용성이란 클라우드 컴퓨팅 서비스가 장애없이 정상적으로 운영되는 능력을 말한다. 시스템은 시스템 오류, 인프라 문제, 외부 공격, 시스템 부하 등에 의해 영향을 받으므로 가용성에 주의해야 한다. CSP 사는 일반적으로 가용성 SLA(Service Level Agreement)를 제공하고 있으므로 가용성을 최대한 고려하여 설계하는 것이 좋다.
     
  • 데이터 관리(Data Management)
    일반적으로 데이터는 성능, 확장성, 가용성 등의 이유로 여러 위치의 여러 서버에 호스팅되며, 이로 인해 다양한 문제가 발생할 수 있다. 이를 방지하기 위해 일관성을 유지해야 하며, 여러 위치에 데이터를 동기화 해야 한다.
     
  • 디자인 & 구현(Design & Implement)
    디자인&구현 단계에서 결정된 사항들은 클라우드 환경의 애플리케이션과 품질, 비용 등에 많은 영향을 미친다. 좋은 디자인이 되려면 구성 요소 디자인, 배포의 일관성, 관리 및 배포 방법 등을 간단하게 하며 용이성, 재사용 등을 고려해야 한다.
     
  • 메시징(Messaging)
    클라우드 애플리케이션은 기본적으로 분산 환경에서 구축되기 때문에 서비스를 연결하는 메시지 인프라가 필요하며, 가용성을 최대화할 수 있도록 커플링을 낮추는 것이 이상적이다. 비동기 메시지는 여러 이점이 있지만 메시지 순서, 관리, 멱등성 등의 문제도 있다.
     
  • 관리 & 모니터링(Management & Monitoring)
    클라우드 환경의 애플리케이션은 관리자가 시스템 관리 및 모니터링에 사용할 수 있도록 런타임 정보를 수집해야 하며, 비즈니스 요구 상황 변화에 따른 잦은 배포를 지원할 수 있도록 해야 한다.
     
  • 성능 및 확장성(Performance & Scalability)
    클라우드 애플리케이션은 일반적으로 수시로 변하는 워크로드 및 트래픽을 마주하게 된다. 수요가 증가하면 애플리케이션이 확장하고, 수요가 감소하면 감축할 수 있어야 한다. 확장성은 컴퓨팅 인스턴스 뿐만 아니라 데이터 스토리지, 메시지 인프라 등의 다른 요소에도 영향을 준다.
     
  • 복원(Resiliency)
    클라우드 호스팅의 특성 상, 일시적 오류와 영구적 오류가 발생할 가능성이 있다. 복원력을 유지하려면 오류를 감지하여 신속하고 효율적으로 복구하는 기능이 필요하다.
     
  • 보안(Security)
    클라우드 애플리케이션은 온프레미스 환경 과의 통신, 퍼블릭 공개, 신뢰할 수 없는 사용자의 접근 등이 발생할 수 있다. 이로 인해 외부의 공격으로부터 보호하고, 승인된 사용자만 액세스 가능하도록 설계 및 배포해야 한다.

참조