서버리스

박선우·2023년 2월 28일
0

CS 스터디

목록 보기
50/53
post-thumbnail

🌼 서버리스

  • 클라우드 컴퓨팅의 모델 중 하나로 개발자가 서버를 직접 관리할 필요가 없는 아키텍처
  • 서버리스는 동적으로 서버의 자원을 할당한다.
  • 사용자가 없으면 할당하지 않고 대기하다 요청이 들어오면 그때 자원을 할당해서 요청을 처리하고 대기 한다.
  • 비용은 대기상태를 제외한 실제 사용 자원에 대해서만 청구 된다.
  • 개발자는 스케일링,업데이트,백업,보안등 신경 쓸필요가 없어진다.

⛔️ 서버리스 아키텍쳐 구현 방식

1️⃣ Faas(Function as a Service)

AWS Lambda, Microsoft Azure function, Google Cloud Functions 등

  • 함수를 서비스로 제공
  • 서버를 업로드하면, 업로드한 코드를 함수 단위로 쪼개 대기상태로 둔다
  • 요청이 들어오면 서버가 대기상태에 두었던 함수를 실행시켜 처리한 후 작업이 끝나면 다시 대기상태
  • 비용은 함수 호출 횟수에 따라 청구된다.
  • 평소에는 대기하다가, 요청이 들어오면 서버가 켜지며 요청을 처리한후 다시 대기하게 된다.

🐶 Stateless

  • 함수가 실행되느 동안에만 관련된 자원을 할당, 함수가 항상 같은 머신에서 실행된다는 보장이 없다.
  • 함수 실행 시 로컬에서 어떤 상태(State)가 유지될 수 없다.
  • 메모리에 상태를 저장하지 않고,AWS -> S3를 이용하거나 DB를 사용해야한다.

🐶 Ephemeral

  • 특정 이벤트가 발생했을 때만 컨테이너로서 배포
  • 실행이 끝난 후엔 자원이 회수되므로 일 일시적 배포

2️⃣ Baas(Backend as a Service)

Firebase, Kinvey, Parse 등

  • 일반적으로 SPA, 안드로이드와 같은 클라이언트 중심으로 개발된 어플리케이션
  • 클라이언트단에서 BaaS가 제공하는 인증, DB, 사용자 관리 등과 같은 백엔드 관련 외부 서비스를 사용
  • 대부분의 비즈니스 로직을 처리
  • SNS연동이나 DB와 같이 백엔드에 필요 기능들을 직접 구현할 필요 없이, Open API로 기능 구현이 가능하다.
  • 클라우드 공급자가 백엔드 개발 환경까지 제공해준 다고 생각

⛔️ 서버리스 장단점

🫥 장점

  • 실제 사용량에 대해서만 비용이 청구
  • 서버에 신경 쓸 필요 없으므로 개발자 생산성 향상 및 개발 시간 단축
  • 자동 스케일 업/다운
  • 간단하게 배포 가능

🫥 단점

  • Cold Start : 서버가 항시 요청에 대기하고 있지않아 느리다.
  • 실행 시간 한계 : 긴 시간이 필요한 작업에는 굉장히 비효율 적이다.
  • (함수가 1회 실행될 때 사용할 수 있는 멤모리 및 시간에 제한이 있다.)
  • 클라우드 제공 플랫폼에 종속적
  • 디버깅 및 테스트 불편

참조

profile
코린이 열심히 배우자!

0개의 댓글