본문 바로가기
컴퓨터과학

클라우드 아키텍처

by 라임_Lime 2024. 1. 25.

출처: 픽사베이

 

  클라우드 아키텍처는 클라우드 환경에서 서비스가 안정적으로 동작하기 위해 정보 서비스 대상과 리스크를 분석하고 IT 리소스를 적절하게 배치한 설계를 통해 정보 서비스 제공에 적합한 시스템을 구성하는 과정을 의미한다. 클라우드 아키텍처링은 크게 두 가지 과정으로 구분할 수 있다. 첫 번째로는 비즈니스 전략에 따라 클라우드 서비스를 사용하여 아키텍처를 설계하는 과정이고, 두 번째는 리스크 관리를 기반으로 서비스 가용성 향상을 목표로 클라우드 아키텍처를 발전시켜 나가는 과정이다. 

  클라우드 아키텍처 일반론에 대해 먼저 살펴보자. 클라우드 아키텍처는 클라우드 기반 서비스가 달성하고자 하는 본래의 목적을 만족시키면서, 클라우드 기반 서비스가 예상하지 못한 변화를 마주했을 때 적절하게 대응을 통해서 클라우드 서비스의 가용성을 향상하는 데 그 목적이 있다. 참고로 클라우드 아키텍처의 기술 중 일부는 클라우드 환경뿐만 아니라 온프레미스 환경에서도 동일하게 사용될 수 있는 기술이다. 참고로 클라우드 아키텍처링은 클라우드 기반 서비스를 설계할 때 가장 먼저 선행하는 단계로 사용자의 클라우드 서비스 사용량을 예측하고 맞춰 소요 비용 대비 최상의 서비스 만족도를 끌어내기 위해 치밀하게 설계해야 한다. 클라우드 컴퓨팅이 활성화되면서 시스템 엔지니어는 기존 온프레미스 환경에서 물리적 리소스를 미리 구비했던 것과 달리, 물리적 리소스를 준비할 시간과 예산에 대한 고려 없이 필요할 때 적은 시간과 간편한 절차로 서비스를 운용할 수 있는 클라우드 아키텍처를 적용할 수 있게 되었다. 

  이제 클라우드 아키텍처의 기반 기술에 대해 살펴본다. 첫 번째로 살펴볼 기술은 리소스 풀링이다. 리소스 풀링은 즉시 사용할 수 있는 리소스 풀로부터 리소스를 사용하는 과정으로 정의된다. 이때 리소스 풀이란 즉시 사용할 수 있는 서버나 스토리지 등의 IT 리소스를 담아 두어 서비스에서 사용할 수 있게 구축한 것을 의미한다. 클라우드 서비스에서는 리소스 사용을 요청하는 즉시 리소스 풀에서 리소스를 꺼내 사용할 수 있게 해야 하므로, 되도록 물리적으로 가까운 곳에 있다. 일반적으로 데이터 센터를 시, 도, 국가 단위의 계층적 구조로 구성하여 네트워크 응답 시간을 빠르게 만든다. 즉, 리소스 풀은 클라우드 기반 서비스나 애플리케이션이 준비시간을 절약할 수 있게 해주기 때문에 클라우드에서 당연히 필수적인 기술이다. 일반적으로 리소스 풀의 리소스는 구체적인 물리적 위치를 알 수 없고, 서비스나 애플리케이션이 즉시 사용할 수 있도록 추상화되어 있으며, 서비스나 애플리케이션에 따라 자유롭게 사용되고 해제된다는 특징을 가지고 있다. 리소스 풀링은 클라우드에서 IT 리소스를 대여하는 것이다. 따라서 클라우드 서비스 제공자는 사용자의 리소스 사용량을 감지하여 요금을 청구해야 하는데, 이렇게 리소스의 사용량을 감지하는 것을 리소스 풀 모니터링이라고 부른다. 가장 기본적인 형태는 가상 서버 풀, 물리 서버 풀, 데스크 스토리지 풀, 네트워크 풀, CPU 풀, 메모리 풀 등 리소스 형태별로 풀을 구성하는 것이다. 이런 리소스 풀은 전체 또는 필요한 만큼 일부만 대여된다. 다른 형태로는 리소스 형태별로 모아 놓은 풀 여러 개를 큰 풀로 묶는 것이 있는데, 이는 그룹 풀이라고 한다. 그룹 풀은 유연한 계층적 구성, 풀 간의 분리 및 풀 내에서의 공유, 엑세스 제어 및 위임, 리소스를 하드웨어에서 분리할 수 있다는 장점이 있다. 리소스 풀링은 감사 모니터, 클라우드 사용량 모니터, 서버 가상화, 논리 네트워크 경계, 사용량 과금 모니터, 원격 운영 시스템, 리소스 관리 시스템으로 구성되어 작동한다. 

  그다음 기술인 로드 밸런싱에 대해 살펴보자. 로드 밸런싱은 부하 분산이라고도 한다. 부하 분산은 사용자의 요청을 사용할 수 있는 여러 서버가 있는 경우 이를 분산시키는 것을 의미한다. 로드 밸런서에 대해 살펴보기에 앞서, 시스템의 용량을 탄력적으로 늘리거나 줄이는 스케일링에 대해 먼저 살펴본다. 먼저 수직 스케일링에는 스케일 업과 다운이 있고, 수평 스케일링에는 스케일 아웃과 스케일 인이 있다. 수직성능 향상에 따른 비용증가폭이 크고, 장애 발생 시 한 대의 서버에 부하가 집중되어 장애 영향이 크지만, 수평 스케일링은 비교적 저렴한 서버 사용으로 비용 부담이 적어지고, 장애 시 전면 장애의 가능성이 적다는 장점이 있다. 클라우드 환경에서는 수평 스케일링이 일반적으로 시스템을 확장하는 방식으로 사용된다. 다시 로드 밸런싱으로 돌아오면, 로드 밸런싱은 클라이언트와 서버 사이에 위치하여 클라이언트로부터의 요청을 백엔드의 여러 서버로 적절하게 분산하는 역할을 하는 처리 기술이다. 클라우드에서는 리소스 풀과 로드 밸런싱을 통해 오토 스케일링이 가능해진다. 오토 스케일링을 통해서 이용자의 변화에 따라 서버의 추가 및 제거가 이루어지게 되는데, 이를 위해 클라우드 사용량 모니터, 자동화된 확장 리스너라는 두 가지 요소가 추가된다. 

  그다음으로는 클라우드 버스팅에 대해 간단히 알아본다. 클라우드 버스팅이랑 기업 내부에 있는 프라이빗 클라우드가 요구 처리량을 감당할 수 없는 경우, 일시적으로 프라이빗 클라우드에 있는 작업을 예비 퍼블릭 클라우드에 이관하여 동적으로 짧은 시간 안에 전체 시스템의 처리 능력을 향상하는 기술을 의미한다. 이를 통해 유연성과 셀프서비스 기능을 유지함과 동시에 비용 절감도 가능하게 된다. 다만 클라우드 버스팅 시 프라이빗 클라우드에 있는 애플리케이션과 데이터가 퍼블릭 클라우드로 복제되기 때문에 보안상 문제가 발생할 가능성도 있다.