서버리스(Serverless) VS 서버 기반(Server-based)

SEUNGJUN·2024년 5월 16일
0

CS

목록 보기
3/5
post-thumbnail

서버리스(Serverless)서버 기반(Server-based)은 애플리케이션을 개발하고 배포하는 데 사용되는 두 가지 다른 컴퓨팅 모델이다.

개념

1. 서버리스(Serverless)

  • 서버리스는 애플리케이션을 개발하고 배포하는 데 필요한 서버 관리 부담을 최소화하는 컴퓨팅 모델이다.

  • 개발자는 서버 운영, 확장, 유지 관리 등에 대한 걱정 없이 코드를 작성하고 실행할 수 있다.

  • 서버리스 플랫폼에서는 함수를 이벤트에 연결하여 필요한 경우에만 코드가 실행되며, 실행이 끝나면 자동으로 종료된다.

  • 대표적인 서버리스 플랫폼으로는 AWS Lambda, Azure Functions, Google Cloud Functions 등이 있다.

2. 서버 기반(Server-based)

  • 서버 기반은 전통적인 방식으로 서버를 사용하여 애플리케이션을 개발하고 운영하는 모델이다.

  • 개발자는 서버를 프로비저닝하고 구성하고, 애플리케이션을 배포하고 운영하는 모든 책임을 진다.

  • 서버를 유지 관리하고 확장하는 데 필요한 비용과 시간이 더 많이 소요될 수 있다.

  • 전통적인 웹 호스팅, 가상 머신을 사용한 클라우드 호스팅 등이 서버 기반의 예시이다.

서버리스와 서버 기반은 애플리케이션 개발과 배포에 사용되는 컴퓨팅 모델의 차이를 나타낸다.서버리스는 관리 부담을 줄이고 개발 생산성을 향상시키는 데 중점을 두며, 서버 기반은 전통적인 방식으로 서버를 사용하여 애플리케이션을 개발하고 운영하는 데 집중한다.

장단점

1. 서버리스(Serverless)

장점

  • 비용 절감: 서버리스에서는 실행한 코드에 대해서만 요금을 지불하므로 트래픽이 적은 경우에는 저렴하다.

  • 확장성: 서버리스 플랫폼은 자동으로 확장되므로 대규모 트래픽 처리에 용이하다.

  • 운영의 간소화: 서버리스 플랫폼은 인프라 관리를 제거하기 때문에 개발자는 코드에 집중할수 있다.

  • 빠른 배포: 서버리스 애플리케이션은 코드를 업로드하고 실행하기만 하면 되므로 배포가 빠르다.

단점

  • 제한된 실행 환경: 서버리스 환경에서는 일부 제약이 있을 수 있으며, 실행 시간이나 메모리 크기 등이 제한될 수 있다.

  • 디버깅 어려움: 로컬 환경에서 디버깅하기 어려울 수 있으며, 특히 이벤트 기반의 함수에서는 테스트 하기가 어려울 수 있다.

  • Cold Start 지연: 함수가 처음 호출될 때 초기화 시간이 소요될 수 있어서 Cold Start라는 현상이 발생할 수 있다.

2. 서버 기반(Server-based)

장점

  • 유연성: 서버 기반 애플리케이션에서는 서버를 직접 제어할 수 있으므로 실행 환경을 원하는 대로 구성할 수 있다.

  • 디버깅 용이성: 로컬 환경에서 애플리케이션을 실행하고 디버깅하기 쉽다.

  • 커스터마이징 가능: 서버 기반 애플리케이션에서는 모든 레벨의 설정과 성능을 직접 제어할수 있다.

단점

  • 운영 및 관리 복잡성: 서버 기반 애플리케이션에서는 서버 운영 및 유지 관리에 대한 책임이 있으며, 이는 추가 비용과 시간이 필요하다.

  • 확장성 제한: 서버 기반 애플리케이션은 수동으로 서버를 확장하거나 스케일링해야 하므로 트래픽 증가에 유연하게 대응하기 어려울 수 있다.

사용예시

1. 서버리스(Serverless)

이미지 리사이징 서비스

  • 서버리스 함수를 사용하여 이미지 업로드 이벤트에 반응하여 이미지를 자동으로 리사이징하는 서비스를 구현할 수 있다.

  • 사용자가 이미지를 업로드하면 이벤트가 발생하고, AWS Lambda와 같은 서버리스 플랫폼에서 실행되는 함수가 해당 이미지를 리사이징하고 저장할 수 있다.

웹 애플리케이션 API

  • 서버리스를 사용하여 웹 애플리케이션의 API 앤드포인트를 구축할 수 있다.

  • 예를 들어, 사용자가 웹 페이지에서 어떤 작업을 요청하면 해당 요청을 처리하기 위한 함수를 서버리스로 작성하고 배포할 수 있다.

백그라운드 작업 처리

  • 주기적으로 실행되거나 특정 이벤트에 반응하여 백그라운드 작업을 처리하는 데 서버리스를 사용할수 이다.

  • 예를 들어, 매일 밤에 데이터베이스를 백업하거나 이메일을 보내는 작업을 서버리스 함수로 스케줄링할 수 있다.

2. 서버 기반(Server-based)

웹 애플리케이션 호스팅

  • 서버 기반으로 웹 애플리케이션을 호스팅할 때는 서버를 프로비저닝하고 웹 서버(예: Apache, Nginx)와 어플리케이션 서버(예: Node.js, Django)를 설치하여 구성한다.

  • 사용자의 웹 요청을 받아들이고 해당 요청에 대한 응답을 생성하는 서버가 항상 실행된다.

데이터베이스 관리

  • 서버 기반 애플리케이션에서는 데이터베이스 서버를 프로비저닝하고 설정해야 한다.

  • 데이터베이스 서버를 운영하고 백업하며, 데이터베이스에 대한 모든 관리 작업을 수행 해야 한다.

실시간 처리 애플리케이션

  • 실시간으로 대량의 데이터를 처리해야 하는 경우, 서버 기반의 애플리케이션을 사용한다.

  • 이러한 애플리케이션에서는 서버가 항상 실행되어 있었야 하며, 대량의 데이터를 처리할 수 있는 리소스가 필요하다.

비교

서버리스는 이벤트 기반의 작업에 최적화되어 있고, 함수가 필요한 시점에만 실행된다.

서버 기반은 항상 실행되는 서버가 필요하며, 지속적으로 리소스를 사용한다.

profile
RECORD DEVELOPER

0개의 댓글