모놀리식 아키텍처 : 하나의 애프릴케이션 안에 모든 기능이 긴밀하게 연결되어 있다. 한 기능에서 에러 발생시 다른 부분에 영향을 미치기 쉽고 서비스 전반적인 부분에 에러가 생길 수도 있다.
마이크로 서비스 : 각 기능을 독립적인 작은 서비스 단위로 나누어 느슨하게 연결 되어있다. 특정 서비스에 문제가 생겨도 다른 서비스에 미치는 영향이 최소화되어 있다.
마이크로 서비스의 등장배경 : 개발팀과 운영팀을 합쳐 빠르고 안정적인 서비스 제공을 목표로 하는 DevOps 문화가 정착하는 과정에서, 이를 기술적으로 뒷받침하기 위한 CI/CD 파이프라인과 IaC가 발전하게되었따. 또한 이러한 자동화된 개발/배포 환경에 장점을 활용하기 위한 적합한 아키텍처 스타일인 마이크로서비스가 함께 부상하게 되었다.
컨테이너
애플리케이션의 코드와 런타임 엔진, 구성 및 종속성을 하나의 표준화 이미지로 패키징화
시스템의 운영체제 커널을 공유, Docker와 같은 플랫폼을 통한 실행 관리
반복 가능, 독립적 환경, VM보다 더 빠른 애플리케이션 가동 속도, 이식성
AWS에서 컨테이너 실행을 위한 서비스
레지스트리 : 컨테이너 이미지를 리포지토리에 Push 저장, 이미지를 Pull하여 컨테이너 배포
컨테이너 호스팅 : 컨테이너를 실행하는 기반 컴퓨팅 리소스, 컨테이너 시작 유형
오케스트레이션 도구 : 컨테이너 애플리케이션의 용량 조정, 네트워킹 및 유지 관리 작업 수행
Amazon ECS & Amazon EKS
실제 현업에서는 수십개 및 수백 개의 컨테이너 들이 존재하기 때문에 이를 개별적으로 관리하는 것이 매우 어렵다. 컨테이너들을 관리하기 위한 도구가 AWS에서는 ECS와 EKS가 존재한다.
Amazon ECS(Elastic Container Service)
컨테이너 구축 및 배포 경험이 없는 사람도 손쉽게 컨테이너 배포 및 운영 가능하다.
Amazon EKS(Elastic Kubernetes Service)
오픈소스 생태계 도구에 익숙한 분, k8s(Kubernetes) 명령어 및 관리 기반 대규모 운영이 가능하다.
k8s controlplane : eks에서는 aws manages
k8s dataplane(k8s worknode) : 실제 컨테이너들이 배포되는 공간
Module 10 네트워킹 2
VPC 엔드포인트
VPC 리스소와 AWS 서비스 엔드포인트와의 연결을 프라이빗 상태로 유지한다.
기존에는 리전 레벌의 서비스들(S3, DynamoDB 등)과 API를 주고 받기 위해서는 인터넷 게이트웨이와 NAT 게이트웨이를 통해서야만 했다. 인터넷을 통해서 통신을 하게 되는 경우 데이터 탈취나 외부 공격에 대한 보안 문제도 발생할 수 있기 때문에 VPC 내부 리소스와 직접적으로 연결시키고자 할 때 사용하는 도구가 VPC 엔드포인트이다.
Gateway Endpoint
S3, DDB 대상으로 추가 비용 없이 사용할 수 있는 가상 라우터
Interface Endpoint
AWS 서비스 대상으로 생성되는 ENI 그리고 프라이빗 링크
VPC 피어링
VPC 간에 1:1로 연결하여 트래픽을 프라이빗으로 라우팅
리전 내, 리전 간 피어링 그리고 교차 계정 피어링을 지원한다. 주의할 점은 CIDR 주소 체계(사설 IP 주소)가 동일하면 연결할 수 없다.
Site-to-Site VPN
VPC의 가상 프라이빗 게이트웨이(VGW)와 온프레미스 네트워크 디바이스 간의 VPN 연결 ex) 웹서버와 백엔드 서버는 aws 서비스를 사용하고, DB 서버를 온프레미스 서버에 두었을 때
AWS Direct Connect
데이터 센터에서 AWS 리소스까지의 프라이빗 광 연결 기반 링크 구축
물리적인 연결 : dedicated connected(고객 라우터와 AWS 라우터의 물리적인 연결을 수행 시키는 것), hosted connection(만약 고객 라우터와 AWS 라우터와 물리적인 연결이 어려울 시 파트너사의 라우터를 이용해 물리적 연결을 수행)
논리적인 연결 : public virtual interface, private virtual interface
Transit Gateway
단일 게이트웨이가 허브의 역할, 여러 VPC와 온프레미스(VPC, Direct Connect)를 연결
리전 간의 transit gateway 피어링 연결이 가능하다.
Module 10 서버리스
서버리스의 서비스의 정의
AWS에서 서비스 제공에 필요한 인프라의 프로비저닝, 용량 조절, 보안, 고가용성을 직접 관리한다.
사용자의 입장에서 기반 인프라가 보이지 않는다. 오직 애플리케이션 관련 작업에서 더 집중해서 수행하면 된다.
컴퓨팅, API 프록시, 스토리지, 인증, 메시징, 오케스트레이션, 분석 등 서비스를 제공
API Gateway
백엔드 서비스의 API 생성 및 배포 관리를 수행하는 관리형 서비스
여러 마이크로 서비스의 통합 Frontend로 구성 가능
Rest ful, Http, WebSocket 프로토콜 지원, 서명을 통한 인증받은 클러이언트에만 접근 부여가 가능
Amazon SQS(Simple Queue Service)
대기열 서비스로 애플리케이션 구성 요소 사이에 배치, 메시지 처리한 소비자가 메시지 삭제
메시지 생산자와 소비자간 일대일 관계
비동기식 느슨한 결합을 통해, 실패한 메시지 처리에 대한 내결함성 제공
Amazon SNS(Simple Notification Service)
하나 주제의 여러 구독자 대상으로 메시지를 전송하는 서비스
주제의 메시지 게시자와 구독자간 일대다 관계
주제에 등록된 메시지는 바로 구독자에게 전송
경보 알림, 푸쉬 알림, 이메일 전송의 용도로 사용된다.
Module 12 엣지 서비스
Route 53
DNS, 도메인 이름 등록 및 상태 확인 기능 제공
지연시간, 상태 확인 및 여러 기준에 따라 요청을 라우팅
리전 수준에서의 장애 조치 지원
Cloudfront
AWS 글로벌 인프라를 이용한 콘텐츠 전송 네트워크 서비스 제공
AWS WAF 및 Shield 지원
정적 콘텐츠 캐싱 및 동적 콘텐츠에 대한 최적화 전송 기능 지원
내장된 보안 기능 지원
AWS Shield
AWS에서 애플리케이션을 보호하는 관리형 DDoS 보호 서비스
Shield Standard(무료 구독 모델) : 인프라 계층의 DDoS를 보호하는 추가 비용 없이 이용 가능
Shield Advanced(유로 구독 모델) : EC2, ELB, Cloudfront, ROute 53 기반 애플리케이션의 DDoS 보호, 지원
AWS WAF(Web Application Firewall)
일반적인 웹 공격 및 봇으로부터 웹 애플리케이션 API를 보호하는 데 도움이 되는 웹 방화벽
웹 ACL은 여러 규칙들로 구성, AWS/마켓플레이스 관리형 규칙 그룹 또는 사용자 규칙을 추가