오늘 TIL시간에는 MSA에 대해 정리해보려고 합니다.,.
마이크로서비스란 무엇인가?
마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식이다. 애플리케이션이 독립적인 구성요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행된다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신한다.
즉, 기능 중심으로 하나만 잘 하도록 서비스를 작게 유지하고 각 서비스를 분산된 환경에서 메서징으로 연결한다라고 이해했습니다.
모놀로식 아키텍처는 모든 프로세스가 긴밀하게 견합되고 단일 서비스로 실행이 된다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야한다. 코드베이스가 증가하게 되면 모놀로식 애플리케이션의 기능을 추가하거나 개선하기가 어려운 단점이 있다. 그리고 이러한 복잡성으로 인해 기능을 추가하거나 개선하기가 어렵다. 종속 관계를 이루며 긴밀하게 결합된 많은 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중 시킨다.
마이크로서비스 아키텍처는 애플리케이션이 독립적인 구성요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행이 된다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신한다. 서비스는 비즈니스 기능을 위해 귀축되며 서비스마다 한 가지 기능을 수행한다. 서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트,배포 및 확장을 할 수 있다.
ㄴ위에 적어놨지만 쓰면서 다시 이해하기 위해 한번 더..
서버리스(serverless)
장점
- 서버리스 컴퓨팅은 개발자 생산성을 높이고 운영 비용을 줄일 수 있습니다. 서버 프로비저닝 및 관리와 같은 일상 업무의 부담을 줄여, 개발자가 애플리케이션에 더 많은 시간을 할애할 수 있습니다.
- 서버리스는 개발자가 프로비저닝하기 위한 작업에 필요한 인프라를 명시적으로 설명할 필요를 줄여줌으로써 DevOps 도입을 지원합니다.
- 제3사 BaaS 오퍼링의 모든 구성 요소를 통합해 애플리케이션 개발을 더욱 간소화할 수도 있습니다.
- 서버리스 모델에서 운영 비용이 낮아지는 이유는 항상 자체 서버를 실행하고 관리하는 대신 필요한 만큼 클라우드 기반 컴퓨팅 시간에 대해 비용을 지불하기 때문입니다.
단점
- 자체 서버를 실행하지 않거나 자체 서버측 로직을 제어하지 않는 데 따른 단점이 있습니다.
- 클라우드 제공업체는 자사 구성 요소가 상호작용하는 방법을 엄격히 제한할 수 있어, 사용자 시스템의 유연성과 커스터마이징 수준에 영향을 주게 됩니다. BaaS 환경의 경우 개발자는 코드 제어 권한이 없는 서비스에 의존해야 할 수 있습니다.
- IT 스택의 이러한 측면에 대한 제어 권한을 이전하면 벤더 종속성 문제도 발생할 수 있습니다. 제공업체를 변경하면 새로운 벤더 사양에 맞추기 위해 시스템을 업그레이드하는 비용이 발생할 수도 있습니다.
AWS가 제공하는 서버리스 서비스들
컴퓨팅
- AWS Lambda
서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 이벤트 기반 종량제 컴퓨팅 서비스
- AWS Fargate
ECS 및 EKS와 연동되는 서버리스 컴퓨팅 엔진
애플리케이션 통합
- AWS EventBridge
AWS와 기존 시스템에서 이벤트 기반 애플리케이션을 대규모로 구축하는 데 사용할 수 있는 서버리스 이벤트 버스
-AWS Step Function
여러 AWS서비스를 손쉽게 비즈니스 크리티컬 애플리케이션으로 차례로 배열할 수 있게 하는 시각적 워크플로 오케스트레이터
-Amazon SQS
마이크로서비스, 분산 시스템 및 서버리스 애플리케이션의 손쉬운 분리 및 크기 조정을 지원하는 메시지 대기열 서비스
데이터 스토어
-Amazon S3
모든 양의 데이터를 저장하고 보호할 수 있도록 설계된 객체 스토리지 서비스
-Amazon EFS
빌더를 위한 완전 탄력적인 서버리스 파일 시스템으로, 고가용성 공유 스토리지의 설정, 크기 조정 및 비용 최적화를 간편하게 해주는 서비스
더 있지만 자세한 내용은 https://aws.amazon.com/ko/serverless/ 참고
https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless
'study > devops' 카테고리의 다른 글
마이크로서비스 개발을 위한 Domain Driven Design, DDD (2) (0) | 2023.01.31 |
---|---|
마이크로서비스 개발을 위한 Domain Driven Design, DDD (1) (0) | 2023.01.31 |
릴리즈와 환경변수 (0) | 2023.01.12 |
Docker (2) | 2023.01.10 |
표준스트림..그리고 (1) | 2022.12.02 |