Application Infrastructure - Cloud (2)

Violet_Evgadn·2023년 4월 24일
0

Cloud Native Architecture

목록 보기
14/16

Cloud 제공 형태

Public Cloud(퍼블릭 클라우드)

특정 기업이나 사용자를 위한 서비스가 아닌 인터넷에 접속 가능한 모든 사용자를 위한 Cloud Service Model이다.

클라우드 서비스 제공자(Cloud Service Provider;CSP)가 HW와 SW를 관리한다.

우리가 일반적으로 알고 있는 HW와 SW 전체를 클라우드 업체에서 빌려오는 클라우드 형태를 Public Cloud라고 이해하면 편할 것이다.

Public Cloud는 사용자가 직접 HW와 SW를 설치할 필요가 없으므로 비용적인 면에서 효율적인 솔루션이다.

또한 사용양에 따른 종량적 결제가 가능하기 때문에 필요한 리소스에 대해서만 비용을 지불할 수 있다는 장점을 가진다.

퍼블릭 클라우드의 가장 큰 장점은 뛰어난 확장성 및 유동성이기 때문에 트래픽이 유동적인 애플리케이션이나 Gmail, Office 365 같은 공용 애플리케이션을 배포하는 데에 있어 적합한 클라우드 형태이다.

Private Cloud(프라이빗 클라우드)

Public Cloud와는 완전히 반대로 특정 조직만 Cloud를 활용하는 클라우드 컴퓨팅 모델로써 주로 기업이 활용하기 때문에 기업용 클라우드라고도 한다.

Private Cloud는 Cloud를 사용하는 조직 내부에 있는 사람들이 컴퓨팅 리소스를 직접 관리할 수 있다. 따라서 IT 팀이 기업에 가장 적절한 리소스 사용법을 Cloud에 적용할 수 있어 효율적인 자원 관리가 가능해지며 사용자 맞춤으로 클라우드 기능을 변형할 수 있다는 장점을 가진다.

또한 Private Cloud에서는 데이터를 기업 측면에서 직접 관리하기 때문에 Cloud 제공 업체에서 기업의 비즈니스 데이터를 볼 수 있다는 압박감에서 벗어날 수 있다.

마지막으로 Private Cloud는 기업용 클라우드라고 불리는 만큼 Public Cloud보다 더욱 강력한 보안을 가지고 있다.

Private Cloud는 클라우드 제공 업체의 서비스를 이용하지 않으며 Infra를 직접 구축한다는 점에서 On-Premise, 즉 자체 인프라 구축과 동일하다고 생각할 수 있으나 엄연한 차이점이 존재한다.

이 둘은 "클라우드 핵심 능력을 보유하고 있는가"에 차이점을 두고 있다.

클라우드의 핵심 능력은 유연하고 빠른 서버의 확장이다.

Private Cloud 같은 경우 서버의 간단한 세팅을 통해 필요한 공간을 확장할 수 있으며 사용하는 공간을 효율적으로 관리할 수 있다는 특징을 가진다. 하지만 On-premise는 용량이 부족할 경우 새로운 서버를 구매하여 서버 설정을 처음부터 다시 수행해야 하는데 이 과정에서 자원 소모가 크기 때문에 유연성이 부족하고 신속성도 떨어지게 된다.

위 설명만 들으면 어려운 개념이라고 이해할 수 있는데 사실 매우 간단한 개념이다.

바로 Cloud 제공 업체가 기업 내부에서만 Cloud를 활용한다면 곧 Private Cloud를 사용하는 업체라고 할 수 있다.

Private Cloud란 결국 다른 업체의 Cloud를 활용하지 않고 직접 Cloud 환경을 구축하고 구축한 Cloud 환경을 활용하는 것을 의미한다. 따라서 Cloud 제공 업체와 마찬가지로 Private Cloud를 활용하는 기업이 외부 기업에게 접근을 허락한다면 외부 기업에서도 Private Cloud를 활용할 수 있는, 마치 Public Cloud를 활용하는 것과 같은 느낌을 받을 수 있을 것이다.

