서버리스란?
서버리스는 클라우드 컴퓨팅의 서비스 모델 중 하나로 사용자가 서버를 직접 관리할 필요가 없는 모델 을 의미한다.
IaaS와 같은 모델처럼 트래픽에 따라 사용자가 직접 서버의 가용량을 증가시키거나 감소시킬 필요가 없다는 뜻 입니다.
클라우드 서비스 모델 중 IaaS, PaaS 모델에 비해 경제적이고, 가용성이 좋은 모델이다.사용자는 스케일링, 업데이트, 보안 등 서버에 대해 관리하거나 신경쓸 필요가 없는 모델사용자는 서버를 고려하지 않고, 서비스와 APP의 기능 개발에만 집중하면 됨
서버리스 모델에 대해 오해하기 쉬운 내용
- 서버가 필요 없다? X
- 서버를 직접 관리할 필요가 없다? O
서버리스 모델 유형
- 직접 Backend를 구현했는가? FaaS
- 제공자의 API를 통해 Backend를 구현했는가? BaaS
1. FaaS(Function as a Service)
- 함수를 서비스로 제공하는 모델
<동작 방식>
1) 사용자가 작성한 Back-End 코드를 서버리스 클라우드 제공자(AWS)의 서버에 업로드한다.
2) 해당 서버는 업로드한 코드를 함수 단위로 분할시키고 대기상태로 유지시킨다.
3) 서버로 요청이 들어올 때, 서버가 대기상태에 두었던 함수를 실행시켜서 처리한다.
4) 작업이 끝났을 경우, 대기상태로 전환한다.(함수 호출 후 일정 시간 경과되어도 수면 상태로 전환)
- 함수 비호출 시에는 사용중인 자원이 없는 것과 마찬가지이다.
- 비용 : 함수 호출 횟수에 따라 청구됨 -> Infra as a Service, Platform as a Service는 기본 요금이 있는 반면 서버리스 모델은 비용이 0일수도 있다.
- 대표 서비스 : AWS Lambda, MS Azure Function
2. BaaS(Backend as a Service)
- 백엔드 개발에 필요한 여러 기능을 API로 제공하는 모델
SNS 연동, DB와 같이 백엔드에 필요한 기능들을 사용자가 직접 구현할 필요 없이 제공하는 API로 해당 기능을 구현할 수 있게해주는 모델이다. 클라우드 공급자가 백엔드 개발 환경까지 제공해 준다.
- Firebase의 경우, 공급자의 가이드대로 구현하면 일일히 구현하지 않아도 보안성 높은 소셜 로그인 기능이나, 실시간 데이터베이스 기능을 사용할 수 있다.
- 대표 서비스 : Firebase
서버리스 모델과 IaaS, PaaS 모델과의 차이점
- IaaS, PaaS 모델의 경우
-> 실제 사용자에 관계없이 미리 결제한 용량에 따라 요금 지불 (0명이어도 결제 필요)
- 서버리스 모델의 경우
-> 대기하다가 요청이 들어올 때 자원을 할당해서 요청 처리 후 대기 상태로 전환
-> 사용자가 없으면 자원을 할당하지 않음
-> 대기 상태를 제외한 실제 사용 자원에 대해서 비용 청구 (0명이면 결제 불필요?)
서버리스 장단점
장점
1. 가격
- 기존 IaaS나 PaaS와는 다르게 실제 요청량에 대해서만 비용이 청구되므로 경제적입니다.
2. 애플리케이션의 품질에 집중 가능
- 서버에 신경 쓸 필요가 없어지므로 사용자는 개발하는 오직 애플리케이션의 기능 구현에만 집중할 수 있습니다.
3. 높은 가용성과 유연한 확장
- 요청이 들어올때만 실행되고 동적으로 자원을 할당하기 때문에 가용성이 높고 스케일링에 신경 쓸 필요가 없습니다.
단점
1. Cold Start
- 서버가 항시 요청에 대기하고 있는게 아니다보니 IaaS나 PaaS등의 모델보단 느립니다.
※ 프로젝트 규모가 작다면 별로 신경쓸만한 사항은 아니지만 규모가 커지거나 속도를 요구하는 프로젝트라면 서버리스는 좋은 선택이 아닐 수 있습니다..
2. 클라우드 제공 플랫폼에 심하게 종속적
- 기존 IaaS나 PaaS모델은 플랫폼을 바꾸는게 어렵지 않지만(예시 : AWS에서 Google Cloud로) 서버리스는 애플리케이션의 구조 자체를 바꾸기 때문에 다른 플랫폼으로 이전하는게 굉장히 힘듭니다. 그리고 이는 곧 사용중인 플랫폼의 가격이나 정책, 서비스 변경에도 민감하게 반응해야됨을 의미합니다.
3. 긴 시간을 요하는 작업에 불리함
- 서버리스는 단순 작업(댓글 쓰기, 이메일 보내기 등)에는 적합하지만 긴 시간을 요하는 작업(동영상 업로드, 데이터 백업 등)에는 굉장히 비효율적입니다. 서버리스는 함수가 1회 호출 될 때 사용할 수 있는 메모리 및 시간에 제한이 있기 때문입니다. 작업이 끝나지 않은채로 해당 시간이 지나면 작업이 끝날때까지 일정 시간마다 계속 함수를 다시 호출하므로 굉장히 비효율적입니다.
클라우드 컴퓨팅이란?
- 클라우드 컴퓨팅은 IT리소스를 직접 구매하지 않고 임대하여 사용하는 것 입니다.
※ IT리소스 : 서버, DB, 스토리지 등 구성 가능한 자원
- 직접 서버를 구매하여 설치하고 구성하는 과정 대신 클라우드 컴퓨팅 공급자로부터 필요한 자원을 할당받은뒤 사용량만큼 비용을 지불하는 것 입니다.
클라우드 컴퓨팅의 서비스 모델
클라우드 서비스 모델은 클라우드 공급자가 제공하는 서비스의 차이에 따라 분류하는 개념이라고 생각하면 된다.
크게 3가지가 존재한다.
1. Iaas (Infrastructure as a Service)
- IaaS란 가장 기본이 되는 모델로 클라우드 공급자가 서버, 스토리지와 같은 하드웨어 자원을 제공해주는 모델
- 단점 : 사용자가 미들웨어나 OS를 직접 설치해야 하는 번거로움이 있지만
- 장점 : 필요에 따라 용량을 손쉽게 증/감 시킬 수 있고 사용한 용량을 기준으로 가격이 책정되기 때문에 상황에 따른 유기적 사용이 가능하다.
- 대표적인 서비스 : AWS, Google Cloud, MS Azure 등
IaaS에 대해 오해하기 쉬운 내용
1) 서버의 소프트웨어적인 부분도 제공해준다? X
2) 기존처럼 서버의 소프트웨어적인 부분은 사용자가 직접 관리해야 한다? O
3) 서버의 소프트웨어(SW) 영역은 사용자가 직접 관리해야함(OS 업데이트, 데이터 백업, 보안 설정 등)
4) 서버의 물리적(HW)인 부분은 클라우드 서비스 제공기업이 직접 관리해 줌
2. Paas(Platform as a Service)
- Paas는 사용자가 소프트웨어(서비스)를 개발하거나 실행하는데 필요한 환경을 제공해주는 모델
- 대표적인 서비스 : AWS EC2 등
※ 환경이란 미들웨어, OS, 프레임워크, DB등을 말하며 말 그대로 사용자가 개발을 위한 플랫폼을 따로 구축하지 않아도 필요한 요소를 사용할 수 있게 구축해 놓은 것
3. Saas(Software as a Service)
- Saas는 클라우드 공급자가 소프트웨어 자체를 서비스로서 제공하는 모델
- 드랍박스처럼 사용자에게 제공자가 말 그대로 완성된 소프트웨어 자체를 제공하는 모델
- 대표적인 서비스 : Dropbox, 네이버 클라우드, Google docs 등
4. 서버리스(Serverless)
- 사용자가 직접 서버를 관리할 필요가 없는 모델
- 사용자 요청시에만 자원을 사용할 수 있도록 설계되고, 월 고정비용이 아닌 명령의 실행에 소요된 컴퓨팅 시간만큼만 비용을 청구하는 모델
※ 전통적인 IT 방식
- 전통적인 IT방식에서는 기업(배포자)이 필요한 모든 자원을 준비하고, 관리해야만 했음
예를 들어 웹 서비스 하나를 배포하려고 한다 하면 서버를 구입하고 네트워크를 설정하고 운영체제를 설치하는 등 일련의 복잡하고 긴 작업을 손수 다 해야 했음
- 단점 : 시간적인 측면에서도 낭비가 심하지만 인력과 자본의 낭비도 상당한 방식
클라우드 컴퓨팅의 장점
1. 유연성
- 필요한 만큼의 리소스를 원하는 기간동안 사용할 수 있습니다. 백만원 짜리 서버를 사서 만원어치만 사용하게되는 불상사를 막을 수 있습니다.
2. 안정성
- 서버를 직접 두고 사용하지 않으므로 우리 집에 불이 나건, 정전이 되건 상관없이 서비스를 제공할 수 있습니다.
3. 속도
- 클라우드 공급자가 제공하는 모델을 이용하여 복잡한 작업을 최소화하고 원하는 서비스를 빠르게 구축 할 수 있습니다.
4. 비용
- 상술했듯 필요한 만큼 할당받아 사용할 수 있고 상황에 따라 적절히 증감할 수 있으므로 전체적인 비용이 절감됩니다.
5. 보안
- 업체에서 전문적으로 서비스와 모델을 관리하기 때문에 보안 측면에서도 믿을 만 합니다.
출처
'[CDS] Cloud Service > AWS' 카테고리의 다른 글
[AWS] Aws devops professional 자격증 준비하기 (0) | 2023.02.06 |
---|---|
[AWS] 2주차 공부 - 컴퓨팅(EC2) (0) | 2022.11.29 |
[AWS] 1주차 공부 - AWS 시작하기, Identity and Access Management(IAM) (0) | 2022.10.27 |
[AWS] Serverless Lambda (0) | 2022.06.07 |
[AWS] Iot FleetWise 이론 및 학습 (0) | 2022.03.24 |
최근댓글