서버리스 등장 배경 및 소개
웹 애플리케이션을
- 적은 예산
- 빠르게
- 확장 가능
- 관리와 운영은 쉽게
-> 이것을 혼자 할 수 있을까? = 당연히 불가능
-> 하지만 여기에도 답은 있다. 바로 '서버리스'이다
서버리스의 정의
> 서버가 없는 게 아니라, 서버에 대한 고민을 안 하는 것
컴퓨팅의 진화 과정
> 오래전에는 애플리케이션을 배포하려면 직접 하드웨어 서버를 구매해서 구성, 이때는 하드웨어와 소프트웨어 둘 다 관리를 했어야 했다.
> 이런 서버의 하드웨어 관리의 어려움을 해결해 준 것이 AWS 클라우드 컴퓨팅 서비스 EC2였다 -> 하드웨어 관리의 불안감을 덜 수 있게 됨
> 하지만 빌려서 구성한 서버의 소프트웨어도 보안, 업데이트, 백업과 같은 많은 관리 과정이 필요
> 이런 서버의 소프트웨어 관리의 어려움을 해결하는 방안으로 Serverless가 등장
- 데이터센터에서의 물리 서버 → 데이터센터에서의 가상 서버
- 활용률 증가, 프로비저닝 속도 증가, 높아진 가동 시간, 재해 복구, 하드웨어 독립성
- → 데이터센터에서의 가상 서버 → 클라우드에서의 가상 서버
- 자본 비용 → 운용 비용, 높은 확장성, 탄력적인 리소스, 빠른 속도와 민첩성, 유지보수 비용 감소, 고가용성과 내결함성
- 단점: 가상 서버 관리, 용량 및 활용률 관리, 워크로드 사이징, 고가용성과 내결함성 관리, 간헐적 작업 시 비쌈
서버리스의 이점
- 서버관리 불필요
- 유연한 확장성
- 고가용성
- 유휴 용량 없음
CAP 이론이란?
> 분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition tolerance) 3가지중 최대 2가지만 만족할 수 있다는 이론이다.
> 시스템 특성에 따라 RDBMS,NoSQL 등 어떤 데이터베이스를 사용해야하는지 CAP 필요성에 따라 분석하고 데이터베이스를 선택
일관성(Consistency)
일관성은 동시성, 동일성이라고도 하며 어떤 데이터에 대해서 일관적인 데이터를 보증한다는 것을 의미
가용성(Availability)
가용성이란 모든 클라이언트의 Read와 Write에 대해 항상 응답이 가능(성공)해야 함을 말한다.
분할 내구성(=분할 허용성, Partition Tolerance)
분할 내구성은 두 지역간의 네트워크가 단절되거나 네트워크의 데이터가 유실되더라도 각 지역의 시스템은 정상적으로 동작해야 한다는 것
CAP 분류
- CP DB
> 두 nodes 사이에 파티션이 발생하면 시스템은 파티션이 해결될 때까지 일관되지 않은 노드를 종료해야 한다
에) Redis, MongoDB
- AP DB
> 파티션이 발생하면 모든 노드를 계속 사용할 수 있지만 파티션에 의해 특정 node는 이전 버전의 데이터를 반환, 파티션이 해결되면 AP 데이터베이스는 일반적으로 node를 다시 동기화하여 시스템의 모든 불일치를 복구
예) Dynamo, Apache Cassandra, CouchDB, Oracle Coherence
- CA DB
> 종종 single node의 DB 서버는 CA 시스템으로 분류
예) 일반 RDBMS
PACELC 이론
> CAP 이론으로 부족한 부분을 보완하기위해 네트워크 장애 상황과 정상 상황으로 나누어서 설명하는 이론
> PACELC 이론에서는 장애 상황, 정상 상황에서 어떻게 동작하는지에 따라 시스템을 PC/EC, PC/EL, PA/EC, PA/EL로 나눌 수 있다
예) 마스터-슬레이브로 구성된 MySQL 서버는 기본적으로 PA/EL
> MySQL은 따로 설정하지 않으면 마스터에 트랜잭션 발생시 비동기적으로 슬레이브에 데이터를 복제(async replication)한다고 한다.
출처) https://kwangkyun-world.tistory.com/entry/CAP-%EC%9D%B4%EB%A1%A0#CAP%--%EB%B-%--%EB%A-%--
'DevOps BootCamp > 마이크로서비스' 카테고리의 다른 글
동기식 요청/응답 통신 REST (0) | 2023.05.08 |
---|---|
대표적인 데이터 교환 포맷 JSON (1) | 2023.05.08 |
API 디자인과 프로세스 간 통신 (0) | 2023.05.08 |
도메인 주도 설계 예시 (0) | 2023.05.04 |
마이크로서비스 아키텍처의 정의 (0) | 2023.05.03 |