가상화 클라우드
가상화 클라우드는 기존 IT 산업에서 빈약한 인프라와 인프라 구축의 복잡성 때문에 등장했다.
이전 글에서 물리적인 컴퓨터에서 가상 머신을 사용해서 한 물리적인 머신 위에 여러 개의 가상 머신을 올리는 실습을 진행했다.
이렇게 가상화를 통해 여러 개의 가상환경을 만드는 방식을 점점 발전시켜 나가 아래처럼 최종적으로 가상머신을 다른 사용자에게 제공해줄 수 있는 서비스가 만들어지게 되었다.
이런 가상화는 컴퓨터의 성능을 책임지는 장치들 뿐만 아니라 네트워크도 수행된다.
위와 같이 가상화의 큰 발전으로 클라우드 제공 기업으로부터 가상머신을 제공받을 수 있다. 인터넷을 통해서 필요한 만큼 사용하고 사용한 만큼 지불하면 되기 때문에 매우 편리하다.
클라우드의 구분
클라우드는 일반 사용자에게 공개하는 여부에 따라 구분된다.
퍼블릭 클라우드
퍼블릭 클라우드는 클라우드를 제공해주는 업체로부터 누구든지 IT 인프라에 필요한 자원들을 대여받아 사용할 수 있는 클라우드를 말한다. 예를 들어, AWS, Azure, GCP, KT 클라우드 등이 있다.
프라이빗 클라우드
프라이빗 클라우드는 명칭 그대로 퍼블릭과 반대되는 개념이다. 기업 내부에서 계열사 또는 기업 자체 내에서 사용하기 위한 클라우드이다.
하이브리드 클라우드
하이브리드 클라우드는 퍼블릭과 프라이빗 클라우드를 혼용하는 방식으로 어떤 기업이 하이브리드 클라우드를 사용한다면 On-premise에 있는 클라우드를 사용하다가 자원이 모자를 때 퍼블릭 클라우드를 빌려 같이 쓰는 방식을 예로 들 수 잇다. 즉, 온 프레미스(프라이빗 클라우드) + 퍼블릭 클라우드
On-premise는 프라이빗 클라우드와 비슷한 개념이다. 온 프레미스는 클라우드라고 지칭할 수도 있지만 클라우드가 아니더라도 특정기업이 내부에서 사용하는 서버라고 생각할 수 있다.
멀티 클라우드
멀티 클라우드는 2개 이상의 서로 다른 클라우드를 함께 사용하는 방식으로 예를 들면, AWS + Azure, AWS + KT 클라우드 와 같이 퍼블릭 클라우드를 혼용해서 사용한다.
클라우드 사용의 장점
클라우드를 사용하면 어떤 IT 인프라를 구축할 때 서비스 규모를 미리 예측해서 서버를 따로 구매하지 않아도 되며, 사용한 만큼만 부과되기 때문에 비용 절감의 효과가 있다. 또한, Auto Scaling과 같은 기능을 지원해주기 때문에 트래픽을 예측하지 않아도 간편하게 자동적으로 확장, 축소가 가능하다.
이러한 장점들 때문에 사용자는 비즈니스에만 집중할 수 있고 해외에 서비스를 진출시키는 것도 간편하다.
AWS 기본 서비스
AWS에서 제공하는 서비스는 너무너무 많아 모두 알고 넘어가기는 어렵다. AWS에서 수요가 가장 높고 기본적으로 입문하는 서비스들만 우선적으로 공부해보자.
EC2
EC2는 이전에도 봐왔었던 가상 서버 서비스이다. 즉, 가상 머신을 사용자에게 대여해주는 서비스인데 AWS는 사용자가 원하는 성능을 구현하기 위해서 다양한 인스턴스(instance)를 제공한다. AI, 빅데이터와 관련된 서비스를 구축하고 싶다면 고성능 GPU, CPU를, 단순한 웹서버 구현이라면 또 다른 자원을 제공하도록 설정할 수 있다.
인스턴스 타입은 다음과 같이 해석할 수 있다.
Security Group
보안 그룹은 사용자가 생성한 instance에 사용자가 지정한 유저들만 접근할 수 있도록 하는 일종의 방화벽이다. 보안 그룹 규칙에는 이름, 설명, 프로토콜, 포트번호 등이 있지만 대개는 포트 대역과 프로토콜로 유저의 접근을 제한한다.
In/Out 트래픽에 대해서 모두 각각 설정해줄 수 있다.
보안그룹은 다른 보안그룹의 instance로부터 통신을 받을 때 허용할 IP range대신 보안그룹(SG)을 지정해줄 수도 있다.
다른 보안그룹에서 오는 트래픽만을 받도록 설정할 수도 있기 때문에 보안그룹 통신에는 계층적인 네트워크 구조가 생기기도 한다.
위의 이미지를 보면 MyWebServers의 보안그룹 인스턴스들은 외부 트래픽을 받도록 보안그룹 규칙을 작성했기 때문에 외부에서 접근할 수 있지만 MyBackends의 인스턴스들은 MyWebServers의 인스턴스에서 오는 트래픽만을 받을 수 있도록 보안그룹 규칙을 생성했기 때문에 계층적인 구조가 생성되었다.
MyWebServers SG: HTTP 프로토콜의 TCP 방식으로 80번 포트로 접근하는 모든 외부 트래픽은 접근이 가능하다.
MyBackends SG: MyWebServers SG의 source에서 2345 포트 번호의 트래픽만을 받을 수 있도록 설정
VPC(Virtual Private Cloud)
VPC는 사용자가 정의한 가상 네트워크 환경을 뜻하는데, 이 환경에서 각각의 instance들은 VPC별로 구분되어 외부로부터의 접속을 큰 집단으로 분할하여 받게 되어 복잡성을 줄일 수 있다.
예를 들어 위와 같이 클라우드 내에 여러가지 인스턴스들이 존재한다면 각각의 인스턴스들은 개별로 외부의 접근이 가능하며 인스턴스들끼리도 서로 접근한다면 엄청나게 많은 네트워크 연결이 발생해 복잡도가 커지게 된다.
하지만 위처럼 클라우드에서 VPC를 적용한다면 각각의 VPC에서 대표로 외부의 접근을 받고 이를 사설 ip로 각 인스턴스에 전달(포트 포워딩)할 수 있기 때문에 복잡도가 크게 낮아지고 보안성도 향상된다.
더불어 VPC별로 각각의 네트워크 설정을 사용해 VPC마다 각각의 다른 설정을 줄 수도 있다.
Subnet
서브넷은 VPC안에서 더 많은 네트워크망을 가지기 위해서 사용되는 개념이다.
VPC가 가지는 IP Range내에서 CIDR 규칙을 따라 VPC IP range보다는 작게 만들어줄 수 있다.
서브넷을 사용하지 않으면 하나의 인스턴스가 관리하는 IP가 너무 많아지기 때문에 서브넷을 사용해서 각각의 subnet IP range에 속하는 인스턴스끼리 관리해줄 수 있다.
추가로, Subnet 안의 인스턴스들은 서로 간의 통신이 가능하다.
라우팅 테이블과 라우터
인스턴스에서 발생하는 네트워크 접근은 라우팅 테이블과 라우터를 통해 이루어진다.
인스턴스에서 네트워크 요청이 발생하면 일단 VPC내의 라우터에게 데이터가 전송된다. 라우터에서는 라우팅 테이블을 참고하여 데이터를 어디로 전송할지 결정한다. 위의 경우에는 서브넷 A 내 인스턴스에서 발생하는 네트워크 요청은 172.31.0.0/16 목표가 범위 안의 요청일 때 local로 데이터를 전송한다는 의미이다. (172.31.0.0/16으로 전송한다는 의미)
하지만 외부로 데이터를 보내거나 받으려면 다른 기능이 필요하다. 그것이 인터넷 게이트웨이이다.
기본적으로 인터넷 게이트웨이가 없는 VPC는 외부통신이 불가하다.
인터넷 게이트웨이
인터넷 게이트웨이 (Internet gateway, IGA)는 인터넷과 서버가 통신할 수 있는 관문(gate)을 의미한다. 이 게이트웨이는 인스턴스들이 외부로부터 데이터를 받고 데이터를 전송할 수 있도록 하는 중간다리 역할을 한다.
위의 예시를 보면 외부 인터넷에서 데이터가 흘러 들어왔을 때, NAT Network에 의해 사설 IP로 변경되고 Load Balancer에 의해 어느 subnet으로 할당될 것인지를 결정하게 된다. 이 후 라우터로 들어가서 목표가 어느 해당 범위(destination)에 해당하는지 찾으면 타겟인 subnet으로 이동한다. (정확한 목표 IP는 데이터에 포함되어있으며 라우터는 대략 어느 위치인지만 알려준다.)
라우팅 테이블은 목표로 하는 곳이 local인지 외부 ip인지만 알려주는 이정표라고 생각하면 된다.
EBS (Elastic Block Store)
EBS는 EC2 instance와 연결되어 EC2의 데이터를 저장하는 것을 주목적으로 사용되는 storage이다. 비휘발성 스토리지이기 때문에 EC2를 중단하거나 종료하더라도 사라지지 않는다.
또 EBS 볼륨은 같은 Availability Zone에 있는 EC2에만 연결할 수 있다. AZ(Availability Zone, 가용 영역)는 나중에 더 자세히 설명하겠지만 지역 안에 물리적으로 서버들을 분리시켜놓은 영역이다.
다른 AZ에 있는 EC2에 연결하고 싶다면 snapshot을 생성해서 연결할 수 있다.
EBS 볼륨 유형은 SSD, HDD로 나눌 수 있으며, 사용자가 원하는 유형으로 선택하면 된다.
EBS Volume Snapshot
EBS 볼륨을 특정 시점으로 복사하여 백업하는 기능이다.
EBS 볼륨 스냅샷을 통해 EBS의 특정시점 데이터를 백업할 수 있으며 EC2의 AMI(Amazon Machine Image)를 저장하여 EC2도 백업 또는 배포할 수 있다.
스냅샷은 증분식 백업(incremental) 방식으로 저장되며 이미 스냅샷을 통해 볼륨을 저장했다면 이후에는 새로 생긴 데이터부분만을 저장하고 기존의 데이터는 이전 스냅샷을 참조하는 형태로 진행된다.
즉, snapshot을 사용해서 다른 EC2에 연결한다는 의미는 snapshot을 이용해 다른 AZ존에 EBS 볼륨을 저장하는 것이다.
AMI
AMI는 인스턴스를 배포할 때 사용할 수 있는 템플릿이다. AMI는 운영체제(OS), 서버, 어플리케이션을 포함하고 있다.
S3 (Simple Storage Service)
S3는 EBS처럼 저장장치 역할을 하지만 조금 다르다. S3는 언제 어디서나 원하는 양을 저장할 수 있고 외부에서 데이터를 검색하여 조회할 수 있다. S3는 Object 기반 Storage로 데이터가 하나 있을 때 이를 각각의 다른 AZ에 4번 이상 백업하여 가용성을 높인다. Object Storage 방식은 단일영역에 온전히 그 데이터를 저장한다.
가용성 (Availability)
가용성이란 워크로드를 사용할 수 있는 시간의 비율을 의미한다. 즉, 점검과 비슷한 문제가 발생하는 시간을 제외한 나머지 시간의 비율을 의미한다.
S3는 내구성이 강하고 가용성이 높으며 강력한 보안 기능(IAM과 연계된 권한을 관리)을 가진다.
또한 S3는 Git처럼 버전관리(Versioning) 기능을 제공해서 원하는 시점의 데이터를 불러올 수 있다.
S3는 object 데이터를 장르(?), 분야(?)에 맞게 버킷별로 저장하고 한 버킷에는 한계없이 저장할 수 있다. 한 object 데이터의 크기는 5TB까지 가능하다.
Block Storage와 Object Storage
EBS는 Block, S3는 Object Storage인데 각각의 저장방식에서 일부 다르다. 블록 스토리지는 파일이 균일한 블록에 저장되는 데이터 저장소를 의미한다. 가장 일반적인 저장소의 역할을 수행한다.
좀 더 자세하게 말하자면, 데이터를 블록 단위로 쪼개어서 별도로 ‘분리’ 해 저장하는 것을 의미한다. 그 후 해당하는 데이터 요청 시 나누어진 데이터를 다시 결합해 제공,응답한다. 주로 SAN(Storage Area Network) 환경에 배포된다. (컴퓨터에 HDD,SDD를 직접 꽃아 사용하는 것과 유사)
오브젝트 스토리지는 블록 스토리지와는 다르게 데이터 자체가 단독으로 구성된다. 고유 식별자가 존재하는 평면적인 주소 공간에 데이터 오브젝트 그 자체가 저장되므로 접근과 색인이 더 깔끔해진다. 클라우드 서비스에서 기본적으로 사용되고 있으며, 찾고 싶은 데이터의 key(고유 식별자)만 알고 있다면, index을 이용해 접근이 편해진다.
References
https://www.checkpoint.com/cyber-hub/cloud-security/what-is-aws-security-groups/
What is AWS Security Groups - Check Point Software
An AWS security group acts as a virtual firewall for your EC2 instances to control incoming and outgoing traffic.
www.checkpoint.com
[AWS] 가장쉽게 VPC 개념잡기
가장쉽게 VPC 알아보기
medium.com
https://joalog.tistory.com/106
AWS - 클라우드 스토리지 S3, EBS
https://joalog.tistory.com/85?category=876790 AWS란? / AWS 기초개념 잡기 AWS는 클라우드 컴퓨팅을 통해 웹사이트를 관리하는데 필요한 많은 기능을 제공하고 있다. 웹사이트를 운영하는데 꼭 필요한 서버와
joalog.tistory.com
https://sweetysnail1011.tistory.com/17
[AWS] 7. EBS와 S3의 차이점
ㅇ EBS 1. EC2 Instance 생성 시, 자동으로 하나가 함께 생성됨(Instance 삭제 시, 자동으로 삭제) 2. 하나의 Virtual Machine에 마운트하기 때문에 파일을 읽고 쓰는 속도가 빠름 3. 탄력적 볼륨 - 운영 중단 및
sweetysnail1011.tistory.com
S3의 스토리지 클래스에 대해 알아보기
S3를 매뉴얼하게 콘솔에서 업로드 하는일은 생각보다 많지않습니다. 대부분 API혹은 SFTP를 이용하게됩니다. 최근 콘솔에서 업로드 할 일이 생겼는데 역시 화면이 또 바뀌었습니다.(그만좀 바뀌어
medium.com
그림으로 이해하는 AWS 구조와 기술 - 5장 S3
5장 스토리지 서비스 Amazon S3 5.1 Amazon S3란: 사용하기 쉬우며 기능이 강력한 스토리지 서비스 - Amazon S3(Amazon Simple Storage Service)는 스마트한 객체 스토리지 서비스이다. - S3의 특징 확장성 : EC2와 마
slog2.tistory.com
'네트워크 및 클라우드' 카테고리의 다른 글
TCP/IP로 배우는 네트워크 1 (0) | 2023.01.19 |
---|---|
[Kubernetes] Kubernetes 구조 및 기능 (0) | 2022.11.06 |
[WAS 기초]3 Tier 구현 실습 (포트 포워딩, NAT Network, etc..) (0) | 2022.11.02 |
[리눅스와 웹서버 기초] 우분투, WAS (Web Application Server) (0) | 2022.11.01 |