본문 바로가기
Cloud/Amazon Cloud

마이크로서비스 및 서버리스 아키텍처

by ganyga 2024. 10. 21.

마이크로서비스란?

잘 정의된 API를 통해 통신하는 독립 서비스로 구성된 애플리케이션

 

모놀리식 애플리케이션 : 여러 가지의 서비스가 하나의 애플리케이션에 동작, 급증하는 트래픽에 대응하기 어려움

마이크로서비스 애플리케이션 : 따로따로 서비스를 쪼갬

 

서비스를 쪼개는 기준?

동작을 하는 데 최적화된 서비스 하나, 나눔 포인트는 fail point, 장애가 났을 때 다른 서비스에도 장애 영향을 주는 지

될 수 있으면 하나의 서비스에 장애가 날 수 있도록 하는 것

하나의 기능들을 별도로 쪼갬

 

마이크로서비스의 특성

- 자율적 : 하나의 서비스가 장애 나면 하나의 문제만 발생하는 유연함

- 전문적 : 여러 개의 서비스가 네트워크 처럼 엮여있기 때문에 복잡도가 올라감

 

컨테이너 서비스

- 반복 가능

- 독립형 실행 환경

- VM보다 더 빠른 처리 속도

 

컨테이너는 어떤 문제를 해결할 수 있습니까?

다양한 환경에서 소프트웨어를 안정적으로 실행, 이식성이 높음

 

Amazon ECS

- 컨테이너 실행을 조정함

- 컨테이너를 실행하는 노드 플릿을 유지 관리하고 확장

- 인프라 구축의 복잡성을 제거

- AutoScaling을 구성해서 ECS의 사용 가능한 EC2 인스턴스 수를 자동으로 조정할 수 있음

 

ECS 네트워크 지원

1) 브릿지

2) Amazon VPC 네트워크

 

AWS Fargate

완전 관리형 컨테이너 서비스

- 클러스터 프로비저닝 및 관리

- 실행 시간 호나경 관리

- 규모 조정

- AWS Fargate에서 EKS 및 ECS 실행 가능

 

서버리스 환경 구현

AWS Lambda

- 완전 관리형 컴퓨팅 서비스

- 상태 비저장 코드 실행

- Node.js, Java, Python, C#, Go, Ruby 지원

- 일정에서 또는 이벤트에 대한 응답으로 코드 실행

- 엣지에서 실행 가능

- 실행규칙 15분 내에 실행 가능

 

서버리스 컴퓨팅의 이점

- 구성이 아니라 애플리케이션에 집중함

- 요청 시에만 컴퓨팅 리소스 사용

- 마이크로 서비스 아키텍처 구축

 

AWS Lambda가 처리하는 작업:

- 서버

- 용량 요구

- 배포

- 조정 및 내결함성

- OS 또는 언어 업데이트

- 지표 및 로깅

 

AWS Lambda를 사용하면 할 수 있는 작업 :

- 자체 코드 사용 가능(네이티브 라이브러리를 포함)

- 코드를 병렬로 실행

- 백엔드, 이벤트 핸들러 및 데이터 처리 시스템 생성

- 유휴 리소스에 대해 비용을 지불할 필요가 없음!

 

Amazon API Gateway

- 엔드포인트 노출 방지

- DDoS 및 명령어 주입 공격으로부터 보호

- 다양한 버전과 단계의 API를 호스팅 및 사용

- 개발자에게 API 키를 생성하여 배포

- 프라이빗 VPC와의 엔드포인트 통합

 

Lambda 또는 API Gateway 작업이 필요한 경우

- 병렬

- 연속

- 재시도

- 분기

 

AWS Step Functions

- 시각적 워크플로를 사용한 마이크로 서비스 조정

- 애플리케이션 기능을 단계별로 실행할 수 있음

- 각 단계를 자동으로 트리거하고 추적함

- 단계가 실패한 경우 단순 오류를 파악하여 로깅을 제공