이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Cloud 개념

Serverless 란?

이쿠우우 2020. 9. 1. 18:13
반응형

Serverless 란?

애플리케이션 개발자가 서버를 프로비저닝 하거나

애플리케이션의 확장을 관리할 필요가 없는 클라우드 컴퓨팅 모델

Serverless는 애플리케이션을 빌드하고 백엔드를 디자인하는 방법을 바꾸고 있음

 

[ Server + less ]

단어의 뜻만 보면 서버가 없다는 뜻이지만

실제로 서버가 없다는 것은 불가능함

서버가 있어야지 애플리케이션을 실행시킬 수 있기 때문

Serverless 란 직접 서버를 관리하지 않는 경우를 뜻함

 


Serverless가 등장하기까지의 과정

 

Serverless 이전의 애플리케이션 배포 방법 

애플리케이션을 배포하기 위해서는 

직접 서버를 구입하고 관리를 하며 그 위에 애플리케이션을 올려야 함

즉 서버의 하드웨어, 소프트웨어를 둘 다 관리해왔었음

정전이 되거나 하면 Server 가 다운되는 경우가 발생할 수 있어서  대비도 해야 하고

서버의 메모리, 용량이 부족하면 직접 추가하며 추가 비용도 발생할 수 있음

Server의 하드웨어 관리는 매우 힘듦

 

이때 등장한 것이 Amazon의 EC2

EC2 덕분에 서버를 직접 관리하는 대신

Amazon에 돈을 지불하면 Amazon이 사용하는 최신식 서버를 빌려서 사용할 수 있고

관리 또한 Amazon 이 대신해줘서

직접 하드웨어 관리를 하지 않고 

Application 소프트웨어 관리면 하면 됨

개발에 더 집중할 수가 있음

소프트웨어는 직접 관리해야 함

하드웨어 적인 부분만 빌리는 것이고 서버 자체는 텅 비었기 때문

이 일도 꽤 귀찮은 일

업데이트, 보안 설정, 데이터 백업 등등 소프트웨어 적으로 할 일이 매우 많음

 

이때 Serverless 가 등장

Serverless를 활용하면 백엔드를 서버에 올리는 것이 아님

Serverless에서는 백엔드를 작은 함수 단위로 쪼개서

본인이 직접 관리하지 않는 서버로 올림

예로 들면 AWS Lambda, Azure Functions, Google Cloud Functions 이 있음

 


Serverless 장, 단점

Serverless 장점

함수 단위의 관리

Serverless가 아닌 경우 Server는 24시간 돌아가고 있어야 함

언제나 요청에 응답할 준비를 하고 있어야 함

Serverless의 경우 업로드한 함수가 잠을 자고 있다가

Request 가 올 경우 AWS가 함수를 깨우고 

함수는 작업을 수행하고 다시 잠든

이점이 Serverless의 혁명적인 부분

덕분에 가격도 저렴해짐

원래는 상관없이 24시간 비용을 지불했다면

Serverless는 함수가 뭔가를 수행할 때만 가격을 지불함

 

부하, 비용 관리

유저가 갑자기 수천 명으로 늘면

AWS Lambda는 함수 수를 늘려서 이를 대응하고

유저가 줄어들면 다시 함수를 줄여서

비용, 부하 관리가 간편해짐

 

사이드 프로젝트를 하기에 굉장히 편함

코드에만 집중할 수 있어서 최대한 빠르게 프로토타입 출시가 가능

 

Serverless 단점

Cold Start

함수가 자고 있는 중에 Request가 온다면

함수를 깨워야 하는 깨우는 시간이 좀 걸릴 수도 있음

긴 시간은 아니지만 어찌 됐는 시간이 조금이라도 소요됨

Server는 24시간 대기 중이니 Server에 비해서 느림

이를 대처하기 위해

AWS Lambda의 경우 자수 쓰이는 함수를 파악해서

해당 함수는 잠들게 하지 않고 Request에 빨리 대응할 수 있도록 함

 

서버에 대한 통제권을 잃음

AWS Lambda를 사용하게 되면 AWS에 의지해야 함

나중에 AWS에서 다른 곳으로 쉽게 이사 [Migrating(마이그레이팅) ]을 못함

AWS에서 Google, Azure 등으로 migrating 이 쉽지 않음

 

 

 

[용어 참고]

프로비저닝
프로비저닝 은 인프라에서 자주 나오는 용어로 사전적인 의미로는
공급, 준비, 대비, 식량 이란 의미로 IT에서 의미는
특정 서비스를 제공받기 위하여 서비스 실행부터 시작해
서비스를 제공받기 전 단계까지 처리되는 일련의 절차를 말함

 

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

 

반응형

'클라우드 > Cloud 개념' 카테고리의 다른 글

CMDB (Configuration Management Database)  (0) 2022.01.06
CSPM, CWPP, CASB란  (0) 2022.01.06
CI/CD 이론  (0) 2020.12.04
클라우드 컴퓨팅이란?  (0) 2020.11.24