본문 바로가기
IT KNOWLEDGE

Serverless란

by BTC_Haksung 2022. 12. 16.

서버리스 아키텍쳐 란?

서버리스(Serverless)는 직역하면 "서버가 없다" 라는 뜻입니다

하지만 정말로 서버가 없는 것을 뜻하는게 아닙니다. 결국 서버가 있어야 서비스를 돌리기 때문이죠

따라서 정확히 말하자면, 서버리스는 서버가 없는 백엔드 라는 뜻이 아닌 우리가 직접 서버를 관리하지 않아 신경 쓸 필요없는 경우를 뜻합니다.

즉, 서버리스 아키텍처(Serverless Architecture)란 서버를 직접 관리할 필요가 없는 아키텍처를 칭한다.

서버리스는 특히, 사이드 프로젝트나 빠르게 프로토타입을 출시할 때 빠르고 쉽게 제품을 출시할 수 있고, 돈도 매우 절약할 수 있습니다.

서버리스 시장은 지금도 무섭게 성장하고 있어, 관심을 가져서 더 좋은 운영 환경을 고려하는것을 권장합니다.


서버리스 탄생 배경

왜 서버리스라는 개념이 탄생했는지 왜 인기가 있는지 이해하기 위해 과거에는 어떻게 어플리케이션을 배포했는지, 그에 따른 장단점을 순차적으로 알아보는 시간을 간단히 가져보겠습니다.

 

1. 온 프레미스

온프레미스(On-Premise)란 직접 서버를 설치하는 것을 말합니다.

내 집에 서버를 마련하고 싶다면, 하드웨어를 구입하고 거실에 놓고 전원을 꼽아 직접 가동시키고 소프트웨어(서버 코드)를 하드웨어에 업로드해 서비스를 운영합니다.

즉, 서버의 하드웨어 부분과 소프트웨어 부분 둘다 직접 관리한다는 것이고 구입 부터 설치까지 오랜 시간이 걸립니다.

 

그런데 만일 내 집이 정전이 되거나, 실수로 서버 전원을 뽑아 버리면 서버가 다운되어 버리는 불상사가 생기게 되겠죠...

그리고 웹사이트의 유저 유입량이 증가해 트래픽이 늘어나면 서버 메모리가 충분하지 않는 현상이 생기게 되고, 직접 메모리 사와서 서버에 꼽아야합니다.

이처럼 개발자는 코딩하기도 바빠 죽겠는데 하드웨어적인 관리 측면이 너무 번거롭고 힘들게 됩니다.

그래서 차라리 PC방 처럼 서버 컴퓨터를 임대하는 방식으로 하드웨어 관리는 임대하는 회사가 하고, 개발자는 본업인 코딩에 집중하도록 나온 기술이 여러분도 알고 있듯이 바로 클라우드죠!!


2. 클라우드 (IaaS / PaaS)

 

클라우드 컴퓨팅이 등장하면서 덕분에 우리는 거실에 직접 서버 설치하고 관리하는 대신에, 그냥 아마존에게 돈만 내면 아마존이 사용하는 최신식 서버를 빌려서 사용할 수 있게 되었습니다

그래서 정전이라던가 각종 사소한 사고에 서버가 다운되는 걱정을 할 필요가 없어졌고, CSP에서 알아서 스토리지를 늘려주고 관리하기 때문에 서버 성능 역시 걱정할 필요 없어졌습니다.

 

하지만 여전히 서버의 소프트웨어적인 부분은 사용자가 직접 관리를 해야 합니다. 소프트웨어적인 부분은...

예를 들어 서버에 깔린 운영체제 등을 업데이트하고, 데이터를 백업하고, 보안에도 신경 써야 하는 등 생각보다 귀찮은 일이 많습니다.

즉, 하드웨어적인 부분만 빌리는거고 서버 자체는 텅 비어있어 서버를 돌리려면 이것저것 소프트웨어를 설치하고 업데이트 해줘야 하고 관리해야 합니다.

그리고 IaaS모델이나 PaaS모델은 실제 사용자에 관계없이 미리 결제한 용량에 따라 요금을 내야 합니다. 사용자가 1000명이 될 걸 예상하고 그에 맞는 용량의 서비스를 구입했다면 실제 사용자가 1000명이든 0명이든 같은 금액을 내야 하는 것입니다.

또한 아무리 On-demand(사용한 만큼 지불) 서비스를 이용하더라도 해도 대부분의 클라우드 서비스들은 사용자들이 내 서버를 사용하지 않더라도 그냥 가동만 시켜도 시간마다 결제가 되는 시스템입니다. 이는 크던 작던 손실을 일으키게 된다.

이때 서버리스가 등장하게 됩니다.


3. 서버리스

서버리스 컴퓨팅은 클라우드 서비스 업체가 특정 코드를 실행하는 데 필요한 컴퓨팅 리소스와 스토리지만 동적으로 할당한 다음 그 부분에 대해서만 비용을 청구하는 클라우드 실행 모델입니다.

서버리스 원리는 다음과 같습니다.

  • 개발자가 서버리스에 업로드한 함수는 24시간 내내 돌아가는게 아닌 휴면 상태에 들어간다.
  • 그러다가 사용자 요청이 오는 순간 서버리스는 잠들어 있는 함수를 깨우고 실행시켜 요청한 작업을 수행하게 한다. 그리고 다시 함수는 잠에 들게 한다.

이전의 경우 유저가 0명이든 1000명이든 같은 돈을 내서 서버를 장만해야됬지만, 서버리스에서는 수행한 함수만큼만 돈을 내면 됩니다.

대표적인 서버리스 서비스인 AWS Lambda 같은 경우 백만개의 함수실행을 단돈 20센트면 됩니다.

따라서 대기상태를 제외한 실제 사용 자원에 대해서만 청구가 되기 때문에 굉장히 경제적이며 자원을 효율적으로 사용할 수 있게 됩니다.

퍼포먼스 측면에도 문제가 없습니다. 유저가 늘어나면 그만큼 실행 함수도 늘리는 식으로 처리하기 때문입니다.

 

서버리스를 활용하면, 백엔드를 서버에 올리는 것이 아닌 백엔드를 작은 함수 단으로 쪼개서 아마존에서 직접 관리하는 서버로 올리게 된다. 

이 말은 서버는 클라우드 제공 기업에서 전적으로 관리하기 때문에, 사용자는 스케일링, 업데이트, 보안 등 런타임 관리와 운영에 대해 시간을 소모하지 않고 핵심 제품에 집중할 수 있다는 뜻입니다.

이렇게 서버 운영에 소모되는 오버헤드가 줄어들면 개발자는 시간과 에너지를 확장 가능하고 안정적이고 훌륭한 제품을 개발할 수 있게 됩니다.

댓글