서버리스

박찬효·2022년 10월 22일
0

서버리스 란??

서버(Server) + 리스(Less)의 합성어로 간혹 '서버가 없다'라고 문자 그대로 이해할 수 있지만, 절대 그렇지 않습니다. 서버리스는 클라우드 컴퓨팅의 모델 중 하나로 개발자가 서버를 직접 관리할 필요가 없는 아키텍처를 의미합니다. 예를들어, 서버의 사용자가 1000명이 될 걸 예상하고 그에 맞는 용량의 서비스를 구입했다면 실제 사용자가 1000명이든 0명이든 같은 금액을 내야 할 것입니다. 이는 크던 작던 손실을 일으키기 마련이지만 서버리스는 동적으로 서버의 자원을 할당합니다.
사용자가 없다면 자원을 할당하지 않고 대기하다 요청이 들어오면 그 때 자원을 할당해서 요청을 처리하고 다시 대기상태로 들어가게 됩니다. 즉, 자원을 효율적으로 사용할 수 있는 것입니다.

왜 서버리스가 탄생하였을까??

  • 이전에는 직접 서버를 사야했습니다. 서버의 하드웨어, 소프트웨어 둘 다 돤리를 해야했고, 만약 누군가 코드를 뽑아버리거나 정전이라도 되는 날에는 서버가 다운되었다.. 웹사이트의 트래픽이 증가하고 유저가 들어오면 서버의 메모리가 충분하지 않아서 급하게 메모리를 사와 꽂는 경우도 허다합니다.

  • 이후 아마존에서 돈을 내면 아마존의 최신 서버를 사용할 수 있는 'EC2'를 선보입니다.

  • 구글, 아마존, MS의 서버를 돈내고 빌리면 그 회사들이 서버의 하드웨어 부분은 관리 해줍니다. 하지만 서버 소프트웨어는 관리를 직접 해야합니다.

  • 클라우드 컴퓨팅의 등장

  • 클라우드: 인터넷을 통해 액세스 할 수 있는 서버와 이러한 서버에서 작동하는 소프트웨어와 데이터베이스를 의미합니다.

서버리스의 장단점

👍 장점

  1. 가격이 저렴합니다

    • 백엔드 서버가 실행되면 24시간 서버가 켜져있어야하는데 비용 문제가 심합니다. 하지만 서버리스는 함수가 실행될 때만 비용이 부과되어 비용 절감의 효과가 있습니다.
  2. 애플리케이션의 품질에 집중 가능합니다.

    • 서버에 신경 쓸 필요가 없어지므로 사용자는 개발하는 애플리케이션의 품질 향상에 좀 더 집중할 수 있습니다.
  3. 높은 가용석과 유연한 확장

    • 요청이 들어올때만 실행되고 동적으로 자원을 할당하기 때문에 가용성이 높고 스케일링에 신경 쓸 필요가 없습니다.

👎 단점

  1. Cold Start

    • 아무래도 서버가 항시 요청에 대기하고 있는게 아니다보니 프로젝트가 규모가 작다면 별로 신경쓸만한 사항은 아니지만 규모가 커지거나 속도를 요구하는 프로젝트라면 서버리는 좋은 선택이 아닐 수 있습니다.
  2. 클라우드 제공 플랫폼에 심하게 종속적

    • 애플리케이션의 구조 자체를 바꾸기 때문에 다른 플랫폼으로 이전하는게 굉장히 힙듭니다. 그리고 이는 곧 사용중인 플랫폼의 가격이나 정책, 서비스 변경에도 민감하게 반응해야됨을 의미합니다.
  3. 긴 시간을 요하는 작업에 불리합니다.

    • 서버리스는 단순작업에는 적합하지만 긴 시간을 요하는 작업에는 굉장히 비효율적입니다. 서버리스는 함수가 1회 호출 될 때 사용할 수 있는 메모리 및 시간에 제한이 있기 때문입니다. 작업이 끝나지 않은채로 해당 시간이 지나면 작업이 끝날때까지 일정 시간마다 계속 함수를 다시 호출하므로 굉장히 비효율적입니다.
profile
개발자가 되기 위한 1인

0개의 댓글