2023년 클라우드 확장성을 보장하는 방법

게시 됨: 2023-01-11

콘텐츠

  1. 확장성이란 무엇입니까?
    • 확장성에 특별한 주의를 기울여야 하는 이유는 무엇입니까?
  2. 스케일링 유형
    • 수직 확장성 - 확장
    • 수평 확장 - 확장
    • 대각선 스케일링
  3. 최대 확장성을 보장하는 방법
    • 부하 분산 수행
    • 자동 웹 서비스 확장성으로 전환
    • 마이크로서비스 컨테이너, 클러스터화
    • 캐싱 구현
    • CDN 서비스 이용
  4. 스케일링 문제를 어떻게 처리합니까?
  5. 결론
콘텐츠

컴퓨팅 시스템의 공통 부하량이 점점 증가함에 따라 기본 아키텍처 측면에서 적응하고 복잡해집니다. 성능 최적화를 위한 새로운 소프트웨어 도구 및 통합이 추가되고 서버 용량이 확장됩니다.

이러한 모든 시스템 최적화 프로세스는 DevOps 전문가의 주요 전문 분야 중 하나인 확장 이라는 단일 개념으로 정의됩니다. 확장성이란 무엇이며, 더 중요한 것은 대부분의 운영 용량이 클라우드에 집중되어 있는 특정 비즈니스의 경우 이를 보장하는 방법은 무엇입니까? 주제에 대해 알아보겠습니다.

클라우드 확장성 이미지 출처: Static.bluepiit

확장성이란 무엇입니까?

확장성의 궁극적인 정의는 무엇입니까? 기본적으로 가장 합리적인 방법으로 시스템 성능을 향상시키는 능력입니다. 실제로 이것은 일반적으로 하드웨어 및/또는 소프트웨어 컴퓨팅 리소스를 추가하여 달성됩니다. 그러나 기존 코드를 재작성하는 것은 대부분의 경우 상당히 과감한 솔루션이므로 10개 중 9개 기업은 서버 수를 늘리거나 기존 서버 시스템의 기능을 강화하는 데 그칩니다.

확장의 필요성은 전체 시스템 성능이 느리고 불충분할 때만 나타나는 것이 아닙니다. 기존 및 운영 아키텍처는 잘 작동할 수 있지만 지연은 사용자 트래픽의 급속한 증가로 인해 여전히 프로세스를 방해할 수 있습니다.

네트워크 프로토콜과 웹 서버 리소스가 얼마나 효율적으로 수행되는지 확인하려면 수많은 요청으로 서버에 대한 인위적인 사용자 유입을 에뮬레이트하는 사용 가능한 로드 테스터 유틸리티(예: 포위 공격)를 사용할 수 있습니다. 두 가지 주요 매개변수를 추적하면 됩니다. n - 총 요청 수를 정의하고 c - 동시 요청 수를 나타냅니다.

결과적으로 서버 시스템이 현재 처리할 수 있는 요청 수를 보여주는 RPS(초당 요청 수) 판독값을 얻습니다. 이것은 사용자가 한 번에 모두 서버와 상호 작용하려고 하면 시스템이 다운될 가능성이 있는 최대 사용자 수를 반영한 ​​것입니다. 이 테스트 루틴은 궁극적으로 무엇을 기대하고 확장성 아키텍처를 구축하는 것이 얼마나 중요한지 보여줍니다.

반면에, 잠시 생각해 보십시오. 아마도 특정 경우에 일부 서버 구성을 사용자 정의하고 현금화 절차를 최적화하는 것이 더 저렴할 것입니다. 이렇게 하면 더 나은 시간이 될 때까지 확장을 안전하게 연기할 수 있습니다.

확장성에 특별한 주의를 기울여야 하는 이유는 무엇입니까?

비즈니스가 개발되기 시작하면 가능한 한 유연하고 자원이 풍부해야 합니다. 스타트업이 인기를 얻고 경쟁력을 갖기 위해서는 변화하는 트렌드와 시장 상황에 빠르게 적응할 수 있어야 합니다. 앱이 확장 가능하면 성장을 가속화하고 사용자 경험을 개선하며 더 많은 사용자에게 도달할 수 있습니다. 기본적으로 확장성은 애플리케이션을 더 잘 관리하고 새로운 요구 사항에 적응할 수 있도록 합니다. 비즈니스 성장 전략을 수립할 때 확장 가능한 애플리케이션을 구축하는 것이 첫 번째 우선 순위 중 하나여야 합니다.

