🧑💻 AWS에 대해 알고있나요?
면접에서 질문을 받았을 때, 아마존 웹 서비스의 약자라는 것 외에는 대답할 말이 없었다...🫢
많은 회사에서 사용하고 있는 인프라인만큼 이번 기회에 공부해보려고 한다.
그 전에 클라우드 컴퓨팅의 개념에 대해 짚고 넘어가보자.
☁ 클라우드 컴퓨팅
Cloud Computing
클라우드 컴퓨팅이란, 클라우드 서비스 플랫폼을 통해 IT 리소스를 제공하는 서비스를 의미한다.
데이터 센터와 물리적 서버를 구입해 직접 유지 및 관리하는 대신, 클라우드 공급자로부터 필요에 따라 스토리지, 데이터베이스, 네트워킹 등 인프라 서비스를 구매해 접근할 수 있다.
민첩성
클라우드 컴퓨팅을 활용하면 광범위한 리소스에 신속하게 접근할 수 있다.
따라서 리소스를 빠르게 구동해 실험과 혁신, 차별화된 고객 경험을 제공할 수 있다.
탄력성
클라우드 컴퓨팅을 활용하면 비즈니스 요구의 변화에 따라 리소스를 확대하거나 축소하는 등 유연하게 관리할 수 있다.
따라서 향후 변동을 고려해 리소스를 오버 프로비저닝할 필요 없이 현 시점에서 필요한 만큼만 리소스를 프로비저닝하면 된다.
비용 절감
클라우드 컴퓨팅을 사용할 경우, 사용한 서비스에 대한 비용만 지불하면 된다.
인프라 구축에 필요한 고정비용을 가변비용으로 전환하고, 유지보수에 필요한 시간을 절감할 수 있어 매우 합리적이다.
☁ 클라우드 환경
정의를 알았다면 클라우드 환경에 대해 살펴보자.
각 기업에서 활용하는 클라우드는 누구에게 서비스를 제공할지, 어떤 제약을 둘지에 따라 다음과 같이 분류할 수 있다.
1) 퍼블릭 클라우드
모든 사용자가 접근할 수 있는 클라우드 모델
비용만 지불한다면 모든 인프라를 클라우드로부터 공급받아 사용할 수 있다.
기업 입장에서는 인프라 구축 및 유지보수에 할애되는 비용을 절감할 수 있다.
ex. 아마존 웹 서비스(AWS), 구글 클라우드 플랫폼(GCP)
2) 프라이빗 클라우드
허용된 사용자만 접근할 수 있는 클라우드 모델
인가를 받은 사용자만 접근 가능하기 떄문에 퍼블릭 클라우드에 비해 보안수준이 높다.
기업이 직접 클라우드 서비스를 구축하고 계열사나 고객에게만 제공하는 경우가 이에 해당한다.
ex. 정부 전용으로 구축한 G-Cloud
3) 하이브리드 클라우드
퍼블릭 클라우드와 프라이빗 클라우드를 결합해 효율성을 높인 모델
중요하고 민감한 영역은 프라이빗 클라우드를 활용하고, 외부에서 자주 접근하고 덜 민감한 정보는 퍼블릭 클라우드에서 관리한다.
클라우드에 핵심 데이터 보관을 꺼려하는 기업에서 사용하는 형태이다.
4) 멀티 클라우드
서로 다른 퍼블릭 클라우드를 결합한 모델
멀티 클라우드는 여러 클라우드를 혼용함으로써 특정 클라우드에 의존하는 현상을 줄일 수 있다.
또한 여러 클라우드를 비교하고 가장 적절한 서비스를 취사 선택해 최적화된 시스템을 구축할 수 있다.
☁ 클라우드 서비스
이번에는 클라우드가 제공하는 서비스 영역에 대해 알아보자.
일반적인 컴퓨팅 자원은 가장 기반이 되는 서버, 스토리지, 네트워킹 등의 인프라영역부터 시작해 미들웨어, 운영체제, 데이터, 애플리케이션으로 구성되어 있다.
클라우드는 이러한 자원을 계층으로 구분하고, 계층별로 차별화된 서비스를 제공한다.
가령 1부터 10까지의 계층으로 구성된 서비스를 만든다고 치자.
클라우드가 1부터 5까지 구성된 서비스를 제공한다면, 사용자는 6부터 10까지의 서비스를 직접 구축해야 한다.
하지만 클라우드 1부터 10까지 완벽하게 구성된 서비스를 제공하면 사용자는 그저 클라우드의 서비스를 활용하면 되는 것이다.
이렇게 제공하는 서비스 영역에 따라 클라우드를 분류하면 다음과 같다.
1) IaaS
Infrastructure as a Service
클라우드의 가장 기본적인 제공 형태로, 인프라에 대한 컴퓨팅 영역만을 제공하는 모델이다.
서버, 네트워킹, 데이터 스토리지 등 인프라 자원을 빌려준다.
2) PaaS
Platform as a Service
인프라 서비스에서 한단계 발전해 인프라부터 미들웨어/플랫폼 영역까지 포함하는 서비스를 제공하는 모델이다.
사용자가 직접 플랫폼을 구축할 필요 없이 애플리케이션 개발에 필요한 요소들을 웹에서 빌려쓸 수 있도록 한다.
3) SaaS
Software as a Service
인프라부터 미들웨어/플랫폼, 더 나아가 애플리케이션까지 모든 영역을 책임지는 서비스를 제공하는 모델이다.
소프트웨어를 제공해 웹을 통해 접근하고 사용할 수 있도록 한다.