Hybrid Cloud(하이브리드 클라우드)

하이브리드 클라우드란 네트워크 연결을 통해 Public Cloud와 Private Cloud 환경을 결합하여 서로 다른 클라우드 환경에서 데이터와 Application을 공유하는 클라우드 컴퓨팅 모델을 말한다.

이때 VPN과 Express Connect라는 P2P 전용 연결 방법을 활용하여 Public Cloud와 Private Cloud를 연결하게 된다.

Public Cloud는 유연한 확장성이라는 장점을 가지지만 권한이 제한되어 있어 통제력이 떨어지고, Private Cloud는 모든 권한을 가지고 있어 통제력은 높지만 On-Premise 환경처럼 어느 정도 Infra를 직접 구축해야 하기 때문에 비용이 많이 든다.

이 둘의 단점을 지우고 장점만 결합하기 위해 나온 모델이 Hybrid Cloud라고 할 수 있다.

Hybrid Cloud에서는 고객의 비즈니스 니즈에 따라 제공하는 Service를 Public Cloud와 Private Cloud로 나누어 배치한 이후 서비스를 제공한다.

주로 회사에서 계속해서 관리해줘야 하는 핵심 서비스와 비즈니스 데이터는 Private Cloud에 남겨두고 이벤트나 트래픽을 예상하기 힘든 신규 서비스는 Public Cloud에 남겨둔다.

Hybrid Cloud에서는 On-demand 방식으로 서비스에 추가 용량을 제공함으로써 유연한 확장성을 가지게 된다.

자, 무슨 말인지 1도 이해가 안 될 것이다. 좀 풀어서 설명해보자.

Private Cloud에서 제공하고 있는 서비스 A에 갑자기 트래픽이 몰렸다고 가정하자. 이 경우 Private Cloud는 확장이 그렇게 유연하지 않으므로 트래픽을 처리하는데 문제가 발생한다.

할당된 자원만으로는 몰린 트래픽을 처리할 수 없어 A 서비스를 Public Cloud 환경으로 이전한다. Public Cloud에서는 확장이 유연하기 때문에 A 서비스는 몰린 트래픽을 처리하기 위한 자원을 빠르게 받아 처리할 것이다.

즉, 트래픽 처리에 필요한 만큼(On-demand 방식) 서비스에 추가 용량을 제공할 수 있기 때문에 서비스에 확장성을 가지며 이를 "클라우드 버스팅"이라고 한다.

필요한 만큼 Public Cloud에서 리소스를 빌려오는 형식으로 작동하기 때문에 사실상 사용하는 IT 자원의 용량이 무제한이라고도 할 수 있는 것이다.

Hybrid Cloud는 Public Cloud와 Private Cloud의 장점 모두를 가진다.

Hybrid Cloud는 Public Cloud의 유연성, 경제성, 신속성이라는 장점을 가지게 된다. 동시에 Private Cloud의 장점인 보안성과 안정성을 얻을 수 있으며 리소스 설정을 통해 유연하고 통제력 있는 리소스 활용이 가능하다.


클라우드 서비스 형태

IaaS(Infrastructure as a Service)

사용자에게 물리적 자원을 가상화하여 제공하는 클라우드 컴퓨팅 서비스로 사용자가 관리할 수 있는 범위가 가장 넓다.

IaaS는 고객에게 Server, Storage, Network를 가상화하여 UI 형태의 대시보드 혹은 API로 제공한다.

물론 IaaS를 사용하는 고객은 서버와 스토리지에 접근할 수 있으나 실제 서버나 스토리지가 아닌 가상화된 서버와 스토리지에 접근한다고 보는 것이 맞을 것이다.

IaaS는 물리적인 자산만 가상화한 상태에서 활용할 수 있기 때문에 서버 사양의 변경 등 물리적 스펙의 변경이 필요한 경우 다른 방식보다 빠르게 대응이 가능해진다.

대표적으로 AWS의 EC2나 GCP의 Computer Engine(GCE)가 존재한다.

