Module 1. Amazon Web Service 소개
서버, 클라이언트?
서버 : 서비스를 제공하는 컴퓨터 시스템, AWS 에서의 가상 서버인 Amazon Elastic Cloud Compute(Amazon EC2)
클라이언트 : 사람이 컴퓨터 서버에 요청을 보내기 위해 상호 작용하는 웹 브라우저 또는 데스크톱 애플리케이션
클라우드 컴퓨팅 개념 쉬운 설명 : 어디인지 모를 구름 너머 저 어디에서 computing을 가져다 쓰는 것
클라우드 컴퓨팅이란? 클라우드 컴퓨팅은 인터넷(network)를 통하여 내-외부 고객들에게 확장성(Scalable) 있고 탄력적(Elastic)인 IT 서비스가 제공되는 방식
클라우드 컴퓨팅을 잘 정의하는 4가지 핵심 키워드
1. Network
2. IT Service
3. Scalable - 리소스 조절 가능 / 리소스가 남으면 줄이고 부족하면 늘리고
4. Elastic - 시간에 자유로움 / On-Premise(물리서버) 환경 보다 빠르게 실행 가능
시스템 운영 방식 차이 ( On-Premise VS 클라우드 서버)
On-Premise(물리서버) / 클라우드 컴퓨팅 이전 방식 |
클라우드 서버 | |
초기 도입비용 | 데이터 센터, 물리적 서버에 대규모 선행 투자 필요 | 사용하는 컴퓨팅 서비스에 대해서만 과금 |
활용성 / 효율성 | 비즈니스 시작 이전에 서비스 사용 용량 이론적으로 산정 필요, 계산된 서비스 사용 최대용량에 맞게 시스템 설계(CPU, Memory, Storge, Network) 이루어져 평상시 컴퓨팅 자원이 낭비됨. | -탄력적 인프라 설계 가능 -여러 리전에 배포함으로 더 빠르게 고객에게 서비스 가능 -워크로드가 증가하면 확장, 줄어들면 불필요한 리소스 종료 (Auto Scaling 기능 사용) |
인력 운영 | 시스템 엔지니어 업무 증대 (서버 운영 및 관리 / 전산실 유지관리 등) | 시스템 엔지니어 업무 감소 |
구축 기간 | 장비 수급 등 여러 요건에 의해 오래 걸림 | 짧음 (사용할 하드웨어 스펙 클릭하고 생성) |
확장성 / 민첩성 | - 클릭 몇 번으로 세계 곳곳 리전에 App 손쉽게 배포 가능 - 낮은 비용으로 새로운 비즈니스 요구사항을 실험 |
|
비용 | 일반적으로 on-premise 환경에서 자원 사용율은 시스템 운영 가능량의 25%정도 밖에 안된다고 함 | Auto Scaling 기능, 상황에 맞게 언제든 증설 & 축소 할 수 있어서 저렴함. |
가상화(Virtualization)
- 가상화 기술이란 하드웨어에 종속된 리소스를 추상화하여 서버, 스토리지, 네트워크 등의 소프트웨어 IT 서비스를 생성하는 솔루션을 뜻한다.
- 하이퍼바이저(hypervisor)라 불리는 소프트웨어가 하드웨어에 직접 연결되며 1개의 시스템을 가상 머신(VM)이라는 별도의 고유하고 안전한 환경으로 분할하고 필요에 따라 각 VM에 컴퓨팅 리소스를 할당한다.
- 가상화의 대상이 되는 컴퓨팅 자원은 프로세서(CPU), 메모리(Memory), 스토리지(Storage), 네트워크(Network), 그래픽 처리 장치(GPU)가 있으며, 이들로 구성된 서버나 장치를 가상화 함으로써 높은 수준의 자원 사용률과 분산 처리 능력을 얻을 수 있다.
- 가상화는 클라우드 컴퓨팅을 가능하게 하는 주요 기술 중 하나로, 클라우드 공급업체는 가상화를 사용하기 때문에 하나의 서버에서 여러 고객에게 서비스를 제공할 수 있다.
Traditional Server Architecture Virtualized Server Architecture
OS의 역할 : 하드웨어 자원을 App으로 할당 Hypervisor의 역할 : 하드웨어를 VM으로 할당
Non-Virtualized System | Virtualized System |
1개의 OS가 모든 하드웨어 자원을 관리한다. | 1개의 하드웨어 상에서 여러 개의 가상 머신(VM)을 구동할 수 있다. |
1개의 머신에서 여러 개의 App을 구동하는 것은 충돌 이나 특정 무거운 App이 자원을 많이 점유하고, 나머지 App은 굶는 등의 문제를 발생시킬 수 있다. | 가상화를 한다면 리소스를 격리시켜서 할당 할 수 있기 때문에 다른 App에 영향을 받지 않고 같은 머신에서 여러 개의 App을 안정적으로 돌릴 수 있다. |
가상화 기술 활용 적용 예시
구체적으로, 각각 용도가 다른 3개의 물리 서버가 있다고 가정해 봅시다. 하나는 메일 서버이고, 다른 하나는 웹 서버이고, 나머지 하나는 내부 레거시 애플리케이션을 실행하는 서버입니다. 각 서버는 잠재적인 실행 용량의 일부에 불과한 30% 용량만 사용되고 있습니다. 그러나 내부 운영을 위해서는 레거시 애플리케이션이 계속 필요하므로 레거시 애플리케이션과 이를 호스팅하는 세 번째 서버를 유지해야 합니다.
전통적으로는 위의 이론을 따릅니다. 1개의 서버와 1개의 운영 체제, 1개의 태스크와 같이 개별 서버에서 개별 태스크를 실행하는 것이 더 쉽고 안정적인 경우가 많습니다. 1개의 서버로 여러 개의 태스크를 처리하기란 쉽지 않았습니다. 그러나 가상화를 사용하면 메일 서버를 2개의 고유한 서버로 분할해 독립적인 태스크를 처리하고 레거시 애플리케이션을 마이그레이션할 수 있습니다. 마찬가지로 하드웨어도 더 효율적으로 사용할 수 있습니다.
보안을 고려하여 첫 번째 서버를 다시 분할해 다른 태스크를 처리하면 사용률을 30%에서 60% 또는 90%까지도 높일 수 있습니다. 이렇게 하고 나면 이제 빈 서버를 재사용해 다른 태스크를 처리하거나 모든 서버를 사용 중지해 냉각 및 유지관리 비용을 줄일 수 있습니다.
가상화 내용 참조 링크
- https://mangkyu.tistory.com/86
- https://www.redhat.com/ko/topics/virtualization/what-is-virtualization
AWS Five Essential Characteristics
- 주문형 셀프서비스 (On-Demand Self-Service)
: 사용자가 별도의 기술습득 없이 필요할 때 온라인으로 즉시 사용
- 광대역망 액서스 (Broad Netword Access)
: 네트워크를 통한 컴퓨팅 자원 접근(Any time, Any Place, Any device)
- 자원 공동관리 (Resource Pooling) / (cpu, memory, disk, n/w)
: 다중 임대 모델을 통한 자원 할당(Multi-Tenancy)
- 빠른 요구탄력성(Rapid Elasticity) / (가상화로 인하여 가능)
: 비즈니스 상황에 따른 컴퓨팅자원의 탄력적 사용(Flexibility, Scalability)
- 도수제 (Measured Service)
: 서비스를 사용한 만큼 비용 지불 (Pay-Per-Use)
Cloud Computing Limitations
-Security
-Privacy / 고객의 개인정보를 클라우드 서버에 저장해도 되는가?
-Vender Lock-in / 특정 클라우드 컴퓨팅 서비스에 묶이는 현상
Module 2. 글로벌 인프라
글로벌 인프라
- AWS 글로벌 클라우드 인프라는 업계에서 가장 안전하고 광범위하고 안정적인 클라우드 플랫폼으로, 전 세계 데이터 센터를 통해 완전한 기능을 갖춘 200가지가 넘는 서비스 제공
- 클릭 한 번으로 전 세계 모든 위치에 애플리케이션 워크로드를 배포하거나 한 자릿수 밀리 초의 지연 시간으로 최종 사용자에 더 가까운 위치에 특정 애플리케이션을 배포해야 하는 경우 언제 어디서나 필요할 때 AWS의 글로벌 인프라를 사용 가능
- AWS는 전 세계적으로 수백만 명의 활동 고객과 수만 개의 파트너로 이루어진 가장 큰 규모의 가장 역동적인 에코시스템을 갖추고 있으며, 스타트업, 엔터프라이즈, 공공 부문의 조직을 비롯해 규모에 상관없이 거의 모든 산업의 고객이 AWS에서 다양한 사용 사례를 운영
AWS 글로벌 인프라 맵
- 모든 리소스를 보관하는 거대한 데이터 센터 하나를 보유하는 것은 바람직하지 않음
- AWS 클라우드는 전 세계 25개의 지리적 리전 내 81개의 가용 영역을 운영하고 있으며, 앞으로 호주, 인도, 인도네시아, 이스라엘, 스페인, 스위스 및 아랍에미리트(UAE)에 7개의 AWS 리전과 21개의 가용 영역을 추가할 계획
리전 선정 기준(추정?) - 보안, 가용성, 성능, 국제적 입지, 확장성, 유연성
https://aws.amazon.com/ko/about-aws/global-infrastructure/?hp=tile&tile=map
리전(Region)
- 리전은 AWS의 서비스가 위치하는 물리적인 장소로 전세계적으로 리전들이 분포
- 각 리전에는 애플리케이션을 실행하는 데 필요한 컴퓨팅, 스토리지 및 기타 모든 서비스가 구비된 다양한 데이터 센터가 존재
- 리전은 AWS에서 제어하는 고속 광섬유 네트워크(별칭 backbone)를 통해 다른 리전에 연결
- 각 리전들은 다른 리전과 격리되도록 설계되어 있어 이를 통해 가장 강력한 내결함성 및 안정성 보장
AWS 리전 선택시 고려사항 (리전마다 차이가 있음)
1. 규정 준수
2. 근접성
3. 기능 가용성 - 내가 찾는 기능이 해당 리전에 존재하는지?
4. 요금 - 세금 등 여러 요인으로 리전마다 가격이 다를 수 있음
가용영역(Availability Zone, AZ)
- 각 리전은 가용 영역이라고 알려진 격리된 위치(데이터 센터)를 여러 개 보유
- 일반적으로 리전에는 가용 영역이 보통 두개 이상(서울 4개) 구성되어 있으며, 가용 영역 간에는 고속의 망으로 연결
- 복수의 가용 영역에 걸쳐 인스턴스를 배포했을 때 하나의 인스턴스에 장애가 발생한 경우를 대비해, 다른 가용 영역의 인스턴스가 장애가 발생한 인스턴스 관련 요청을 처리할 수 있도록 애플리케이션을 설계 권장
- 인스턴스를 실행할 때 사용자가 직접 가용 영역을 선택하거나 AWS가 사용자를 위해 가용 영역을 선택
리전 / 가용영역 정리
1. 리전은 논리적인 구조
2. 가용영역은 실제 물리적인 구조
3. 리전은 가용영역들의 구성으로 이루어져 있다.
엣지 로케이션(Edge Location) / 쉽게 말하면 캐시서버
- Amazon CloudFront : 짧은 지연 시간과 빠른 전송 속도로 데이터, 동영상, 애플리케이션 및 API를 전 세계 고객에게 안전하게 전송하는 고속 콘텐츠 전송 네트워크(Content Delevery Network, CDN) 서비스로 콘텐츠에 대한 사용자의 요청은 가장 가까운 엣지 로케이션으로 자동 라우팅 되어 빠르게 최종 사용자에게 전송
- 엣지 로케이션은 CloudFront의 케싱 콘텐츠가 위치하는 곳
- 엣지 네트워킹 위치에 구성되며, AWS 네트워크 백본을 통해 전 세계적으로 확장 및 연결되어 이를 통해 사용자에게 보다 안전하고 뛰어난 성능과 가용성을 보장 지원
https://aws.amazon.com/ko/about-aws/global-infrastructure/regions_az/
// Amazon EC2 FAQ - ec2관련 거의 모든 FAQ 잘 나와 있는 듯
https://aws.amazon.com/ko/ec2/faqs/
Module 3. Elastic Compute Cloud(EC2)
가상 머신으로의 EC2
- EC2는 가상화기술을 사용하여 AWS에서 관리하는 물리 서버 위에서 실행
- EC2인스턴스를 가동할 때는 전체 호스트를 직접 소유할 필요 없다. -> 여러 인스턴스가 하나의 물리 서버 공유 (가상화로 가능함)
- 하드웨어를 공유 = 멀티테넌시 (Multitenancy)
※ 클라우드 컴퓨팅에서는 서로 다른 고객이 서버 리소스를 나누어 사용하는 호스팅을 멀티테넌시라고 부르기도 함.
https://www.redhat.com/ko/topics/cloud-computing/what-is-multitenancy
- 하이퍼바이저는 이러한 멀티 테넌시 조정하고 가상 머신을 서로 독립적으로 분리하는 책임 ->AWS에서 관리
->EC2는 탁월한 수준의 유연성과 제어 기능
Amazon Elastic Compute Cloud (Amazon EC2)란?
- Amazon EC2는 AWS 클라우드에서 안전하고 크기 조정이 가능한 컴퓨팅 용량을 제공하는 웹 서비스
-> 이용자는 높은 초기비용, 유지보수등의 다양한 제약에서 벗어나서 단시간안에 여러 가지 프로세서, 스토리지, 네트워킹, 운영 체제, 구매 모델을 선택하여 생성할 수 있으며 사양변경, 삭제도 쉽게 실행할 수 있는 AWS 서비스
- 하드웨어에 선 투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포
-> AWS 데이터센터 구축 / 데이터 센터 보호 / 서버 구매 / 서버 설치 / 운영체제 설치
-> 사용자가 원하는 EC2인스턴스를 요청하면 몇 분 안에 바로 사용 가능 (elastic 하다 == 시간에 탄력적이다.)
-> 워크 로드 실행이 완료되면 인스턴스 사용을 중지하고 더 이상 원하지 않으면 종료(Terminate, 삭제) 가능
-> 인스턴스가 실행 중 일 때 사용한 컴퓨팅 시간 만큼만 과금 (인스턴스가 중지 또는 종료된 상태에서는 과금되지 않음)
// 자습서: Amazon EC2 Linux 인스턴스 시작하기
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html
// 인스턴스 유형 나와있는 페이지
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/instance-types.html
ㅇㅇ
용어정리
인스턴스 : AWS 클라우드의 가상 서버
Amazon EC2를 사용하여 인스턴스에서 실행되는 운영 체제와 애플리케이션을 설정하고 구성할 수 있다.
이 인스턴스는 Amazon EBS 지원 인스턴스(루트 볼륨이 EBS 볼륨임을 의미)이다.
인스턴스가 실행되는 가용 영역을 지정하거나 적합한 가용 영역을 Amazon EC2에서 자동으로 선택할 수 있다.
인스턴스를 시작할 때 키 페어와 보안 그룹을 지정하여 인스턴스 보안을 설정한다.
인스턴스에 연결할 때는 인스턴스 시작 시 지정한 키 페어의 프라이빗 키를 지정해야 한다.
나머지 구체적인 인스턴스 시작하는 단계 설명은 위 EC2 Linux 인스턴스 시작하기 공식 문서의 순서 참조
Default 생성 : Security Group, Amazon EBS / EC2만 생성해도 File System이 설치될 만큼의 EBS를 자동으로 붙인다.
※ 리눅스 : 8기가, 윈도우 30기가
// 인스턴스 및 AMI
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html
Amazon EC2 인스턴스와 AMI
-AMI (Amazon Machine Image) / AWS에서 돌아가는 머신의 이미지 : 소프트웨어 구성이(하드웨어 스펙X) 기재된 템플릿 (예: 운영 체제, 애플리케이션 서버, 애플리케이션)
-인스턴스(Instance) 는 AMI의 사본으로, 클라우드에서 실행되는 가상 서버
-하나의 AMI로 여러 인스턴스 실행 가능
-인스턴스는 중단하거나 최대 절전 모드로 전환하거나 종료할 때까지 또는 오류가 발생하지 않는 한 계속 실행
-인스턴스가 실패하면 AMI에서 새로 실행 가능
위 그림처럼 AMI를 인스턴스로 만들 수 있고, 역으로 instance로 AMI를 만들 수 있다. (EBS 스냅샷으로 AMI 생성)
//유료 ami
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/paid-amis.html
//AWS marketplace 링크
https://aws.amazon.com/marketplace
AWS Marketplace
-AWS 아키텍처에서 실행되는 타사 소프트웨어를 검색, 배포, 관리하는 단계를 간소화하는 큐레이트된 디지털 카탈로그
-광범위한 솔루션을 빠르고 안전하게 배포하고 총 소유 비용을 절감
..
..
..
//Amazon EC2 인스턴스 유형 링크
https://aws.amazon.com/ko/ec2/instance-types/
Amazon EC2 인스턴스 유형
- 각 사용 사례에 맞게 최적화된 다양한 인스턴스 유형을 제공합니다.
- 인스턴스 유형은 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합으로 구성되며, 애플리케이션에 따라 적합한 리소스 조합을 선택할 수 있는 유연성을 제공합니다.
- 각 인스턴스 유형은 하나 이상의 인스턴스 크기를 포함하고 있으므로 목표로 하는 워크로드 요구 사항까지 리소스를 확장할 수 있습니다.
AWS EC2상태
Pending: 인스턴스가 구동하기 위해 준비중인 상태, 요금 미청구
Running: 인스턴스를 실행하고 사용할 준비가 된 상태, 요금 청구
stopping: 인스턴스가 중지 모드로 전환되려는 상태, 요금 미청구
Shutting-down: 인스턴스가 종료할 준비중인 상태, 요금 미청구
Terminated: 인스턴스가 종료된 상태, 요금 미청구
Elastic IP / 일종의 공인 ip
- EC2에 설정되는 네트워크 인터페이스의 공인 IP
- EC2가 기본적으로 갖는 Public IP와 private IP 등과는 다른 것 (EC2 재기동 할 때 마다 IP 계속 바뀜)
- Elastic IP를 사용하면 ec2로 하여금 중지되었다가 다시 시작하더라도 고정된 공인 IP를 사용하게 할 수 있음
Key Pair
-EC2는 SSH 접속 시 Key Pair라고 하는 퍼블릭 키 암호화 기법을 사용하여 접속하며 로그인 정보를 암호화 및 해독함
-Key Pair 분실 시 접속 불가
-또한 접속 시 OS별로 접속 name이 다름 (Linux: ec2-user 등)
Amazon EC2 확장성(scalability) 탄력성 (elastic ability)
- 확장성을 위해서는 필요한 리소스만으로 시작하고 확장 및 축소를 통해 수요 변화에 자동으로 대응하도록 아키텍처를 설계
-> 이러한 리소스의 탄력적인 확장을 자동으로 수행 -> Amazon EC2 Auto Scaling
마지막에 EC2 인스턴스 생성해보는 것까지
댓글