티스토리 뷰

728x90
반응형

서버리스

Cloud Native Patterns

  • Legacy : 인프라부터 애플리케이션까지 구축
  • IaaS : 하드웨어와 가상화 OS 등 인프라 요소를 서비스로 제공(EC2)
  • Caas : 서비스 형태로 제공되는 컨테이너를 호라용하여 배포(ECS)
  • Paas : 애플리케이션 개발에 집중할 수 있도록 인프라와 런타임 환경을 제공(Elastic Beanstalk)
  • FaaS : 실행할 함수코드만 구현(Lambda)
  • Saas : 제공되는 소프트웨어 사용(Gmail)



서버리스의 형태

  1. Baas(Backend as a Service)
  2. Faas(Function as a Service)

Baas는 그동안 개발자가 직접 구현하던 백엔드의 부분부분을 서비스로 제공받는 것(Auth0, AWS Cognito, Firebase).

Faas는 함수를 서비스로 이용하는 것. 개발자가 환경을 구성하고 서버코드를 작성하는 것이 아닌, FaaS를 이용함으로써 함수만 구현하면 된다. 서버코드를 실행하기 위해 서버를 구성하고 코드를 배포하던 형식을 줄이고, 원하는 로직만 함수를 기반으로 구현한다. 각 클라우드 서비스 제공사의 조건에 충족시키면 실행된다. 함수가 호출되면 컨테이너나 VM이 실행되며 정의한 함수가 런타임 내에서 실행된 다음 종료된다.



서버리스의 예시

Client에서 Authentication Service를 호출한 후, 인증을 받고 API Gateway를 호출하여 원하는 함수에 접근한다. 만약 Functon A에는 단시간에 많은 호출이 발생하고, Function B에는 접근이 없다라면 이때 Function A의 동시성을 올리면 된다. 사용자가 없을 때 혹은 필요한 1개의 기능만 사용했다면 사용한 만큼만 청구된다.



Scale-Out과 Scale-Up

스케일 아웃 : 서버를 여러 대 추가하여 시스템을 확장. 로드벨런서가 필수.
스케일 업 : 서버가 처리할 수 있는 양을 늘리기 위해 CPI나 RAM 등 고성능의 부품으로 업그레이드 하는 것

FaaS는 스케일링이 자동화되어 있다. 함수를 작성할 때 병렬 프로그래밍을 작성하면 서비스 제공자가 이에 맞는 오토 스케일링 처리를 해주고 관리포인트가 줄어든다.



FaaS의 단점?

  1. 상태유지가 되지 않는다.
    컨테이너 or VM이 잠시 실행되는 환경이다. 이것은 상태 비저장을 의미한다. 서버코드로 상태 값을 유지하고, 그 값을 이용하여 로직을 구현하던 방식을 DB로 보완하여 사용해야한다.

  2. 함수가 실행되기 위해 항상 준비된 상태가 아니다.
    실행 시 약간의 지연시간이 발생하고, 이를 'Cold Start'라고 한다. 함수를 실행했다면 함수를 실행한 컨테이너는 잠시 대기사애가 되는데 이때 다시 실행하는 것을 'Warm Start'라고 한다. 이는 준비되어 있어 처음 호출할 때 발생하는 지연시간이 발생하지 않는다.

  3. 서비스 제공사에 의존적이다.





출처
AWS Lambda로 시작하는 서버리스(김민준 저, 비제이퍼블릭)
example

728x90
반응형
댓글
반응형
250x250
글 보관함
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Total
Today
Yesterday
링크