클라우드의 개념
몇 년 전부터 클라우드가 급부상하였다. AWS, Azure, Google Cloud Platform 등 클라우드 서비스 제공업체들도 많이 생겨났고 많은 개발자/기업들이 클라우드 서비스를 이용하고 있다. 필자도 클라우드를 애용하지만 개념에 대해 제대로 조사해본 적 없었고 블로그 첫글의 주제로 채택하였다.
이 글에선 클라우드에 대한 전반적인 개념과 더불어 클라우드 서비스의 동반자 격인 IaC(Infrastructure as Code, 인프라를 프로그래밍 코드로 다루는 기술)에 대해서도 정리해보았다.
Notice: 잘못된 내용에 대한 지적은 언제나 환영입니다!
클라우드(cloud)
클라우드는 Microsoft, Amazon, Google 등 빅테크 기업들이 남는 서버를 대여해 주자라는 생각에서 시작되었다. 대부분의 빅테크 기업들은 가지고 있는 모든 서버를 운용하지 않는다. 그렇기에 남는 서버를 다른 이들에게 대여해주고 대여비를 받는 방식으로 클라우드 서비스가 시작되었다. 그렇다면 이렇게 물리적 자원을 지원해주지 않았던 시절엔 어떠하였을까? 각 개인/회사들은 직접 물리적 자원을 구비하였고 필요한 소프트웨어를 직접 설치하여 사용하였다. 이러한 환경을 온프레미스라고 부른다. 온프레미스는 큰 돈을 들여 물리적 자원인 하드웨어를 구매해야 했고 장비를 둘 공간이 따로 필요하다. 뿐만 아니라 서버에 문제가 생기지 않도록 해당공간을 직접 관리해야했으며 그만큼 장비의 교체도 쉽지 않았다. 이러한 문제들로 인해 클라우드가 각광받기 시작하였다. 이미 수 많은 서버를 가지고 있는 회사들은 남는 자원을 대여를 해주며 돈을 벌고 서버를 직접 운용/관리하기 함든 개인이나 회사들은 싼 값에 서버를 빌릴 수 있으니 윈-윈인 셈이다. 두서 없이 적었지만 정리하자면 아래와 같다.
클라우드 등장 이전
- 온프레미스 - 직접 장비 구매를 구매하고 회사에서 직접적으로 관리
- 장비 및 소프트웨어를 직접 관리하는 비용, 장비교체가 불편
클라우드 등장 이후
- 서버가 필요하다면 제공업체로부터 쉽게 대여
- 대여자는 대여자원을 직접적으로 관리하지않고 제공업체에게 위임
- 이미 구축된 소프트웨어를 저렴하게 사용가능
- 온프레미스에 비해 확장성있고 유연한 서버운용이 가능
🤔 그래서 클라우드의 정의는?
인터넷을 통해 액세스할 수 있는 서버로 서버관리를 제공업체에게 위임하여 저렴하고 유연한 서버운용을 할 수 있는 컴퓨팅 시스템이다.
참고로 클라우드(구름)라는 이름은 시스템 내부동작방식은 구름에 싸여있듯 가려져있지만 얼마든지 사용가능하다하여 클라우드라고 정한 것 같다.(정확하진 않음!)
클라우드 서비스 제공업체
서론에서 한 번 언급했듯이 클라우드 서비스를 제공하는 업체로 AWS, Azure, GCP, IBM, Oracle 등이 존재한다. 이 중 AWS, Azure, GCP가 클라우드 시장을 선도하고 있으며 IBM, Oracle 등이 도전장을 내밀고 있는 추세다. 앞서 말한 클라우드 3대장 중에서도 AWS가 전체 시장의 약 33% 즉, 3분의 1 가량을 선점하고 있다.
AWS는 가장 높은 점유율을 가진만큼 인터넷상에 자료들도 상당히 많다. 또한 국내 커뮤니티도 활성화 되어 있기에 고수분들의 도움을 많이 받을 수 있다.(쓰다보니 AWS 찬양글)
클라우드 서비스 타입
어디까지가 클라우드 서비스인가?
클라우드 서비스의 범위는 굉장히 광범위하다. 일반 사용자들이 사용하는 네이버 MyBox, iCloud부터 개발자들이 전문적으로 사용하는 AWS EC2, S3까지 여러 종류가 존재한다.
이렇게 다양한 클라우드 서비스들은 서비스를 관리해주는 범위를 기준으로 여러 타입(종류)으로 나뉘어진다. 이렇게만 말하면 감이 잘 오지 않을수도 있는데 좀 더 풀어말하자면 다음과 같다.
서비스를 운용하는데는 하드웨어, OS, 소프트웨어, 어플리케이션 등이 필요하다. 이러한 도구들을 제공업체에서 어디까지 지원하고 관리하는지의 범위가 클라우드 서비스의 타입을 결정한다고 볼 수 있다.
IaaS(Infra as a Service)
사용자가 관리하는 영역이 가장 넓다. 다르게 말하면 제공업체에서 거의 관리해주지 않는다. 제공업체에서 하드웨어와 네트워킹, 스토리지 정도를 제공해주고 OS와 그 윗단의 소프트웨어, 어플리케이션은 사용자가 커스텀한다. AWS EC2 등이 대표적이다.
PaaS(Platform as a Service)
운영체제, 미들웨어, 런타임 등을 미리 구축시켜 놓은 서비스이다. 개발자들이 만들 어플리케이션 외의 다른 부분을 신경쓰지 않아도 되는 장점을 가진다. 하지만 OS단이나 런타임등을 만져야할 경우에는 IaaS 서비스로의 이전이 필요하다. 헤로쿠 등 서버 호스팅 업체, AWS Elastic Beanstalk 등이 대표적이다.
SaaS(Software as a Service)
제일 완성된 서비스이다. 이 타입이 일반 사용자들이 사용하는 서비스이다. 모든 부분을 제공업체가 관리하고 사용자는 데이터를 저장,공유 하는 용도로만 사용한다. 구글 메일, 네이버 MyBox, iCloud 등이 대표적이다.
FaaS(Funtion as a Service)
최근 유행하는 서버리스 서비스이다. 서버리스는 Baas(Backend as a Service)와 FaaS로 구분된다. FaaS는 코드만 사용자가 관리한다. 나머지 서버, OS, 런타임등은 모두 제공업체가 관리해준다.(OS, 등을 선택할 수는 있음) 이로 인해 개발자는 모든 서버관리를 위임하고 비즈니스 코드에만 집중할 수 있다. 대표적으로 AWS Lambda가 있다.
💡 서버리스란?
서버리스란 서버가 없다는 뜻이 아닌 서버 자체를 클라우드가 관리해주는 서비스를 말한다. AWS의 경우 Lambda, Fragate와 같은 서비스들이 있다. 사용하지 않을때는 클라우드가 서비스를 자동으로 내려 매우 비용효율적이다.
댓글남기기