이 글에서는 “클라우드 테스트”를 수행하는 방법에 대해 알아보겠습니다. 이를 이해하기 위해서는 먼저 클라우드 컴퓨팅 개념을 알아야 합니다. 이 글에서는 클라우드 컴퓨팅, 클라우드 테스트 및 클라우드 테스트의 주요 과제에 대해 설명합니다.
클라우드 컴퓨팅 소개
- 몇 년 전 업계에서는 “가상화”라는 새로운 유행어와 기술이 등장했습니다. 확장성을 높이고 자본 비용을 절감하며 IT 인프라를 쉽게 관리할 수 있도록 여러 운영 체제에 걸쳐 컴퓨팅 리소스를 공유하는 이념인 가상화가 등장하면서 여러 기업의 중추가 되었습니다.
- 지난 몇 년 동안 IT는 클라우드 컴퓨팅의 형태로 가상화의 진화를 목격해 왔습니다. 클라우드를 처음 접하는 사람이라면 클라우드 컴퓨팅을 “서비스로서의” 모든 것을 보는 모델로 그려야 합니다.
- 클라우드 컴퓨팅을 서비스형 IT(ITaaS)를 제공하는 전체 솔루션으로 정의하는 것은 당연합니다. 가상화와 마찬가지로 인터넷을 통해 온디맨드 방식으로 할당 및 가용성을 제공하는 리소스 공유가 그 모토입니다.
클라우드 컴퓨팅을 설명하는 실제 사례:
- 우리는 식당에서 식사를 하는 간단한 예를 들어 클라우드 컴퓨팅 이론을 쉽게 이해할 수 있습니다. 예를 들어, 집에서 식사를 하는 것과 식당에서 식사를 하는 것을 생각해 보십시오. 목적은 순전히 식사의 소비이지만, 이 두 경우에 사용되는 접근 방식이나 모델은 매우 다양합니다.
- 집에서는 식사에 필요한 모든 재료가 있는지 확인해야 하며, 특정 요리를 요리하기 위해 필요한 준비가 완료되었는지 확인해야 합니다. 당신은 음식을 요리하고 요리가 완성된 후 주변을 깔끔하게 유지하는 책임은 전적으로 당신에게 있습니다.
- 이제는 반대로 식당에서 식사를 하는 것을 서비스인 케이터링이라고 표현할 수 있습니다. 고객으로서 당신은 식당에 가서 당신이 선택한 음식을 주문하고 서비스 비용을 지불할 뿐입니다.
- 재료의 소유, 요리 준비, 요리, 요리 발표, 요리를 당신에게 대접하는 것, 식사가 끝나면 식탁을 치우는 것, 과도하게 남은 음식을 싸는 것 등은 모두 레스토랑 경영진의 몫입니다.
이 예는 클라우드 컴퓨팅의 이념과 원칙인 “온디맨드 가용성”, “서비스형” 및 “사용료 지불”과 유사한 것으로 볼 수 있습니다.
Cloud Delivery Models
클라우드에는 주로 “서비스형” 기능을 제공하는 세 가지 유형의 제공 모델 또는 구성 요소가 있습니다:
- IaaS(Infrastructure as a Service): 클라우드의 기본 블록을 구성하는 가장 기본적인 계층입니다. 주로 스토리지, 네트워크 장치, 컴퓨팅 서버 등과 같은 물리적 리소스로 구성됩니다. 이러한 모든 컴퓨팅 리소스는 주문형으로 사용할 수 있으며, 사용자는 사용에 따라 비용을 지불합니다.
- PaaS(Platform as a Service): 클라우드의 중앙 계층은 플랫폼입니다. 여기서 기본 인프라에 대한 제어는 없지만 배포된 애플리케이션에 액세스할 수 있습니다. 따라서 이 모델은 개발 또는 테스트 환경일 수 있는 전체 런타임 환경을 온 디맨드로 제공합니다. 따라서 이 모델에서는 대부분 OS, 필요한 미들웨어 등과 같은 완벽한 환경을 포함하는 VM을 필요할 때 사용할 수 있습니다.
- SaaS(Software as a Service): 여기서 가장 위에 있는 계층은 일반적으로 모든 사용자가 볼 수 있는 애플리케이션 계층입니다. 여기서 애플리케이션/제품은 인터넷을 통해 주문형으로 사용자가 사용할 수 있습니다. 따라서 특정 사용자에 대한 라이센스를 취득할 필요가 없는 대신 라이센스가 항상 사용되도록 하는 가장 비용 효율적인 방법임이 입증되었습니다. 이것의 예로는 Gmail, Google Docs, Photoshop 등이 있습니다.
클라우드 유형
퍼블릭, 프라이빗 및 하이브리드 클라우드와 같은 3가지 유형의 클라우드 형성이 있습니다:
- 퍼블릭 클라우드는 모든 사람이 서비스를 이용할 수 있고 요청에 따라 리소스가 동적으로 할당되고 프로비저닝되는 클라우드입니다.
- 개인 클라우드는 일반적으로 특정 조직의 방화벽 규칙 내에서 관리되며 회사 내의 사용자만 사용할 수 있습니다.
- 하이브리드 클라우드는 프라이빗 클라우드와 퍼블릭 클라우드가 혼재되어 있습니다. 조직은 모든 사람에게 노출시킬 서비스와 조직 내 사용자에게만 노출시킬 서비스를 결정할 수 있습니다.
클라우드 테스트 – 필요성
- 클라우드 테스팅은 하드웨어, 소프트웨어 등의 자원을 온디맨드 방식으로 테스트하는 것을 말합니다. 여기서 테스트하는 것도 “서비스”로 볼 수 있습니다. 클라우드 오퍼링의 경우 서비스(제품)가 기능적 요구사항뿐만 아니라 비기능적 요구사항을 충족하는지 확인하는 것이 필수적입니다. 클라우드에서 다양한 애플리케이션을 사용함에 따라 이제 클라우드 테스팅 전략을 개발하는 것이 필수적이 되고 있습니다.
클라우드 테스트의 이점
- 클라우드 테스트의 필요성은 클라우드 테스트를 통해 얻을 수 있는 이점이 너무 많아서 쉽게 알 수 있습니다. 아래에서는 클라우드가 지금 당장 필요한 이유를 설명하는 가장 분명한 이점에 대해 논의하려고 시도했습니다:
- 테스트 환경의 동적 가용성: 일반적인 테스트 접근 방식은 테스트에 필요한 하드웨어/소프트웨어 인프라에 투자하는 것입니다. 테스트 팀에 제공되는 환경이 급변하는 요구 사항 때문에 고객 환경과 거의 일치하지 않는다는 것에 대부분의 사람들이 동의할 것입니다. 이 문제에 대한 유일한 해결책은 클라우드입니다. 이를 통해 사용자는 고객 환경을 쉽게 복제하고 주기 초기에 결함을 발견할 수 있습니다.
- 낮은 비용: 이전의 관점과 다른 점은 기업이 인프라에 투자할 때 일반적인 원인은 많은 서버가 항상 사용되지 않기 때문입니다. 그 결과 라이센스 갱신에 추가 비용이 발생해야 할 수도 있습니다. 클라우드로 전환하면 이 시나리오에서도 도움이 되며, 사용자가 원하는 때에 어플라이언스를 커미션할 수 있으므로 조직의 막대한 비용을 절약할 수 있습니다.
- 쉽게 사용자 정의 가능: 클라우드를 사용하면 최종 사용자 중심 환경을 사용자에 맞게 사용자 정의하여 비용과 시간을 절약할 수 있습니다. 테스트 팀은 로드 및 성능 테스트 시나리오를 다양한 OS, 브라우저, 구성 등의 다양한 순열 및 조합으로 쉽게 수행할 수 있습니다.
- 확장성: 이것은 컴퓨팅 리소스를 필요한 곳에서 늘리거나 줄일 수 있는 클라우드의 가장 매력적인 기능 중 하나입니다. 이는 비즈니스 요구 사항이 계속 자주 변경되는 상황에서 널리 사용됩니다.
클라우드 테스트 Deep Dive
- 클라우드에 대한 테스트는 기존 방식과 새로운 방식을 모두 사용하여 테스트를 수행합니다. 테스트와 클라우드는 각자의 경로에서 동일하게 큰 도메인입니다. 아래 섹션에서 두 가지를 함께 보는 방법에 대해 알아보겠습니다.
1) 클라우드 테스트 양식
- 클라우드 테스트는 목표로 하는 작업에 따라 크게 네 가지 범주로 나뉠 수 있습니다:
- 전체 클라우드 테스트: 클라우드는 기능을 기반으로 전체 개체로 보고 이를 기반으로 테스트를 수행합니다.
- 클라우드 내 테스트: 클라우드 내부에서 각 내부 기능을 확인하여 수행하는 테스트입니다
- 클라우드 전반에 걸친 테스트: 사양을 바탕으로 퍼블릭, 프라이빗 및 하이브리드 클라우드와 같은 다양한 유형의 클라우드에서 테스트를 수행합니다.
- 클라우드에서의 SaaS 테스트: 요구사항에 따라 기능 및 비기능 테스트를 수행합니다.
2) 클라우드 테스트 환경
- 클라우드 테스트 환경에는 다음 세 가지 유형이 있습니다:
- 구현된 애플리케이션의 품질을 검증해야 하는 프라이빗 또는 퍼블릭 환경입니다.
- 구현된 애플리케이션의 품질을 검증해야 하는 하이브리드 환경입니다.
- 클라우드에 구축된 애플리케이션의 품질을 검증해야 하는 클라우드 기반 테스트 환경입니다.
3) 클라우드에서 수행되는 테스트 유형
클라우드에서의 테스트는 기능적 요구사항이 충족되는지 확인해야 할 뿐만 아니라 기능적이지 않은 테스트에도 매우 중점을 두어야 합니다. 수행되는 다양한 테스트 종류에 대해 살펴보겠습니다.
기능 테스트:
서비스가 사용자가 지불하는 서비스를 제공하는지 확인하려면 기능 테스트를 수행해야 합니다. 기능 테스트를 통해 비즈니스 요구 사항이 충족되는지 확인합니다.
기능 테스트 중 일부는 다음과 같습니다:
- 시스템 검증 테스트: 이를 통해 다양한 모듈이 서로 올바르게 작동하는지 여부를 확인하여 각 모듈의 동작이 예상대로 이루어지는지 확인할 수 있습니다.
- 수락 테스트: 여기서 클라우드 기반 솔루션이 사용자의 기대에 부합하는지 확인하기 위해 사용자에게 제공됩니다.
- 상호 운용성 테스트: 모든 애플리케이션은 서로 다른 플랫폼에서 문제 없이 작동할 수 있는 유연성이 있어야 하며, 클라우드 인프라에서 다른 플랫폼으로 이동할 때에도 원활하게 작동해야 합니다.
비기능 테스트:
비기능 테스트는 주로 웹 애플리케이션 기반 테스트를 통해 원하는 요구 사항을 충족하는지 확인합니다.
다음은 다음과 같은 몇 가지 형태의 비기능 테스트입니다:
#1) 가용성 테스트: 클라우드 관리자/벤더는 클라우드를 24시간 사용할 수 있도록 해야 합니다. 업무상 중요한 작업이 많이 진행될 수 있으므로 관리자는 소비자에게 악영향을 미치지 않도록 해야 합니다
#2) Multi-tenancy Testing: 여기서 여러 사용자가 클라우드 오퍼링을 사용합니다. 여러 사용자가 단일 인스턴스를 사용할 때 데이터에 대한 충분한 보안 및 액세스 제어가 있는지 확인하기 위해 테스트를 수행해야 합니다.
#3) 성능 테스트: 응답 시간에 대한 검증은 많은 요청이 있더라도 모든 것이 정상인지 확인해야 하며, 네트워크 지연 시간도 성능을 평가하는 중요한 요소 중 하나입니다.
또한 리소스를 폐기함으로써 부하 감소 시 워크로드 밸런싱을 수행해야 합니다. 따라서 클라우드 오퍼링에서 부하 및 스트레스 테스트를 수행하여 애플리케이션이 최적의 성능을 발휘하고 부하 및 스트레스가 증가/감소하는지 확인합니다.
#4) 보안 테스트: 클라우드는 언제든지 모든 것을 이용할 수 있기 때문에 모든 사용자 민감 정보에 무단 액세스가 없고 사용자의 개인 정보가 그대로 유지되도록 하는 것이 필수적입니다. 클라우드에서 애플리케이션을 유지 관리할 때는 사용자 데이터 무결성도 확인해야 합니다.
#5) 재해 복구 테스트: 가용성 테스트에서 이미 설명했듯이 클라우드를 상시 사용할 수 있어야 하며, 네트워크 중단, 극심한 부하로 인한 장애, 시스템 장애 등과 같은 종류의 장애가 발생할 경우 장애가 얼마나 빨리 표시되는지, 이 기간 동안 데이터 손실이 발생하는지를 측정합니다.
#6) 확장성 테스트: 필요에 따라 스케일업 또는 스케일다운 기능을 제공하는 오퍼링이 있는지 테스트합니다.
클라우드 테스트 도구
이 섹션에서는 클라우드 환경에서 수행되는 여러 종류의 테스트에 사용되는 일부 도구에 대해 언급합니다. 도구에 대한 자세한 내용은 이 문서의 범위를 벗어납니다.
클라우드에서 성능 테스트를 위한 툴:
대부분의 도구는 기본적으로 성능, 부하, 스트레스 테스트에 사용됩니다. 아래의 일부 도구는 기능 테스트에도 사용할 수 있습니다:
- SOASTA 클라우드 테스트
- 로드스톰
- 클라우드 테스트 시작
- 앱 퍼펙트.
- 제이미터
- 구름루
- 클라우드 테스트 시작
- 앱 퍼펙트
클라우드 보안 테스트 도구:
일반적으로 사용되는 몇 가지 보안 관련 도구도 있습니다:
- Nessus
- Wireshark
- Nmap
클라우드 테스트 과제
클라우드가 흥미롭게 들리지만, 여기서는 모든 것이 완벽하지 않습니다. 인프라뿐만 아니라 클라우드에 의존하고 사용하는 데도 몇 가지 어려움이 있습니다. 클라우드를 사용하는 동안의 주요 문제에 대해 살펴보겠습니다.
#1) 온디맨드 방식으로 모든 사용자가 사용할 수 있는 모든 것과 함께 보안은 현재 업계에서 보안 표준을 제정하기 위해 많은 논의와 연구가 진행되고 있기 때문에 비즈니스의 주요 문제입니다. 사용자 개인 정보 보호, 클라우드의 보안 표준, 클라우드에서 실행 중인 애플리케이션의 보안, 보안 테스트 기술 등은 클라우드 인프라에서 해결해야 할 주요 문제 중 일부입니다.
#2) 또 다른 큰 과제는 클라우드, 특히 프라이빗 클라우드에서 애플리케이션의 성능입니다. 여러 사용자에게 공유되므로 지연이 발생할 수도 있습니다. 또한 일부 유지 보수 또는 운영 중단 관련 작업의 경우 대역폭이 부족한 것으로 보일 수 있습니다.
#3) 때로는 테스트 목적으로 클라우드 공급자가 지원하지 않는 서버, 스토리지 또는 네트워킹과 관련하여 특정 구성이 필요하기도 합니다. 이로 인해 고객 환경을 에뮬레이트하기 어려울 수도 있습니다.
#4) 일반적으로 직면한 또 다른 과제는 테스터가 네트워크, 데이터베이스, 서버 등을 테스트하는 통합 테스트와 관련된 것입니다. 이러한 상황에서 테스터는 기본 환경에 대한 제어권을 갖지 못할 것입니다. 둘째, 테스터는 충돌, 네트워크 고장 또는 서버 장애와 같은 위험을 예측해야 하기 때문에 이러한 구성 요소 간의 상호 작용이 있어야 할 때 과제가 배가됩니다.
결론
오늘날 클라우드 컴퓨팅은 업계의 “빅뱅” 중 하나가 되었습니다. 대부분의 조직은 유연성, 확장성 및 비용 절감으로 인해 클라우드를 채택하는 쪽으로 기울고 있습니다.
테스트에 클라우드를 사용하면 조직이 필요한 툴, 소프트웨어 라이센스 및 인프라를 직접 설정하지 않고도 매우 저렴한 비용으로 구입할 수 있으며 나중에 최대 활용률에 대해 걱정할 수 있습니다.
분명 클라우드는 앞으로 오랫동안 지속될 것이고 클라우드 테스트도 미래가 밝습니다. 🙂