가상화 및 클라우드 개요
가상화
가상화 기술이란
가상화 기술은 단일 물리적 하드웨어의 자원을 쪼개어 마치 여러 개의 하드웨어가 있는 것처럼 구현한 기술이다.
가상화 기술이 없다면 두 개의 서버를 구동하기 위해서는 서버 컴퓨터 두 대가 필요하지만, 가상화를 통해서 하나의 서버 컴퓨터로 자원을 분산하여 각각 서버를 구동할 수 있다.
이를 서버 가상화라고 하며 이 역할을 수행하는 논리적 플랫폼 소프트웨어를 Hypervisor라고 한다.
서버 외에도 네트워크, 스토리지, PC환경 등이 가상화의 대상이 될 수 있다.
가상화의 이점
기존 환경에서는 사내에 직접 서버실을 구축하여 관련 인프라를 직접 관리하였다.
이로 인해 다음과 같은 문제점이 발생할 수 있다.
- 규모가 커질 수록 극도의 복잡성 증가
- 규모의 경제 없이 빈약한 인프라에 의존
- 유지 관리를 위해 IT 예산의 상당수를 현상 유지에만 사용해야 함 -> 개선 및 경쟁력 강화에 불리
가상화를 이용하면 서비스를 위한 물리적인 관리 대상 수가 감소하고, 이로인해 전체적인 상면/전력/관리 비용을 절감할 수 있다.
가상화의 발전
Gen 1 : 클라이언트 하이퍼바이저 (hosted virtualization)
호스트 OS 환경에서 하이퍼바이저를 구동하는 방식이다.
하이퍼바이저 위에 또다른 가상환경(OS+어플리케이션)이 설치되므로 용량에서 다소 불리하다.
호스트 OS 없이 곧바로 서버 컴퓨터에 하이퍼바이저를 설치 및 구동할 수 있다.
동일 용량에서도 클라이언트 하이퍼바이저보다 더 많은 자원을 사용 가능하다.
Gen 3 : 가상 인프라
전체 인프라를 하나의 큰 데이터 센터로 구성하여 중앙 집중화 관리를 한다.
인프라 이용을 위해 네트워크를 사용한다.
Gen 4 : 클라우드
거대 IT 인프라 업체가 물리적인 자원을 운용하며 이용자에게 가상 환경을 제공한다.
클라우드
클라우드란
클라우드 : PC 데이터를 인터넷을 통해 중앙 PC 또는 서버에 저장하여 사용 및 저장하는 것
클라우드 컴퓨팅 : 인터넷을 통해 IT 리소스를 빌려 사용하고, 사용량에 따라 비용을 지불하는 서비스
클라우드 유형
퍼블릭 클라우드
클라우드 컴퓨팅 서비스를 제공하는 업체(CSP; Cloud Service Provider)에게 필요한 인프라 자원을 대여하여 사용한다.
CSP로는 AWS(Amazone), Azure, KT 클라우드, 네이버 클라우드 등이 있다.
프라이빗 클라우드
기업이 직접 클라우드 환경을 구축하여 기업 내부 및 계열사 등에서 사용한다.
특정 기업, 특정 사용자 끼리만 사용하는 방식
기업의 데이터센터에서 클라우드 환경을 운용한다.
하이브리드 유형
기존 온프레미스(On-premise)에 구성되어 있는 인프라와 Public Cloud를 혼용하여 함께 사용하는 방식이다.
온프레미스의 확장이 필요할 때 물리적인 자원을 구매하는 대신 Public Cloud를 활용하는 것이 비용측면에서 효율적이므로 고려할 수 있다.
멀티 클라우드
2개 이상의 서로 다른 클라우드를 함께 사용하는 방식을 말한다. (퍼블릭 + 퍼블릭, 프라이빗 + 프라이빗 또는 둘의 조합)
하나의 CSP에 종속되지 않기 위해 사용하거나, 특정 클라우드가 제공하지 않는 기능을 보충하기 위해 사용한다.
클라우드 컴퓨팅의 이점
- 초기 투자 비용을 절감 (서버 컴퓨터 구매 및 구축 비용)
- 저렴한 종량제 가격
- 온프레미스를 이용하면 서버 규모의 극히 일부만 사용하더라도 전체 비용을 지불해야 한다.
- 클라우드를 이용하면 원하는 만큼만 서버 자원을 사용할 수 있다.
- 탄력적인 운영 및 확장 가능
- 필요한 용량을 예측할 필요 없이 손쉽게 확장 및 반납이 가능하다.
- 기존 : 인프라 준비를 위해 수 주일 소요, 인프라를 축소하기 어려움
- 클라우드 : 인프라 준비를 위해 수 분 소요, 축소도 손 쉽게 가능
- 이로인해 시장 상황에 빠르게 대응할 수 있는 민첩성 확보가 가능하다.
- 비즈니스에만 집중 가능
- 서버 관리에 필요한 자원을 비즈니스에 집중해 보다 다양하고 많은 실험 및 개선 시도 가능
- 손 쉬운 글로벌 진출
- 글로벌 진출을 위해 새로운 데이터 센터를 구축할 필요 없이 CSP가 제공하는 해당 지역의 서버 자원을 대여하여 사용 가능
AWS(Amazone Web Service)
AWS는 전세계에서 가장 글로벌 이용자가 많은 CSP이다.
각 분야별, 도메인별로 200~300개 이상의 다양한 서비스를 제공한다.
AWS의 기본 서비스
EC2 (Elastic Compute Cloud)
EC2는 가상 서버 자원을 대여해주는 서비스이다.
다양한 운영체제를 선택 가능하고, 인스턴스 옵션을 통해 쉽게 자원의 확장/축소가 가능하다.
EC2 컴퓨팅 용량은 Virtual Machine(인스턴스)를 통해 제공된다.
- 인스턴스 옵션에서 컴퓨팅 리소스 설정 및 변경이 가능하다.
- 도메인에 따른 다양한 인스턴스 타입 제공
- 컴퓨팅 최적화, I/O 최적화, GPU 사용, 고용량 메모리 등
종량제 서비스로, 사용 시간에 따라 요금이 과금된다.
인스턴스의 종류
m
: 인스턴스의 종류
5
: 인스턴스의 세대
medium
: 인스턴스 사이즈 (클 수록 고용량, 고성능)
EC2 Security Group
EC2에 제공되는 일종의 가상 방화벽이다.
인바운드 및 아웃바운드 규칙을 통해 트래픽의 제어가 가능하다.
규칙에는 Name, Descripton, Protocol, Port range, IP address 등을 이용할 수 있다.
또한 인스턴스가 동작하는 중에도 규칙이 변경이 가능하다.
계층적인 네트워크 구조를 생성할 수 있다.
예를들어 웹서버 역할을 하는 인스턴스는 외부에 공개하여 사용자들이 접근할 수 있도록 하고, 백엔드 및 DB 역할을 하는 인스턴스는 오직 웹 서버와의 내부 통신만 가능하도록 허용하는 등의 방법이 있다.
EC2 Auth
표준 SSH RSA Key Pair를 이용한 인증이 가능하다.
- Public Key와 Private Key로 구성
- Private Key는 AWS에 저장되지 않음
- Private Key를 통해 인증 통과
Linux 최초 로그인 시에 Key Pair가 생성되며, 이후 재생성 할 수 없으므로 Private Key File은 엄중히 관리해야 한다.
VPC (Virtual Private Cloud)
AWS가 제공하는 가상 네트워크 환경 서비스이다.
네트워크의 보안을 강화하고 부족한 IP 자원의 효율적인 관리 기능을 제공한다.
VPC 생성 과정
- Region, IP 대역 결정
- Availability Zone(AZ)에 Subnet 생성
- 라우팅 설정
- 트래픽 통제
1. IP 대역 결정
IPC 대역은 VPC를 구성하는 가장 중요한 요소이자 가장 먼저 고려하는 것이다.
IPC 대역 설정을 위해 CIDR(Class Inter-Domain Routing) 기법을 이용하는데 우선 CIDR의 근간이 되는 IP Class에 대해 알아보자
IP Class
255.255.255.255
와 같은 형식의 IP를 이진수로 표현하면 총 32개의 비트로 구성 (자리당 8비트)
- 이 중 앞에서 몇개까지를 Network로 사용할 것인지 결정 → 남은 자릿수를 Host로 사용
- A 클래스는 앞에서 8개, B 클래스는 16개, C 클래스는 24개를 Network 주소로 사용
- A 클래스에 가까울 수록 Network 할당 가능한 수가 증가
IP 클래스의 문제점은 class 별로 할당 가능한 IP 호스트의 수가 너무 차이가 난다는 것이다. 300개의 주소 할당이 필요해서 C Class를 사용할 수 없는데, B Class를 이용하면 너무 낭비가 심해진다.
CIDR
- Subnet mask를 활용하여 기존 IP Class의 Network 부를 조금 더 잘게 쪼개어 사용
- Class 없이 Network로 사용할 수(CIDR 값)을 선언하여 사용 가능한 Private IP 범위를 조절
- 보다 운용 환경에 최적화된 만큼의 Host수를 사용가능
- 단, VPC를 한번 생성하면 CIDR 값의 변경이 불가능하므로 추후 확장 및 연계 가능성을 고려하여 설정 필요
- VPC CIDR은 16 ~ 28 bits로 설정 가능
이렇게 보다 효율적인 Host 수의 운용이 가능하다.
2. AZ에 Subnet 생성
Subnet이란 VPC의 IP Range를 다시 적절한 단위로 분할하여 사용하는 것이다.
- 172.16.0.0/16의 IP Range를 쪼개어 사용
- subnet1 : 172.16.0.0/24
- subnet2 : 172.16.1.0/24
- subnet3 : 172.16.2.0/24
- Subnet 별로 경로를 제어하여 트래픽을 분리해 각 Subnet 별로 받을 수 있도록 네트워크 레벨에서 격리할 수 있다.
VPC 생성 시에는 자동으로 Main Routing Table이 생성된다.
Routing Table을 통해 VPC 내부 간 상호 통신은 물론 외부 인터넷망, 온프레미스, VPN 등 필요한 통신을 연결할 수 있다.
이를 위해서는 Custom Routing Table을 생성 및 연결하여 사용해야한다.
각 Subnet은 하나의 Routing Table과 연결할 수 있다.
AWS 스토리지 서비스
EBS (Elastic Block Storage)
EBS는 AWS가 제공하는 가상 Block Storage 대여 서비스이다.
Block Storage는 로컬 스토리지를 말하며 서버컴퓨터의 보조기억장치(HDD, SDD)가 여기에 해당한다.
EBS의 특징
- 가상 디스크 하나를 Volume이라고 함
- 사용이 쉽고 확장이 가능한 고성능 블록 스토리지로, EC2 용으로 설계
- SSD, HDD 기반 및 성능 선택 가능
- API 기반(명령어)으로 불륨 생성, 연결, 삭제 가능
- 네트워크를 통한 연결
- EBS 볼륨 하나를 하나의 인스턴스에 연결하여 사용
- 언제든 해체 및 연결이 가능
- 디스크 추가 및 Scale Up이 자유로움
- EBS 볼륨과 인스턴스는 같은 Availability Zone(AZ)에 있는 경우에만 연결 가능 (데이터 전송속도를 위해)
- Snapshot 생성 및 복제를 통해 다른 AZ, 다른 리전으로 이동이 가능
EBS 선택 시 중요 고려 지표
- 가상 디스크의 크기
- IOPS(Input/Output per Second)
- 초당 입출력 count 지표
- 데이터 입출력에 대한 대표적인 성능지표
- Throughput (MiB/S)
- 처리량 지표
- 초당 데이터 처리량에 대한 성능 지표
- 비용
EBS Snapshot
- EBS의 특정 시점을 기준으로 복사하여 백업하는 기능
- Snapshot을 통해 EBS 볼륨을 생성하거나, AMI로 변환하여 인스턴스를 배포하는데 사용
- AMI(Amazone Machine Image)는 인스턴스를 배포 가능하도록 패키징한 이미지 파일을 말한다. os 설치 시 사용하는 iso와 동일한 기능을 하며, AMI은 os 뿐만 아니라 시스템 서버, 어플리케이션까지 묶여있는 형태이다.
- Snapshot은 S3에 저장되며, 최초 스냅샷 후에는 증분 백업을 통해 백업이 이루어짐 → 기존 스냅샷을 포함한 모든 스냅샷을 참고하여 복원
- S3는 모든 AZ, 리전에서 사용할 수 있어 AZ간, 리전간 복사 가능
S3
S3는 AWS에서 제공하는 Object Storage 서비스이다.
Object Storage는 데이터를 객체라는 비정형 형식으로 저장 및 관리하는 스토리지를 말한다.
일반적인 파일시스템과 달리 계층이 존재하지 않기 때문에 확장이 매우 쉽고 메타데이터를 이용한 검색이 빠르다.
S3 특징
- 웹 서비스 기반 인터페이스 제공 (REST API 기반 데이터 생성 / 수정 / 삭제)
- 고가용성 내구성 제공
- 무제한 용량을 제공하되, 사용한 만큼 과금 발생
- 강력한 보안 기능 (IAM과 연계)
- Versioning 기능을 제공하여 변경사항의 추적 및 복원이 용이하다.
- 단 그만큼 용량을 사용하고, 복제 및 저장이 빈번하게 일어나므로 비용이 발생한다.
- 주요 용도
- Backup & Archiving
- 빅데이터 분석
- Cloud-native Application Data
- 정적 웹사이트 호스팅
S3 Bucket
S3는 Bucket이란 컨테이너(저장소)에 데이터를 저장한다.
- Object는 반드시 하나의 Bucket에 속해야 함
- AWS Account 당 최대 100개 Bucket까지 생성할 수 있으며, 버킷당 object는 무제한 저장 가능
S3 Object
- Object 하나의 최대 크기는 5TB
- Object는 데이터와 메타데이터로 구성
- 메타데이터 : Object를 설명하는 key-value 페어 형태의 데이터
- 고유 번호, 버전, Content-Type 등의 정보가 포함
AWS 고가용성 서비스
가용성이란
- 가용성 : 워크로드(서비스, 애플리케이션 등 제공하는 것들)을 사용할 수 있는 시간의 비율
- 가용성이 99%이면 365일 중 3.65에 대해서는 사용을 보장할 수 없음을 의미한다.
- Amazon S3의 경우에는 99. 9(x11)의 매우 높은 가용성을 제공한다.
- 고가용성은 말 그대 높은 가용성을 말한다.
- 장애 또는 고장이 나더라도 복구를 해서 서비스를 지속할 수 있는 능력이 중요하다.
- AWS는 고가용성을 위해 다양한 서비스를 제공한다.
AZ 분산 배치
일반적으로 Region 당 2~3개가 존재하는 AZ는 리전 내에 개별적으로 존재하는 데이터 센터이다.
일반적으로 AZ 별 데이터 센터는 서로 100km 정도 거리 내에 존재한다.
AZ 분산 배치란 특정 데이터센터(AZ)에 장애가 발생하는 경우, 서비스에도 장애가 발생하는 것을 예방하기 위해 동일 역할을 수행하는 인스턴스를 여러개의 AZ에 분산배치하는 것이다.
이를 통해 가용성을 높일 수 있다.
ELB (Elastic Load Balancer)
Load Balancer
분산 배치 형태에서 발생하는 트래픽을 특정 알고리즘 기반으로 각 서버에 골고루 분산시켜주는 장비를 말한다.
AWS에서는 ELB(Elastic Load Balancer)라는 서비스를 통해 가상 로드밸런서를 제공한다.
ELB의 특징
- 각 백엔드 인스턴스에 대한 Health Check를 수행하여 가용 가능한 인스턴스에만 트래픽 전달할 수 있다.
- Traffic이 증가할 경우 자동으로 Scale-out 기능을 지원한다.
- Scale-out이란 트래픽 증가 시 서버를 증설하여 각 서버가 처리하는 부하를 낮추는 기법을 말한다.
- 반대로 트래픽 감소시 서버 자원을 반납하는 방식을 Scale-in이라 한다.
- ELB 생성시 어느 AZ에 로드밸런스를 배치할지 결정할 수 있다. (배치하지 않은 AZ는 트래픽 전달이 이루어지지 않음)
ELB Type
- ALB : 웹서비스 트래픽을 처리에 특화된 L7 로드밸런서
- URL 기반으로 health check (status code가 200인지 확인)
- NLB : TCP, UDP 트래픽 처리에 특화된 L4 로드밸런서
- TCP/UDP port alive check를 통한 health check
- GLB : 가상 어플라이언스 관리를 위한 Gateway용 로드 밸런서
ELB 알고리즘
- Round Robin : 각 서버가 한 번씩 돌아가면서 트래픽을 처리하는 형식
- Weights RR : 서버별로 성능이 다를 경우 성능에 맞게 가중치를 두어 Round Robin을 수행
Cross-Zone Load Balancing
- Cross-Zone Load Balancing이란 AZ 별로 배치된 서버의 수가 다를 경우 이를 고려하여 트래픽을 분산하는 것이다.
- Zone a에 서버가 2개, Zone b에서 서버가 1개 있을 경우 Cross-Zone LB가 활성화 되면 1:1:1로 처리 비활성화 되어있다면 1:1:2로 처리하게됨 (a:b가 1:1)
- ALB는 Cross-Zone LB가 기본 활성화 (비활성화 가능), NLB는 기본 비활성화
ASG (Auto Scaling Group)
ASG는 Scale-out과 Scale-In을 자동으로 수행해주는 서비스이다.
- 저동 설정 정책, Scaling 대상 등을 상세히 설정 가능
- Desired Capacity : scale 기준
- Min/Max size : 최소/최대 인스턴스 설정
- Target Group : 로드밸런서가 트래픽을 분산하는 인스턴스의 수
- CloudWatch라는 모니터링 서비스를 통해 Auto Scaling의 동작 현황을 실시간으로 확인 가능