[aws] AWS 기본 개념 및 클라우드 컴퓨팅
AWS(Amazon Web Service) 소개
◆ 클라우드 컴퓨팅 배포 모델
- 클라우드 컴퓨팅 : IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것.
[클라우드 컴퓨팅 모델]
이름 | 설명 |
Iaas (Infrastructure as a Servise) | - 클라우드 IT의 기본 빌딩 블록을 포함하고 일반적으로 네트워킹 기능, 컴퓨터(가상 또는 전용 하드웨어) 및 데이터 스토리지 공간을 제공 - IT 리소스에 대해 가장 높은 수준의 유연성과 관리 제어를 제공 |
Paas (Platform as a Servise) | - 조직은 기본 인프라(하드웨어와 운영체제)를 관리할 필요가 없어 애플리케이션 개발과 관리에 집중 - 애플리케이션 실행과 관련된 리소스 구매, 용량 계획, 소프트웨어 유지 관리, 패치 또는 다른 모든 획일적인 작업에 대한 부담을 덜어 더욱 효율적! |
Saas (Software as a Servise) | - 서비스 제공 업체에 의해 실행되고 관리되는 완전한 제품을 고객에게 제공 (서비스 유지 관리 및 기본 인프라 관리 필요 없음) - 예시) 이메일 제품용 추가 기능을 관리할 필요가 없고 이메일 프로그램이 실행되는 서버 및 운영체제를 유지 관리하지 않고 이메일을 보내고 받을 수 있는 웹 기반 이메일 |
(1) 클라우드(Cloud) 기반 배포 : 퍼블릭(Public)
- 애플리케이션의 모든 부분을 클라우드에서 실행
(2) 온프레미스(On-premises) 배포: 프라이빗(Private)
(예를 들어 , 물리적 공간의 IDC센터라고 할 수 있다)
- 가상화 및 리소스 관리 도구를 사용하여 물리적 공간의 IDC 에 리소스 배포
(3) 하이브리드(Hybrid) 배포
- 클라우드 기반 리소스를 온프레미스 인프라에 연결(자체 IDC + 클라우드 서버)
◆ 클라우드 컴퓨팅의 이점
- 선행 비용을 가변 비용으로 대체
- 데이터센터 운영 및 유지 관리에 비용 투자 불필요
- 용량 추정 불필요 ex) **AMAZON EC2 인스턴스(instance)**
- 규모의 경제로 얻게 되는 이점
- 속도 및 민첩성 향상
- 몇 분 만에 전 세계에 배포
클라우드 컴퓨팅 (Cloud Computing)
◆ Amazon Elastic Compute Cloud (Amazon EC2)
온프레미스 리소스 사용 시 | Amazon EC2 사용 시 |
- 미리 하드웨어 구입 - 서버 배달시간 소요 - 물리적 데이터센터에 서버 설치 - 필요한 모든 구성을 수행 |
- 몇 분이면 프로비저닝하고 시작 - 워크로드 실행을 완료했다면 인스턴스 사용 중지 가능 - 인스턴스 사용 중일때 그 비용만 지불! 중지 또는 종료 후 비용지불X - 필요한 서버 용량에 대해서만 비용지불 (비용절감) |
◆ Amazon EC2 작동방식
- 인스턴스 시작 : 템플릿 선택(운영체제, 애플리케이션 서버, 애플리케이션 포함), 인스턴스 유형 선택(특정 하드웨어 구성), 보안 설정(네트워크 트래픽 제어)
- 인스턴스 연결
- 인스턴스 사용 : 명령 실행 → 소프트웨어 설치, 스토리지 추가, 파일 복사 및 정리 등 수행
◆ Amazon EC2 인스턴스 유형
(1) 범용 인스턴스 : 컴퓨팅, 메모리, 네트워킹 리소스를 균형 있게 제공
- 워크로드 : 애플리케이션 서버, 게임 서버, 엔터프라이즈 애플리케이션용 백엔드 서버, 중소 규모 데이터베이스
(2) 컴퓨팅 최적화 인스턴스 : 고성능 프로세서를 활용하는 컴퓨팅 집약적인 애플리케이션에 적합
- 워크로드 : 범용인스턴스보다 고성능 웹서버, 컴퓨팅 집약적 애플리케이션에 적합 (단일 그룹에서 많은 트랜젝션을 처리해야하는 일괄 처리로드)
(3) 메모리 최적화 인스턴스 : 메모리에서 대규모 데이터 세트를 처리하는 워크로드를 위한 빠른 성능 제공
- 워크로드 : 고성능 데이터베이스, 방대한 양의 비정형 데이터의 실시간 처리가 필요한 경우
(4) 액셀러레이티드 컴퓨팅 인스턴스 : 하드웨어 액셀러레이터(데이터 처리를 가속화) 또는 프로세서를 사용하여 일부 기능을 CPU에서 실행되는 소프트웨어보다 더 효율적으로 수행
- ex) 부동 소수점 수 계산, 그래픽 처리, 데이터패턴 일지
(5) 스토리지 최적화 인스턴스 : 로컬 스토리지의 대규모 데이터세트에 대한 순차적 읽기 및 쓰기
- 워크로드 : 분산 파일 시스템, 데이터 웨어하우징 애플리케이션, 고빈도 온라인 트랜잭션 처리(OLTP) 시스템
◆ Amazon EC2 요금 : 사용한 컴퓨팅 시간에 대해서만 비용 지불
(1) 온디맨드 (On-Demend)
- 중단할 수 없는 불규칙한 단기 워크로드가 있는 애플리케이션에 적합
(2) Amazon EC2 Saving Plans
- 1년 or 3년 기간동안 일정한 컴퓨팅 사용량을 약정하여 컴퓨팅 비용 절감 (온디맨드 기준 최대 72% 비용절감)
(3) 예약 인스턴스
- 온디맨드 인스턴스를 사용할 때 적용되는 결제 할인 옵션 (온디맨드 기준 최대 75% 비용절감)
(4) 스팟 인스턴스
- 시작 및 종료 시간이 자유롭거나 중단을 견딜 수 있는 워크로드에 적합 (온디맨드 기준 최대 90% 비용절감)
(5) 전용 호스트
- 사용자 전용의 Amazon EC2 인스턴스 용량을 갖춘 물리적 서버 (가장 비쌈)
◆ Amazon EC2 확장
(1) 확장성
: 필요한 리소스만으로 시작하고 확장 및 축소를 통해 수요 변화에 자동으로 대응하도록 아키텍쳐 설계 → 사용한 리소스에 대해서만 비용 지불
(2) Amazon EC2 Auto Scaling
- 변화하는 애플리케이션 수요에 따라 Amazon EC2 인스턴스를 자동으로 추가 또는 제거 해줌 → 필요에 따라 인스턴스를 자동으로 조정하여 애플리케이션 가용성을 효과적으로 유지
- 접근방식
- 동적조정 : 수요 변화에 대응
- 예측조정 : 예픅된 수요에 따라 적절한 수의 Amazon EC2인스턴스를 자동으로 예약
→ 동적과 예측 함께 사용 시 더 빠르게 조정 가능
- 인스턴스 수 설정
· 최소용량 : Auto Scaling 그룹을 생성한 직후 시작되는 인스턴스의 수
· 희망용량 : 최소용량 문제에 대비해 두는 인스턴스의 수 (최소용량과 같이 일함!) 지정하지 않으면 최소용량으로 설정됨
· 최대용량 : 수요증가에 대응하여 확장하도록 두는 인스턴스의 수 (최대 4개로 제한)
◆ Elastic Load Balancing을 사용하여 트래픽 리디렉션
(1) Elastic Load Balancing
- 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스와 같은 여러 소스에 자동으로 분산하는 AWS 시스템 (워크로드를 여러 인스턴스에 분산시킴)
[목적]
- 서버 부하 분산
- 서버에 대한 상태 검진(Health Check)
- 오토스캐닝
(2) Elastic Load Balancing 특징
- 리전 구조 : 사용자가 추가로 작업하지 않아도 자동으로 고가용 서비스가 됨
신규 서버 생기면 신호 보냄! 작동하게 되고 이 구조로 백엔드의 트래픽 혼란 방지!!
Elastic Load Balancing이란 무엇인가요? - Elastic Load Balancing
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
◆ 메시징 및 대기열
(1) 모놀리식 애플리케이션 및 마이크로 서비스
- 모놀리식 애플리케이션 : 모놀리식 아키텍처는 하나의 코드 베이스를 사용하여 여러 비즈니스 기능을 수행하는 전통적인 소프트웨어 개발 모델로, 모놀리식 시스템의 모든 소프트웨어 구성 요소는 시스템 내의 데이터 교환 메커니즘으로 인해 상호 의존적인 성질이 있다. 작은 변경 사항이 코드 베이스의 넓은 영역에 걸쳐 영향을 미치기 때문에 모놀리식 아키텍처를 수정할 때는 제한이 많고 시간도 많이 소요된다.
하나의 코드 구성요소가 밀결합된 상태 (구성요소 : 데이터 베이스, 서버, 사용자 인터페이스, 비즈니스 로직)
한 가지 구성요소에서 장애발생 시 다른 구성요소에서 장애 발생, 추후 전체 애플리케이션의 장애 발생
- 마이크로서비스: 마이크로서비스는 소프트웨어를 작은 독립 구성 요소 또는 서비스로 구성하는 아키텍처 접근 방식이다. 각 서비스는 하나의 기능을 수행하고 잘 정의된 인터페이스를 통해 다른 서비스와 통신한다. 독립적으로 실행되므로 필요에 따라 각 서비스를 업데이트, 수정, 배포 또는 조정할 수 있다.
[보다 상세한 내용은 하단 링크 참고]
모놀리식과 마이크로서비스 비교 - 소프트웨어 개발 아키텍처의 차이 - AWS
마이크로서비스는 더 빠르게 혁신하고, 위험을 낮추고, 출시를 가속화하며, 총 소유 비용을 줄이는 데 도움이 됩니다. 마이크로서비스 아키텍처의 운영상 이점을 요약하면 다음과 같습니다. 더
aws.amazon.com
(2) 애플리케이션의 통합을 촉진하는 서비스
- Amazon Simple Queue Service (Amazon SQS)
- 규모에 상관없이 소프트웨어 구성요소 간에 메세지를 전송·저장·수신
- 다중화 내재 : 메세지를 잃어버리거나 서비스 중단 X (데이터 전달되기 전까지 안전하게 보호) (페이로드 : 메세지에 포함된 데이터)
- SQS 대기열 : 메세지가 처리되기 전까지 배치되는 곳
- 장점 : 자동으로 규모 조정, 한정적, 쉽게 구성하여 사용
Amazon SQS FAQ | 메시지 대기열 서비스 | AWS
단일 Amazon SQS 메시지 대기열은 메시지를 무제한으로 포함할 수 있습니다. 그러나 표준 대기열의 경우 inflight 메시지 수 120,000개, FIFO 대기열의 경우 120,000개의 할당량이 있습니다. 메시지를 사용
aws.amazon.com
◆ 추가 컴퓨팅 서비스
- EC2 인스턴스 : 최소한의 손길로 프로비저닝해서 AWS에서 가동하고 실행할 수 있는 가상머신
기본적인 웹 서버 실행부터 고성능 컴퓨팅 클러스터까지 사용가능
사용사례에 따라 대안 필요 → 사용하다보면 플릿 직접 설정, 관리, 패치, 규모조정, 아키텍처 설계 확인 등 관리 필요
- 프로비저닝 : 클러스터에서 쓰지 않고 자원을 파악하고 필요한 순간에 실시간으로 할당해 서버를 생성하고 적절하게 제공하는 기술
- Amazon EC2에서 실행하려는 애플리케이션의 경우
- 인스턴스(가상서버)를 프로비저닝 함
- 사용자 코드 업로드
- 애플리케이션이 실행되는 동안 계속해서 인스턴스를 관리
(1) 서버리스 컴퓨팅
- 서버리스 : 코드가 서버에서 실행되지만 이러한 서버를 프로비저닝하거나 관리할 필요가 없다.
- 사용 시 유지·관리 대신 새로운 제품과 기능을 혁신하는 데 더 집중 가능
- 서버리스 애플리케이션을 자동으로 확장할 수 있는 유연성
→ 서버리스 컴퓨팅은 처리량 및 메모리와 같은 소비 단위를 수정하여 애플리케이션의 용량을 수정
(2) AWS Lambda
- Lambda : 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있는 서비스로, 사용자가 코드를 Lambda함수라는 곳에 업돌르 할 수 있게 도와주는 서비스
- 사용한 컴퓨팅 시간에 대해서만 or 코드를 실행하는 동안에만 요금 부과
- 사실상 모든 유형의 애플리케이션 또는 백엔드 서비스 코드 실행 가능! 관리할 필요가 없음.
ex) Lambda 함수로 업로드 되는 이미지의 크지를 AWS 클라우드에 맞춰 차동으로 조절하는 함수 있음.
→ 새 이미지를 업로드할 때 함수가 트리거 됨
※ 트리거 : 특정 상황이나 동작, 이벤트가 발생할 경우 자동으로 실행되는 기능을 정의
- AWS Lambda 작동방식
- Lambda에 코드 업로드 (Lambda는 트리거 감지시 코드가 관리형 환경에서 자동으로 실행하게 함)
- 이벤트 소스(AWS 서비스, 모바일 애플리케이션, HTTP 엔드포인트 등)에서 트리거 되도록 코드 설정
코드는 트리거될 때만 실행됨 - 사용한 컴퓨팅 시간에 대해서만 비용 지불
- 적용 : 웹 서비스의 백엔드나 요청처리, 백엔드 비용 보고 처리 서비스 등 각 처리를 완료하는데 15분이 걸리지 않는 빠른 처리
단, Lambda는 코드를 15분 미만으로 실행하도록 설계하여 딥러닝같은 장기 실행 프로세스에 적합하지 않다.
(3) 컨테이너: 애플리케이션의 코드와 종속성을 하나의 객체로 패키징하는 표준 방식을 제공
즉, 애플리케이션과 애플리케이션에서 실행해야 하는 모든 구성을 모아놓은 코드패키지
→ 보안성, 안정성, 확장성 요구사항이 매우 중요한 프로세스 및 워크플로에 적용
- 컨테이너의 작동방식
- 여러 컨테이너가 있는 단일 호스트 : 애플리케이션을 디버깅하고 컴퓨터 환경의 차이를 진단하는 데 시간 축소
- 수백 개의 컨테이너가 있는 수십 개의 호스트 : 큐모가 커지면 메모리 사용량, 보안, 로깅 등 모니터링 하는데 시간이 늘어남 (host는 EC2 인스턴스)
→ AWS에서 dorker 컨테이너를 사용할 때에는 단일 EC2 인스턴스 뿐만 아니라 클러스터라고 하는 인스턴스 모음에서 실행되는 컨테이너에서도 시작·중지·재시장·모니터링하는 프로세스가 필요! → 컨테이너 오케스트레이션 서비스
(4) 컨테이너 오케스트레이션 서비스 : 컨테이너식 애플리케이션을 배포, 관리, 확장하는 데 도움이 되는 서비스
- Amazon ECS (Amazon Elastic Container Service)
- AWS에서 컨테이너식 애플리케이션을 실행하고 확장할 수 있는 확장성이 뛰어난 고성능 컨테이너 관리 시스템
Dorker 컨테이너 지원함 - ※ Dorker : 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 소프트웨어 플랫폼
- AWS는 오픈소스 Dorker Community Edition 및 구독기반 Dorker Enterprise의 사용을 지원
- API 호출 사용해서 Dorker 지원 애플리케이션을 시작 및 중지할 수 있음
(5) AWS Fargate
- 컨테이너용 서버리스 컴퓨팅 엔진
(6) 추가컴퓨팅 서비스 정리
- EC2 : 기존 방식의 애플리케이션을 호스팅하고자 하고 Linux나 Widows 같은 기본 운영체제에 대한 완전한 액세스 원할 경우 적용
다음 내용
[aws] 기본 개념: 글로벌 인프라 및 안정성
이전 내용 [aws] AWS 기본 개념 및 클라우드 컴퓨팅AWS(Amazon Web Service) 소개 ◆ 클라우드 컴퓨팅 배포 모델- 클라우드 컴퓨팅 : IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용
puppy-foot-it.tistory.com
[참고]
aws 공식 홈페이지
수업자료