서버리스와 마이크로 서비스

Jaeminst·2022년 4월 6일
0
post-custom-banner

서버리스

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

서버리스 모델에도 서버가 존재하긴 하지만, 애플리케이션 개발에서와 달리 추상화되어 있습니다. 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 일상적인 작업을 처리하며, 개발자는 배포를 위해 코드를 컨테이너에 패키징하기만 하면 됩니다.

서버리스 애플리케이션은 배포되고 나면 필요에 따라 자동으로 스케일 업되거나 스케일 다운됩니다. 퍼블릭 클라우드 제공업체의 서버리스 오퍼링은 일반적으로 이벤트 기반 실행 모델을 통해 온디맨드로 미터링됩니다. 그러므로 서버리스 기능이 유휴 상태일 때는 아무런 비용도 들지 않습니다.

서버리스 컴퓨팅(serverless computing)은 클라우드 컴퓨팅 실행 모델의 하나로, 클라우드 제공자는 동적으로 머신 자원의 할당을 관리한다. 가격은 미리 구매한 용적 단위가 아닌 애플리케이션이 소비한 자원의 실제 양에 기반을 둔다. 유틸리티 컴퓨팅의 일종이다.

서버리스 컴퓨팅은 여전히 서버가 필요하므로 부적절한 명칭이다. "서버리스 컴퓨팅"이라는 이름이 사용된 이유는 서버 관리 및 용적 계획 결정이 완전히 개발자나 운영자로부터 숨겨져 있기 때문이다. 서버리스 코드는 마이크로서비스처럼 전통적인 스타일로 배치(deploy)된 코드와 결합하여 사용할 수 있다. 대안으로, 애플리케이션들은 순수 서버리스 형태로 작성할 수 있으며 프로비전된 서버를 아예 사용하지 않는다.

서버리스 아키텍처

서버리스는 클라우드 제공업체가 클라우드 인프라와 애플리케이션의 스케일링을 모두 관리한다는 점에서 다른 클라우드 컴퓨팅 모델과 차이를 보입니다. 서버리스 애플리케이션은 호출 시 온디맨드로 자동 시작되는 컨테이너에 배포됩니다.
서버리스 아키텍처에서는 애플리케이션이 필요할 경우에만 시작됩니다. 이벤트가 구동을 위한 애플리케이션 코드를 트리거하면 퍼블릭 클라우드 공급업체가 신속하게 해당 코드에 대한 리소스를 할당합니다. 코드 실행이 종료되면 비용도 청구되지 않습니다. 비용과 효율성이라는 이점 이외에도, 서버리스는 애플리케이션 스케일링 및 서버 프로비저닝과 같은 일상적이고 사소한 태스크에서 개발자의 부담을 덜어줍니다.

마이크로 서비스

마이크로서비스란 애플리케이션 개발을 위한 아키텍처 스타일을 의미합니다.

마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식입니다.
이러한 서비스는 독립적인 소규모 팀에서 보유합니다.

마이크로서비스 애플리케이션

마이크로서비스는 비즈니스 문제를 해결하기 위해 간단한 인터페이스를 통해 다른 서비스와 통신합니다.
마이크로서비스 기반 애플리케이션은 단일 사용자 요청을 처리하기 위해 여러 내부 마이크로서비스를 호출하여 응답을 작성할 수 있습니다.
서비스의 전체 사이클은 몇 가지 단일 기능 모듈들의 합으로 이루어지며, 해당 모듈들은 개별적으로 배포되고 운영됩니다.
마이크로서비스를 사용하면 대규모 애플리케이션을 각각 담당 영역을 가진 소규모의 독립적인 구성요소로 구분할 수 있습니다.

마이크로서비스 아키텍처

마이크로서비스 아키텍처는 하나의 큰 애플리케이션을 여러 개의 작은 서비스 유닛으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 말합니다.
마이크로서비스 아키텍처 내에서 각 마이크로서비스는 애플리케이션 기능을 수용하고 개별 작업을 처리하도록 빌드된 단일 서비스입니다.

마이크로서비스 아키텍처로 개발한다면 각 기능들은 독립적인 자동화 서비스(마이크로서비스)로서 개별 서버를 갖고 있게 됩니다. 각 마이크로서비스는 상호 통신이 가능하며 이를 통해 전체 서비스를 구성하게 됩니다.

발표 QnA

마이크로서비스와 서버리스는 어떤 관계가 있나요?

클라우드 서버가 보편화 되면서 물리적인 인터넷 망, 하드웨어, 운영체제를 신경쓰지 않아도 되었다.

클라우드 서버로 서비스들을 관리하면서 점차 관리해야하는 서비스들이 늘어났고, 독립적인 형태로 서비스들을 관리하는 마이크로서비스 아키텍처를 사용하였다.

각각의 서비스마다 소규모의 독립적인 요소로 구분되어 하나의 큰 애플리케이션을 만드는 마이크로서비스 아키텍처는 서버관리에 대한 관리량이 증가하게 되면서 사람들은 서버에 대한 노력을 안 하게 만드는 방법을 연구했고, 그 결과 서버리스 아키텍처가 등장하게 되었다.

서비스하기 위한 자료나 데이터가 있으면 서버에 대한 생각을 하지않아도 되는 서버리스 서비스
생각나는 서비스는 AWS Fargate, S3, RDS 가 있다.

서버리스의 특징 중 하나인 무상태성(Stateless)는 무엇을 의미하나요?

무상태성은 해당 시점의 상황이나 상태가 저장되지 않아 다른 상태에서 전에 있었던 상태를 알 수 없는 것으로.

각 상태에서 모두 처음부터 시작됩니다.

스테이트리스 애플리케이션은 CDN 같은 단기 요청을 처리합니다.

예시를 들자면, 검색창에 검색어를 입력하고 엔터키를 누르면 원하는 페이지를 보여주는 것입니다.

profile
DevOps !
post-custom-banner

0개의 댓글