티스토리 뷰

반응형

백엔드 개발을 지향하시는 분들이나 또는 클라이언트 개발을 하시는 분이 서버를 개발할때 먼저 생각하는 것들이 서버를 어떤식으로 설계하고 구체화할지에 대한 것입니다. 로컬에서 개발을 하더라도 퍼블릭하게 데모를 하거나 PoC를 하고싶다면 클라우드 또는 호스팅하는 서버를 집에 설치해서 셋업을 해야하는데요. 그만큼 백엔드를 개발하는 것과, 개발한 구현체를 디플로이를 어떻게 할거냐도 어떤 솔루션이나 서비스를 만들때 고민해야하는 것 중 하나입니다. 그중에서 오늘은 이러한 서버별 특징과 장단점 그리고 역사에 대해서 먼저 집고 가도록 하겠습니다.

Serverless의 개념

  • 서버가 없다는 뜻이지만, 보이지 않는 곳에 물리적인 서버가 있지만 관리하는 리소스가 최소화되어 서버가 없는 거 처럼 느끼는 것

IaaS

  • Infrastructure as a Service : AWS EC2 를 말함(가상서버)

PaaS

  • Platform as a Service : 인프라, 개발환경, 데이터베이스, 웹 서버, 스토리지, 네트워킹가 포함된 것, 파이어베이스가 이에 해당
  • ⇒ PaaS 기반에 유저는 비즈니스 로직(핵심기능)을 얹어서 서비스한다.

FaaS

  • Function as a Service : 함수단위로 동작하는 단위 : Lambda, functions
  • ⇒ 확장성, 유연함, 사용자에게 안정적인 서비스

역사

  • IaaS → PaaS
    • Monolithic(모든게 유기체적)
    • PaaS를 통해 다양하고 편리한 플랫폼 제공
    • MSA (어플리케이션을 비즈니스 단위로 세분화 및 인프라 분리) : 비즈니스별로 분리되다보니 관리의 단점
  • PaaS → FaaS
    • 확장성과 신속하고 효율적인 대응
    • 다만 FaaS == Severless? 이고 부분집합이다라고 말 할 수 있다.

💡 비즈니스 로직에 집중하고, 서버운영으로부터 자유로워지는 클라우드 컴퓨팅 환경으로 점점 발전

 

Serverless 한계점 및 장단점

장점

  • 인프라관리 감소 (온디맨드, 수요에 따라 동작)
    • 트래픽에 따른 로드밸런싱 직접할 필요 없음
  • 확장성
  • 빠른 아웃풋(코드만 구축하면 서버를 제공할 수 있음)
  • 경제적(클라우드는 사용한 만큼 과금이 되기 때문)

단점

  • 낮은 호환성, 높은 종속성
    • 운영체제, 런타임 결정되어있음
    • AWS Lambda 도 특정 언어들만 가능(근데 메이저 서버구축 언어는 동일한듯)
    • 다른 벤더사로 이전하는 것이 복잡할 수 있다. AWS → GCP
  • 한정적
    • 러닝타임이 긴 경우 적합하지 않다.
    • 모니터링 시스템을 구축할 수 있지만 외부의 모니터링시스템을 구축할 수 있지만 처리율이 좋지 않다.
    • 벤더사에 제공하는거에 종속될 수 밖에 없다.
    • 클라우드 와치로 모니터링 한다.
  • 무상태
    • 각 변수, 데이터 공유불가
    • 이용될때마다 같은 서버가 기동된다고 보장할 수 없음
    • 스테이트풀한 기능을 서버리스에 올리는거에 적합하지 않지만 올리고자 한다면 스텝평션으로 올릴 수는 있다.

지금까지 서버의 개발 형태, 제공하는 형태별 장단점에 대해서 살펴보았는데요, 아무래도 스타트업이나 개별 프로젝트를 할 때 최소의 비용으로 개발하기 위해서는 서버리스가 좋은 선택지가 될 수 있습니다. 실제 서버리스로 서버를 구현했을때의 단점도 있겠지만 중요성을 클라언트 쪽에 잡는다면 충분한 성능을 아주 적은 비용으로 해결 해 낼 수가 있습니다. 구글에서 제공하는 파이어베이스도 서버리스 중 하나니까요. 앞으로 AWS 기반의 서버리스를 구축해보는 내용을 단계별로 설명하도록 하겠습니다.

 

반응형

'Technology > AWS, Docker' 카테고리의 다른 글

AWS API Gateway 제대로 써보자 2  (0) 2022.12.06
AWS API Gateway 제대로 써보자 1  (0) 2022.12.06
Docker 주요 사용 명령어 정리  (0) 2022.12.04
My Docker environment with ubuntu app,  (0) 2017.08.03
Start Docker,  (0) 2017.07.15
댓글