스케일링 유형

스케일링 절차의 주요하고 가장 일반적인 유형은 다음과 같습니다.

수직 확장성 - 확장

수직 확장 이미지 출처: 디존

수직 확장은 CPU, 메모리, 드라이브 및 네트워크 용량과 같은 내부 서버 리소스의 성능을 향상하여 전반적인 비즈니스 능력을 성장시키는 것입니다. 기본 형태의 서버는 변경되지 않습니다.

수평 확장 - 확장

수평적 확장 이미지 출처: 디존

현장에서는 스케일 업 대 스케일 아웃이라는 진정한 입장이 벌어지고 있습니다. 뭐가 더 좋아?

특히, 디지털 부하와 트래픽이 점점 증가함에 따라 머지않아 수직적 확장은 서버의 기술 사양의 형태로 한계에 직면하게 됩니다. 바로 여기서 수평 확장이 시작됩니다. 이 용어의 기본적인 의미는 기존 노드 위에 동일한 노드를 추가하여 컴퓨팅 성능을 높이는 것을 정의합니다. 수평적 확장은 조정된 서버 인프라(특정한 경우 - 데이터 센터)가 있고 서버 간의 상호 작용 체계가 확립되어 있을 때 가장 자주 해결됩니다.

대각선 스케일링

이는 Adaptive Capacity Labs의 저자이자 공동 설립자인 John Allspaw가 고안한 비교적 새로운 용어입니다. 따라서 대각선 확장은 두 세계의 장점을 결합하고 기존 서버 인프라에 이미 구현된 수평 확장 노드의 수직 확장을 정의합니다.

최대 확장성을 보장하는 방법

이제 최소한의 비용으로 클라우드 컴퓨팅 확장성 절차를 가장 적절하게 수행하는 데 도움이 되는 몇 가지 실용적인 팁입니다.

부하 분산 수행

로드 밸런싱은 하나의 소켓 또는 클러스터에 집중된 여러 하드웨어-소프트웨어 리소스(드라이브, CPU 또는 별도의 서버) 간에 컴퓨팅 네트워크 프로세스를 분산시키는 일련의 노력을 의미합니다. 여기서 주요 목표는 컴퓨팅 용량의 지출을 최적화하고, 네트워크 출력을 높이고, 네트워크 요청을 처리하는 동안 시간 비용을 줄이고, 특정 서버가 멋진 순간에 DDoS에 응답할 가능성을 낮추는 것입니다.

또한 단일 노드를 완전히 활용하는 대신 여러 노드 간에 부하를 분산하여 회사에서 제공하는 서비스의 접근성을 높입니다. 특히 일부 과도한 서버 수로 인해 일부 작동 장치가 고장나더라도 자동 교체가 가능합니다.

밸런싱 절차는 네트워크, 전송 및 응용 프로그램과 같은 OSI 모델 계층에 각각 해당하는 전체 알고리즘 및 방법 세트의 도움으로 구현됩니다. 실제 구현에서는 Nginx 웹 서버와 유사한 특수 소프트웨어와 함께 여러 물리적 서버를 사용해야 합니다.

자동 웹 서비스 확장성으로 전환

Auto-scaling은 클라우드 서비스 맥락에서 동적 확장에 대한 특별한 접근 방식입니다(즉, 네트워크 로드 볼륨에 따라 컴퓨팅 성능을 사용자 지정하는 것을 의미하는 확장). 특히 Auto Scaling 절차가 포함된 서비스(Amazon Web Service, Google Cloud Platform, Microsoft Azure가 가장 유명함)의 사용자는 필요에 따라 추가 가상 머신을 제공합니다(클러스터 또는 컨테이너에서 자동으로 제외 가능). 요청의 트래픽과 강도가 안정됨에 따라).

이러한 접근 방식으로 인해 기업은 향상된 접근성, 장애 작동 기능 및 궁극적인 예산 절감 기회를 얻을 수 있습니다. 이러한 서비스를 사용하면 현재 필요한 만큼의 서버 성능을 사용할 수 있습니다. 이는 값비싼 하드웨어를 구입하고 추가로 유지 관리해야 하는 경우 물리적 확장과 달리 상당히 유리한 옵션입니다.