IaaS 사용이 좋은 경우

IaaS는 빠른 변화를 원할 경우 활용하면 좋은 Cloud 서비스 형태이다.

스타트업이나 중소기업은 항상 추가되는 요구사항과 발전된 SW에 대응하기 위하여 유연한 HW 및 SW 사용이 필수적일 것이다.

그리고 IaaS는 사용자가 수정할 수 있는 범위가 가장 넓은 Cloud로써 사용자가 HW나 SW에 대한 변경이 필요한 경우 즉시 대응할 수 있다는 장점을 가진다.

또한 스타트업이나 중소기업은 요구사항이 명확하지 않아 사용량이나 필요한 HW Spec 및 SW 기술을 예측하기 어렵기 때문에 빠르게 변화시킬 수 있는 IaaS의 사용을 추천한다.

Paas(Platform as a Service)

사용자의 개발을 돕기 위해 HW뿐만이 아닌 SW까지 가상화하여 제공하는 클라우드 컴퓨팅 서비스이다.

IaaS에서는 개발 환경을 직접 구축할 수 있었지만 PaaS는 서비스 개발에 필요한 개발환경을 미리 구축해 놓고 제공해준다. PaaS는 개발 환경까지 클라우드 업체 측에서 미리 구축해놨기 때문에 Infra에 대한 관리 없이 바로 개발을 진행할 수 있다는 특징을 가진다.

PaaS는 미리 구축해 놓은 서버를 활용하기 때문에 특정 플랫폼 서비스에 종속될 수 있다는 단점을 가진다.

IaaS와 비교해보면 직접 자원을 관리하는 권한이 떨어지기 때문에 미리 구축해 놓은 서버에 종속된다. 풀어 말하자면 만약 플랫폼 측에서 미리 구축한 서버의 설정을 바꾸거나 사용하던 기술을 바꿀 경우 개발하고 있는 SW가 영향을 받을 수 있다.

대표적으로 Heroku, Google App Engine 등이 있다.

PaaS 사용이 좋은 경우

개발의 신속성을 원한다면 PaaS의 사용을 추천한다.

PaaS는 이미 Runtime까지 구현해놓았기 때문에 우리가 개발한 코드를 빌드시켜 배포만 하면 바로 클라우드 위에서 서비스를 제공할 수 있게 되는 것이다.

우리는 개발을 진행하고 빌드만 수행하여 바로 클라우드 서버에 올리기만 하면 되므로 서버 운영에 드는 비용을 줄일 수 있고 이는 개발의 신속성에 큰 도움을 준다.

SaaS(Service as a Service)

이미 Cloud 상에 올라가 있는 서비스를 활용하는 형태로써, 서비스 운영은 불가하고 오로지 배포된 서비스를 활용만 할 수 있는 클라우드 서비스 형태를 말한다.

위 사진을 보면 알겠지만 Application까지 서비스 제공자가 관리하기 때문에 사실상 사용자는 관리할 수 있는 부분이 없고 오로지 활용만 가능하다.

SaaS는 Application을 사용자가 관리할 수 없기 때문에 자연스럽게 Application에 대한 Update 및 버그 개선 등의 서비스까지 서비스 제공자가 제공한다. 따라서 고객은 어떤 서비스를 활용할지만 생각하면 된다.

SaaS의 예시를 알면 단번에 이해가 가능한데, SaaS의 대표적 예시는 Google Cloud, Naver Cloud, MS Office 365, DropBox 등이 존재한다.

SaaS는 커스터마이징이 어렵다는 단점이 존재한다고는 하지만, 고객은 배포된 서비스를 활용만 하기 위해 SaaS를 사용하므로 단점이라 보기는 애매할 것 같다.

SaaS 사용이 좋은 경우

서비스 운영보다는 비즈니스에 집중하고 싶을 경우 SaaS 활용이 좋다.

SaaS는 데이터 노출에 대한 위험성이 존재하지만 보안상 민감하지 않은 Data를 다룰 경우 SaaS는 최고의 선택이다.

