✔️ Serverless란 무엇인가 ?
서버리스란 서버가 없는 백엔드가 아니라, 내가 직접 서버를 관리하지 않는 백엔드를 말한다.
Serverless는 왜 탄생했는가 ?!
서버리스의 탄생 배경을 알기 위해선 과거의 어플리케이션 배포 방식에 대해 이해할 필요가 있다.
과거 어플리케이션을 배포하기 위해서는 서버의 하드웨어, 소프트웨어를 직접 관리해야 했었다.
만약 정전이 되거나 누군가가 전원을 뽑았다면 서버가 다운되고 운영되던 서비스는 중단된다.
또는 갑작스런 사용자 유입 증가로 인해 트래픽이 증가한다면 서버의 메모리가 충분하지 않아 메모리를 추가해야 했다.
이때 ! Amazon의 EC2가 등장하게 된다.
EC2란 아마존에게 비용을 지불하고 고성능의 서버를 대여해서 사용하는 것이다.
우리가 잘 알고 있는 Amazon, Google, MS의 서버를 대여하면 회사는 서버의 하드웨어 부분을 책임지고 관리해준다.
하지만, 서버의 소프트웨어 관리는 여전히 고객의 영역이었다. 즉, 우리가 관리해주어야 한다.
소프트웨어의 관리 또한 쉽지 않은데 업데이트와 데이터 백업, 보안 등등 신경써야 할 것이 은근 많다.
✔️ 혜성처럼 등장한 Serverless
서버리스를 활용하면 백엔드를 서버에 올리는 것이 아니다.
서버리스에서는 백엔드를 작은 함수단으로 쪼개서 우리가 직접 관리하지 않는 서버로 올린다.
예를 들면 AWS lambda가 있다.
서버리스가 아닌 경우 서버는 24/7 가동되고 있으며 언제나 요청에 응답할 준비를 하고 있다.
하지만, 서버리스의 경우 우리가 업로드한 함수는 잠을 자고 있다가 리퀘스트가 오는 순간 AWS는 함수를 깨운다.
함수는 요청한 작업을 수행하고 다시 잠에 들게된다.
즉, 서버리스는 24시간 동안 깨어있는 상태로 대기하지 않아도 된다는 것이다.
그 덕에 서버의 비용을 절감할 수 있게 되었다.
과거의 경우 사용자가 0명이던 100명이던 항상 같은 비용을 지불해야 했지만,
서버리스에서는 수행한 함수 만큼만 비용을 지불하면 된다.
lambda의 경우 1백만개의 함수 수행을 단 20센트만 지불하면 할 수 있다.
그 덕에 우리는 스케일 조정을 더 효율적으로 할 수 있게된다.
만약 천명의 유저가 동시에 접근한다면 AWS는 같은 함수의 복사본을 천개 만들어 수행하고 유저들이 사라지면 다시 잠에 들게 된다.
✔️ Serverless도 단점이 없을 수는 없다.
1. cold start
서버리스에서 우리의 함수는 잠을 자고 있다. 요청이 들어와서 함수를 깨우는데는 어느정도의 '시간'이 필요하다.
어떻게 해도 기존의 24/7 서버보다는 시간이 더 걸릴 수 밖에 없다. 24/7 서버는 항시 대기중이기 때문이다.
따라서 어플리케이션 서비스에 따라 아주 작은 시간조차도 허용되지 않는 경우, 서버리스는 좋은 선택이 아닐 수 있다.
이러한 문제로 인해 lambda는 어떤 함수가 자주 쓰이는지 파악을 해서 그 함수는 아예 잠들지 않고 리퀘스트에 빠르게 대응할 수 있도록 대기하는 방식을 채택한다.
2. 서버 제공자에게 의존적 (서버 통제권을 잃음)
만약 내 서버리스 백엔드를 AWS에 배포했다면 AWS를 쉽게 떠날 수 없게된다.
단순하게 함수를 빼서 다른 곳으로 이사갈 수 없다는 뜻이다.
한 서버리스에서 다른 쪽으로 마이그레이팅 하는 것은 쉽지 않기 때문이다.
AWS에서 Google로 서버를 옮기는 것은 어렵지 않지만 서버리스의 이사는 그렇게 간단하지 않다.
서버리스로 작업할 경우 어플리케이션의 구조 자체가 바뀌게 되기 때문이다.
✔️ Serverless, 누가 쓰는 것이 좋을까 ?
사이드 프로젝트를 진행하고자 할 때
최대한 빠르게 프로토타입을 출시하고자 할 때
서버리스로 작업하면 설정은 신경쓰지 않고 코드에만 집중하면 되기 때문이다.
엄청 빠르고 쉽게 서버를 활용해 제품을 출시하기 좋다.
서버를 관리하고 설정하는데 시간을 아끼고 싶을때 ? 정답은 서버리스다.
따라서 서버리스는 운영하고자 하는 어플리케이션의 성격을 파악하는 것이 중요하다.
'Study > Study' 카테고리의 다른 글
JumpHost (특정 서버를 경유해 SSH 사용하기) (0) | 2022.04.05 |
---|---|
Prometheus란 ? (0) | 2022.03.23 |
SELinux가 MariaDB를 안전한 방식으로 실행하는 방법 (0) | 2022.03.20 |
WSL (Windows Subsystem for Linux) 이란 ? (0) | 2022.03.12 |
Flask란 ? (0) | 2022.03.04 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!