자동 클라우드 확장성은 항상 로드 밸런싱 솔루션과 함께 진행됩니다.

마이크로서비스 컨테이너, 클러스터화

서비스를 컨테이너로 래핑한 다음 이러한 컨테이너를 클러스터로 수집하는 리소스 효율적인 성능 향상 절차를 사용할 수 있습니다. 클러스터화 다음에는 필요한 경우 부족한 리소스(인스턴스)를 추가하거나 초과를 방지하기 위해 리소스 할당을 최소화하는 스크립트를 정의합니다.

캐싱 구현

수평적 확장 중에는 한 번에 여러 노드에 대해 간단한 메모리 캐싱을 구현할 수 없으므로 최적화가 필요합니다. 특히, Memcached 또는 Redis와 같은 스토리지는 애플리케이션 반복 간에 캐시 데이터를 결합하여 배포하는 데 사용할 수 있습니다. 이러한 도구는 다양한 알고리즘에 따라 작동하므로 캐싱 데이터의 양이 줄어듭니다. 캐시 저장소는 또한 복제 및 데이터 저장소 오류로부터 잘 보호됩니다.

캐시 저장소를 사용하면 서로 다른 앱 반복에서 캐시되지 않은 데이터를 동시에 요청하는 상황을 방지하는 것이 중요합니다. 이를 위해서는 앱의 성능 흐름 외부에서 캐싱 데이터를 업데이트하고 앱 내에서 직접 사용해야 합니다.

따라서 캐싱은 적절한 접근 방식을 통해 시스템이 집중적인 로드를 처리하고 최적의 출력을 달성할 수 있는 클라우드 확장 기능을 얻는 데 도움이 될 수 있습니다.

CDN 서비스 이용

CDN은 콘텐츠를 서비스 사용자에게 전송하는 물리적으로 원격 컴퓨터의 네트워크입니다. 즉, 캐시를 분산 저장하고 활용하는 것입니다. 일반적으로 CDN으로 전환하는 것은 웹 서비스, 웹 사이트 또는 본격적인 애플리케이션이 여러 국가의 영토 전체에 분산된 사용자 청중을 대상으로 할 때 가장 적절합니다. CDN 가격은 서비스를 통과하는 트래픽 양에 직접적으로 의존합니다.

또는 TA가 광범위한 지역 분포에도 불구하고 특정 사용자가 집중된 지역화를 가지고 있는 경우 CDN은 수익성 없는 솔루션이 될 수 있습니다. 즉, TA의 약 60%가 미국에 있고 30%는 런던에 있으며 나머지 10%는 전 세계에 흩어져 있다고 가정합니다. 이 경우 CDN을 사용하는 것은 후자의 10%에게만 합리적인 결정이 될 것입니다(반면 다른 위치에는 새 서버를 설치해야 함).

스케일링 문제를 어떻게 처리합니까?

현재 사내 전문가가 수행하는 가장 밝은 확장 사례에는 AWS, Microsoft Azure, Google Cloud 및 Digital Ocean과 같은 퍼블릭 클라우드 스토리지를 위한 확장성 높은 아키텍처 구축이 포함됩니다. 클라우드 인프라의 생성, 관리 및 구성을 위한 차세대 시스템인 Terraform의 도움으로 자동화된 환경 배포 스크립트를 사용합니다. 우리는 자동 확장 소프트웨어인 Kubernetes와 컨테이너화 지원 기술인 Docker를 기반으로 서버 클러스터를 구축합니다.

결론

클라우드 컴퓨팅 환경의 확장성 이미지 출처: CDN.Lynda

위의 방법과 다른 방법을 통해 클라우드 컴퓨팅 환경의 확장성을 활용하면 더 빠르고 쉽게 성장하고 항상 민첩하게 유지할 수 있습니다. 스케일링에 대해 완전히 양심적인 접근 방식만 채택하려고 노력한다면 반드시 전문가에게 문의해야 합니다. 귀하의 특정 비즈니스에 가장 최적의 서버 인프라를 제공하고 모든 강도의 부하를 처리할 수 있도록 조정될 DevOps 전문가를 찾아드리겠습니다.