또한 SaaS는 컴퓨터에 응용 프로그램을 다운로드하고 설치할 필요가 없으므로 데이터에 대한 쉽고 빠른 접근이 가능하며 모바일 액세스가 필요한 경우에도 좋은 선택이 될 것이다.

사진으로 한눈에 보는 클라우드 서비스 형태

IaaS는 내가 직접 서버에 대한 설정을 수행하고 개발한 SW를 배포하는 과정을 거친다.

즉, 서비스에 대한 모든 것을 직접 운영하는 운영자의 역할을 수행하므로 "host"(주인)이라고 표현할 수 있다.

PaaS는 서버에 대한 설정은 미리 정의되어 있으며 개발한 SW를 배포만 하면 된다.

즉, SW를 개발하고 결과물을 빌드하여 배포만 하면 되기 때문에 "build"라고 표현할 수 있을 것이다.

SaaS는 사실상 완벽히 개발된 SW를 활용하는 것이다.

운영적인 부담이 존재하지 않고 권한도 없기 때문에 단순한 사용자의 역할밖에 남지 않으며 "consume"이라고 표현할 수 있을 것이다.


사진으로 보는 다양한 Infra

On-Premise

SW와 HW를 자체적으로 보유하여 서버를 운영하는 방식을 의미한다.

즉, 기업 내부에 직접 Data Center를 구축하고 유지 보수하며 Server에 Application을 배포하는 운영 방식을 뜻한다.

위 사진에서 볼 수 있듯 서버 운영에 필요한 HW와 서버에 필요한 보안 설정 및 환경 설정, 유지보수까지 모든 것을 직접 관리해야 한다.

Colocation

Data Center를 위한 장소만 대여해주고 남은 모든 것들은 사용자가 구축하여 운영하는 방식을 말한다.

기업 내부에 직접 Data Center를 만들지 않아도 되기 때문에 Data Center 운영 장소 및 운영 환경에 대해 신경 쓸 필요가 없다. 하지만 Colocation 제공 업체 측에서는 어디까지나 장소만 제공해주기 때문에 네트워크, DB, OS 같은 운영에 필요한 설정들은 모두 직접 해줘야 한다.

Colocation은 Data Center 장소에 대한 유지보수와 관리에 인력을 쓰지 않아도 되긴 하지만 결국은 사용자가 가지고 있는 서버를 위탁하여 사용하는 것이기 때문에 장소 이외의 모든 것을 직접 관리해줘야 한다. 서버를 위탁·관리한다는 점이다.

Hosting & IaaS(중요!)

Hosting과 IaaS는 둘을 비교하며 알아가는 것이 더욱 좋다.

Hosting과 IaaS는 가상 서버(VM)를 활용한다는 점에서는 공통점을 가진다. Hosting과 IaaS 모두 HW를 미리 구축해놓은 상태에서 VM을 여러 개 만든 뒤 사용자가 원하는 Spec의 VM을 제공해주는 서비스이다.

하지만 이 둘의 차이점은 바로 "확장성"이다.

Cloud(IaaS)는 Hosting에서 가상화(Virtualization) 과정을 추가로 거쳤다. 이는 활용하는 VM의 차이를 가져다준다.

Hosting은 VM에 설정된 IT 자원이 고정되어 있다. 여기서 말하는 IT 자원이란 VM의 메모리, CPU 등을 의미한다.

따라서 Hosting은 초기 사용자가 원하는 HW 사양을 변경하기가 매우 힘들어진다. 왜냐하면 사양을 변경하기 위해선 사용하고 있는 VM보다 더 큰 새로운 VM을 대여하거나 기존에 사용하던 VM에 다른 VM이 사용하던 자원을 합쳐야 하는데, 이 과정에서 당연히 추가적인 환경 설정이 요구되기 때문이다.

즉, Hosting이란 처음 호텔에 거주할 인원을 미리 정의하여 호텔 주인에게 알려주면 호텔 주인은 딱 그 인원에게 필요한 수건이나 가전기기를 제공해주는 상황이다.

