본문 바로가기
개발 용어 정리

[서버용어] 서버리스(serverless)

by minhyeok.lee 2023. 2. 24.
반응형

서버리스란?

Red Hat 공식문서에서 서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 개발모델이라고 서술되어있다.

 

즉 서버리스란?

1. 개발자가 애플리케이션을 구현함에 있어 서버를 고려하지 않아도 된다.

2. 구현뿐만 아니라 서버를 관리하지 않아도 된다는 것이다. 

3. 서버가 없어진게 아니라 호스팅 플랫폼 (vercel, netlify, heroku 등) 에서 서버를 대신 관리해준다.

4. 클라우드에 있는 서버에서 개발한 소스코드를 대신 돌려준다.

 

개발자가 서버를 관리한다면?

1. 앱사용 / 트래픽 관리

2. 소프트웨어 관리

3. 서버 모니터링

4. 스케일링 (scale-up, scale-out, scale-down, scale-in 등)

5. 서버를 항상 운영

6. 비용적인 측면

위와 같은 사항들을 고려해야 한다.

 

서버리스를 사용한다면?

1. HTTP GET/products 라는 Resstful API를 실행하는 람다함수 f(x)가 있다.

2. f(x)라는 함수를 언제 실행하면 되는지만 호스팅 플랫폼에 있는 클라우드 서버에 알려준다.

3. 호스팅 플랫폼 사용한 CPU/Memory시간 만큼 비용을 청구한다.

4. 즉 비용적인 측면만 고려하면 된다.

 

장점

1. 개발자가 서버를 구현함에 있어 자유롭다.

2. 개발자가 서버를 관리함에 있어 고려해야 할 점을 고려하지 않아도 된다.

3. 확장이 쉽다.

4. 사용한 만큼 비용이 측정된다.

 

단점

1. Cold Start

 - 함수가 실행되어 클라우드상에 요청이 가면 Code를 다운로드하고 시작하는 개발환경을 구축하는 과정이 생긴다.

 - 위 이유 때문에 처음 시작하는데 시간이 오래 걸린다.

 - 위 과정을 Cold Start Duration라고 한다.

 

2. Resource limitation

 - 람다함수로 등록할 수 있는 함수의 메모리 사이즈(128MB)가 정해져있다.

 - 함수가 시작하고 끝날때까지 특정 시간(15minutes)이 초과되면 timeout이 발생한다.

 

3. No State

 - 상태가 없는, 독립적/개별적인 함수로 실행되어야 한다.

 - 함수 내부에서 전역데이터를 참조하거나 상태를 가질 수 없다.

 - 함수 내부에서 데이터베이스에서 접근해서 데이터를 읽고 써야한다. (Restful API)

 

4. 자체 서버를 실행하지 않거나 자체 서버측 로직을 제어하지 않는 데 따른 단점이 따른다.

 - 자체 서버가 아니고 서버측 로직을 제어할 수 없기때문에 유연성이 떨어진다.

 - 호스팅 플랫폼에 심하게 의존하게 된다는 단점이 있다.

 

5. 서버리스 기능이 최종 사용자와 거리에 따른 거리 지연이 생긴다.

반응형

댓글