728x90
클라우드 서비스 복습
마이크로 서비스 아키텍처
클라우드 네이티브(Cloud Native)
- 클라우드 컴퓨팅 환경에서 현대적 애플리케이션을 구축, 배포 및 관리하는 접근 방식
- 조직이 퍼블릭, 프라이빗, 하이브리드 클라우드에서 확장 가능한 애플리케이션을 구축하고 실행 할 수 있도록 지원
- 컨테이너, 서비스메시, 마이크로서비스, 변경 불가능한 인프라 및 선언형 API와 같은 기술은 이러한 접근방식을 가장잘 보여줌
- 탄력적이고 관리 가능하며 관찰 가능한 느슨하게 결합된 시스템을 사용할 수 있도록 해주며, 엔지니어는 최소한의 노력으로 자주 변경사항을 적용할 수 있음
마이크로 서비스
모놀리식(Monolithic) 아키텍처
- 비즈니스 로직이 한 애플리케이션안에 포함되어 있는 전통적인 소프트웨어 아키텍처 구조
- 시스템이 커질 경우 복잡도가 증가해 작은 수정사항에도 전체를 빌드하고 베포해야하는 등 개선 및 확장이 어렵다는 단점 존재
마이크로 서비스 아키텍처(MSA, Micro Service Architecture)
- '여러개로 쪼갠다는 의미' 기능단위로 쪼개어 작은 서비스 단위로 개발
- 서비스간 영향 없이 각 서비스를 개발, 업데이트, 배포 및 확장할 수 있음
- 장점: 독립성, 안정성, 높은 유지 관리성, 기술 유연성
- 단점: 서비스 분리가 많아지는 만큼 많은 인력 필요
컨테이너
- 운영 체제에서 실행되는 프로세스를 격리하여 별도의 실행 환경(SW 서비스 구동을 위한 격리환경)을 제공하는 운영체제 수준의 가상화 기술
- 장점: 이식성, 경량성, 운영 효율성
쿠버네티스
- 컨테이너 오케스트레이션 도구
- 컨테이너를 관리, 배포, 확장 등을 자동화하는데 사용
- 업계 표준, 오픈소스 생태계의 광범위한 제품과 결합 사용 가능하기 때문에 클라우드 및 온프레미스 환경에서 활용
Control Plane
- 클러스터와 워커 노드 내 Pod를 예약, 상태 감시 및 제어, 관리하는 역할
Data Plane
- 컨테이너화된 애플리케이션의 구성 요소인 Pod를 호스팅하는 워커 노드를 생성 및 관리
서버리스 아키텍처
- 간단한 기능을 구현하는 애플리케이션도 서버 사전구성, 관리 작업은 필수인데 이러한 것들을 신경 쓰지 않고 개발에만 집중할 수 있는 방법
서버리스 특징
- 서버들을 배포, 관리할 필요가 없음
- 설계할 때부터 자동확장 기능이 내장되어 있음
- 사용한 만큼만 비용을 지불
- 자동 확장/축소가 가능하도록 설계되어 급격한 트래픽 변화에 유연한 대응이 가능
다양한 AWS 서버리스 서비스
AWS Lambda
- 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 이벤트 중심의 서버리스 컴퓨팅 서비스
- 상태 비저장(Stateless) 코드 실행
- 상태 비저장: 람다를 통해 처리한 결과를 저장하지 않음
- 최대 명령 실행기간(최대15분, 실행 시 메모리(최대10GB)
AWS API Gateway
- 클라이언트가 백엔드 서비스에 액세스할 수 있게 해주는 관문 역할 수행
- 요청이 API Gateway로 전달되면 API 설정에 따라 요청을 적절한 백엔드 서비스로 전달하여 처리하고 응답을 다시 클라이언트에 전달
REST API
- HTTP URL을 통해 자원(이미지, 텍스트, DB내용 등)을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Opration을 적용하는 것으로 JSON 혹은 XML을 통해 데이터를 주고 받음
CORS(Cross-Origin Resource Sharing)
- 브라우저는 보안상의 이유로 교차출처 HTTP 요청들을 제한하는데, 교차 출처의 리소스 요청을 하려면 해당 서버의 동의가 필요하고 이러한 허락을 구하고 거절하는 매커니즘이 교차 출처 리소스 공유라고 함
- 기본적으로 API Gateway는 다른 도메인의 API를 호출할 수 없게 설정되어 있으므로 이를 가능하게 하려면 CORS를 설정해야 함
AWS 실습 내용
도커와 쿠버네티스
- Cloud9 IDE 환경구성
- 인증, 자격증명 및 환경구성
- Cloud9 인스턴스에 보안그룹 수정
- Docker 기본 명령어
- Docker 이미지 build
- ECR에 이미지 업로드
- AWS EKS 설치
- Kubernetes Object 배포
서버리스 서비스 활용
- Lambda로 웹페이지 생성
- Lambda로 API 서비스 생성
- DynamoDB와 API Gateway 생성
- Lambda 웹 페이지 연결 및 테스트
728x90