IaaS는 VM에 가상화 과정을 거쳤다. 따라서 VM 내에 존재하는 IT 자원을 유연하게 확장 및 축소할 수 있다.

아래서 가상화에 대해서 조금 더 공부하겠으나, 나는 Cloud에서의 가상화는 VM의 Virtual Server화라고 생각한다.

Cloud는 고객에게 제공하는 VM 또한 가상화되어 있기 때문에 원하는 자원을 빠르게 대여할 수 있다.

즉, VM 내의 자원이 고정되어 있지 않고 필요할 때마다 가상화된 IT 자원을 가져다 쓸 수 있고, 반대로 필요하지 않은 IT 자원은 가상화된 상태로 반납하기 때문에 좋은 확장성과 유연성을 가지는 것이다.

즉 IaaS는 호텔에서 수건이나 가전기기 같은 것이 부족할 때 호텔 주인에게 요청하여 추가적인 비용을 내고 가져올 수 있는 상황인 것이다. 수건이나 가전기기는 호텔 주인에게 반납할 수도 있으며, 반납한 물건들은 다른 사람이 또 가져다 쓸 수 있게 되는 것이다.

결국 호텔의 예시로 비교해봤을 때 Hosting 같은 경우 처음에 인원이 확정되기 때문에 추가 비용이 들지 않아 비용을 예측하기 쉽지만 인원이 변동되거나 필요한 물건이 생각보다 많더라도 문제를 해결하기 어렵다.

IaaS 같은 경우 내가 원하는 만큼 물건을 빌리고 반납할 수 있기 때문에 물건이 부족해지거나 인원이 변동되더라도 빠르게 문제 해결이 가능하지만 호텔에 얼마를 써야 할지 예측하기 어려워지고, 이런 유연성을 가지면 호텔 주인 입장에서 피곤해지기 때문에 Hosting보다는 더 비싼 가격을 받게 된다.

PaaS & SaaS

위에서 설명한 그대로이다.

가상화(Virtualization)

먼저 여기서 중요한 개념이 "Virtualization(가상화)"이다.

가상화에 대해서는 설명할 것이 매우 많지만 이번 Section에서는 가상화 자체에 집중하는 내용이 아니므로 일단 단순히 의미만 정리하고 넘어가자.

가상화란 가상화를 관리하는 SW(Hypervisor 등)를 사용하여 하나의 물리적 머신에서 가상 머신(VM)을 만드는 프로세스이다. 이전에 Virtual Server를 공부했을 때 Host OS 위에 Hypervisor라는 SW를 사용하여 여러 개의 가상 머신(VM)을 설치하고 활용할 수 있었는데, 이렇게 VM을 활용할 수 있도록 만드는 과정을 가상화라고 하는 것이다.

클라우드 컴퓨팅에서 말하는 가상화는 HW 가상화를 의미하는데 전가상화라고도 부른다.

전가상화란 HW를 완전히 가상화시켜 모든 가상 머신들이 HW에 접근할 때 관리용 가상 머신을 통해 이루어지는 것이다.

즉, VM이 수행하는 모든 명령은 관리용 가상 머신이 개입을 하여 HW에서 처리할 수 있게 되며 관리용 가상 머신이 모든 일에 개입하기 때문에 SW를 더욱 잘게 쪼개 나눠주는 것도 가능해진다.

관리용 가상 머신이 HW와 VM 중간에서 번역기 역할을 해주기 때문에 Guest OS의 종류에 관계없이 모든 명령어를 이해할 수 있게 되므로 사용하는 OS가 무엇이든 별다른 수정이 필요 없다.

전가상화는 관리용 가상 머신이 모든 명령을 중재하기 때문에 성능이 느리지만 클라우드 업체는 매우 뛰어난 HW 사양을 가진 기기들을 사용하므로 이 단점을 크게 줄일 수 있다.


사진으로 보는 Cloud와 Hosting 차이

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글