클라우드 컴퓨팅
클라우드 컴퓨팅에서의 클라우드( cloud )는 통신망, 즉 인터넷을 의미합니다.
수많은 하드웨어와 소프트웨어등과 같은 자원들이 통신망으로 연결되어 하나의 커다란 구름처럼 형상화 되어 붙여진 이름 이라고 생각됩니다.
즉 인터넷이 보장된 환경이라면, 언제, 어디서든 동일한 시스템을 사용 가능하게 보장해 주는것을 의미합니다.
< 사진출처 : 나무위키 - 클라우드 컴퓨팅>
https://namu.wiki/w/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C%20%EC%BB%B4%ED%93%A8%ED%8C%85
기술의 발전은 클라우드 환경을 더욱더 발전시키고 있으며, 클라우드 컴퓨팅 서비스 또한 계속해서 증가하고 있습니다.
클라우드 컴퓨팅 서비스는 클라우드 서비스 플랫폼에서 컴퓨트, 스토리지, 데이터베이스 등등 여러 IT 리소스를 필요에 따라 제공하고, 사용한 만큼만 요금을 지불하는 것을 의미합니다.
클라우드 컴퓨팅 서비스 유형에는 여러가지가 있지만, 대표적으로 인프라(IaaS), 서비스로서의 플랫폼(PaaS), 서비스로서의 소프트웨어(SaaS), 백엔드(BaaS) 서비스가 있습니다.
1. IaaS - Infrastructure as a Service
IaaS는 서버, 스토리지, 네트워크를 가상화 환경으로 만들어, 필요에 따라 인프라 자원을 사용할 수 있게 서비스를 제공하는 형태입니다. 클라우트 컴퓨팅 서비스 모델 중에서 가장 많은 업체가 사용하는 유형으로, IaaS를 사용하는 경우, 서버의 설정이나 관리는 사용자가 직접 하고 운영하여야 합니다.
서비스로서의 인프라는 IT 리소스에 대해 가장 높은 수준의 유연성과 관리 제어를 제공하며 오늘날 많은 IT 부서와 개발자에게 익숙한 기존 IT 리소스와 가장 비슷합니다.
대표적으로는 AWS의 S3 와 EC2 서비스가 IaaS 서비스입니다.
2. PaaS - Platform as a Service
PaaS는 사용자에게 애플리케이션을 개발하는 데 필요한 개발환경, 프레임워크 등의 플랫폼을 제공하는 서비스입니다. 기본 인프라(일반적으로 하드웨어와 운영 체제)를 관리할 필요가 없어 애플리케이션 개발과 관리에 집중할 수 있습니다. 즉, 애플리케이션 실행과 관련된 리소스 구매, 용량 계획, 소프트웨어 유지 관리, 패치 또는 다른 모든 획일적인 작업에 대한 부담을 덜어 더욱 효율적이 되도록 해줍니다.
대표적으로는 구글 앱엔진(Google App Engine)과 윈도 애저(Window Azure)가 PaaS 서비스입니다.
3. SaaS - Software as a Service
SaaS 는 서비스 제공자에 의해 실행되고 관리되는 완전한 제품을 제공합니다.
예를들어, 이전에 개인 PC에 설치하여 사용하던 애플리케이션 제품을 클라우드 상에서 서비스하는것을 의미합니다. SaaS 오퍼링을 사용하면 서비스가 어떻게 유지 관리되는지 또는 기본 인프라가 어떻게 관리되는지 생각할 필요가 없으므로 개발 혹은 유지 관리 없이 해당 특정 소프트웨어를 어떻게 사용할지만 생각하면 됩니다.
대표적으로는 Salesforce Sales Cloud, Google Docs, Microsoft Office 365 등이 SaaS 서비스입니다.
4. BaaS - Backend as a Service
BaaS는 모바일 앱 & 웹 앱 개발 시 자주 사용하는 공통적인 백엔드(서버) 기능들을 표준화하여 API형태로 제공합니다.
즉 BaaS를 통해 개발자들은 백엔드플랫폼을 개발하지 않고 서비스형태로 빌려 사용하게 되어, 프론트엔드 개발에 집중할 수 있게 됩니다. BaaS 사업자가 제공하는 백엔드기능에는 일반적으로 데이터저장(data storage), 사용자관리(user management), 푸시알림(push notifications), 위치서비스(location services), 데이터분석(analytics) 등이 해당됩니다. 최근에는 계정등록, 구매확인, 이용자 발생 알림, 패스워드 재설정 등을 구성할 수 있는 거래 이메일 발송 기능도 고객유지 및 참여 전략의 일환으로 BaaS 플랫폼을 통해 제공되고 있습니다.
대표적으로는 google의 firebase 입니다.
결론적으로는 클라우드 컴퓨팅은 로컬이 아닌 인터넷 상에서 컴퓨팅 환경을 조성하는것을 의미하고,
그에 따라 서비스들이 존재하는데,
IaaS는 가장 기본적인 컴퓨팅 환경을 서비스 해주는 것이고,
PaaS는 개발에 필요한 플랫폼을 서비스 해주는 것입니다. 즉 IaaS보다는 좀더 많은것을 서비스 해주는 형태로, 개발에 필요한 틀(?) 을 서비스 해준다고 생각할수 있습니다.
SaaS는 아예 애플리케이션 자체를 서비스 해주는 형태로, 완성품을 서비스 해준다고 생각할수 있습니다.
BaaS는 개발 과정중 프론트 엔드 개발에만 집중할수 있도록 백엔드 개발에 관한것을 서비스 해주는 형태입니다.
따라서 각 서비스의 특징을 확실하게 알아두는것이 추후 개발에 있어 매우 도움이 될것이라 생각됩니다.
이번 포스팅은 React-typescript를 포스팅 하던 도중, firebase로 사용해보기 위해 공부를 하다가 포스팅을 하게 되었습니다. 막연하게 클라우드 컴퓨팅이라는 단어만 알고 개발을 하는 것보다는 각각의 서비스 유형을 알고 사용하는것이 조금이라도 더 좋지 않을까 라는 생각에 시작하였습니다.
다음에는 FireBase를 공부, 사용해보고 포스팅을 진행하겠습니다.
기본적으로는 위키를 참고하였고, AWS의 클라우드컴퓨팅 문서도 참고하였습니다(https://aws.amazon.com/ko/what-is-cloud-computing/)
또한 ETRI의 문서도 참고 하였습니다. (https://ettrends.etri.re.kr/ettrends/pubreader.do?volume=30&issue=4&page=191&paperno=0905002069)
감사합니다.