1. aws 인프라 구조
a. ON-Premise : 기업의 서버를 클라우드 같은 원격 환경에서 운영하는 방식이 아닌, 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식이다. 회사에서 서버 시설을 만들고 유지 보수하기 때문에 비용이 많이 든다. 회사 자체에서 서버를 관리하기 때문에 보안성이 좋다.
b. Colocation Facilitie : IDC (Internet Data Center)등으로 불리기도 하는 데이터센터, 서버, 스토리지, 네트워크 장비 등을 모아 놓고 일반 소비자가 기업이 이용할 수잇는 전산 서비스르 제공하는 시설을 만한다. 시설을 임대해서 쓰고 서버만 관리하면 된다.
보통 IDC는 서버호스팅처럼 일정한 네트워크와 하드웨어 자원을 임대제공하는 서비스를 합니다. 그런데 자체 IDC를 갖고 있는 기업들이 원가절감을 위해 IDC전문업체로부터 임대서비스를 받을 필요성이 생겼습니다. 다만 IDC서비스업체로부터 임대서비스를 받지만 자체서버로 운영하고 싶습니다. 이런 요구에 부응하기 위한 서비스가 코로케이션서비스입니다.
c. Clooud : it 서비스를 할 수 있는 인트라도 클라우드 회사가 만들었다. 고객은 하드웨어, 서버 다 신경쓰지 않아도 괜찮고 어플리케이션만 관리하면된다. 예시로 구글 드라이브를 생각하면 된다.
1) 클라우드 종류
ㄱ. AWS Cloud Native Patterns
On-prems 환경에서 서비스를 직접 제공해주는 인프라부터 소프트 웨어까지 서비스 제공의 형태가 바뀐 모델
a. On -prem : Datacentre(서버가 들어갈 공간, 항원 항습, 전원 장치와 같은 시설), Servers Storage and Network(서버, 스토리지 장치), Management Tools and Operating System(OS), Runtimes and contaner(미들 웨어, Nginx 같은 것), Functions(함수, PHP 함수 같은 것), Application, 이 모든 것을 다 관리하는 환경이다.
b. co-located : 시설만을 대여하는 모델, IDC
c. IaaS : infrastructual as a service, 서비스로 인프라 구조를 빌려주는 모델이다. (EC2 인스턴스, VPC, EBS)
d. CasS : container as a service, 컨테이너로 서비스를 해준다. 하드웨어, OS를 컨테이너로 만들어서 제공 해주는 것이다.
e. PaaS : Platform as a service, 플랫폼까지 제공해준다. (AWS Elastic Beanstalk)
f. Faas : funtion as a service, serverless의 개념이다. 함수까지 AWS가 해준다. FaaS의 경우에는 APP의 동작 시에만 서비스가 생성된다. 동작이 멈추면 서비스가 사라진다. 코드로 서버를 구성해 놨다가 동작시 다 배포되어 만들어지게 된다.항상 서비스가 있을때에 비해 딜레이가 있다. (Lamda, API Gateway)
g. SaaS : software as a service, 어플리케이션까지 다 빌려서 사용한다. 고객이 서비스 이용만 한다. (구글 드라이브)
ㄴ. 클라우드 종류 - 지역별
클라우드 서비스들은 물리적인 인프라를 가지고 있어야 한다. 이런 물리적인 인프라는 (Region > 가용영역 > IDC) 로 으로 나누어 져있다.
a. Region : 물리적 장비가 멀리 있으면 딜레이가 생긴다. 이에 빠른 통신을 위해 전세계에 물리적 장비를 구성하였다. 이런 데이터 센터를 논리적으로 묶어 놓은 것을 리전이라 한다. (ap-northeast-2 : 서울 리전)
b. 가용영역(Availlability Zone) : 리전은 가용영역으로 나눠진다. 가용영역은 실제 물리적 장비가 있는 데이터 센터를 논리적인 개념으로 묶어 놓은 것이다. 우리나라에는 서울 리전에 a,b,c,d, 4개의 가용영역이 있다. (ap-northeast-2a)
인스턴스 서비스를 구성할 때 IDC 까지는 볼 수 없고, 가용영역과 리전을 이용해 구분하여 만들 수 있다.
* VPC, 서브넷 설명
VPC (Virtual private cloud) : 가상 네트워크, AWS 내부의 서비스들이 통신 할 수 있는 통로, 네트워크를 가상으로 만든 것을 VPC 서비스라 한다. 이런 가상 네트위크 위에 인프라를 구축한다. 보안을 위해서 네트워크를 서브넷 개념으로 나눠 놓는다.
하나의 물리적인 네트워크 장비(하나의 리전)를 가상화해서 여러개로 나눠서 사용 하는 것이 VPC, 서브넷 이다. 각 리전 별로 VPC를 생성 할 수 있고, vpc 안에 서브넷이 있다. 리전마다 기본 vpc, 서브넷이 있어서 인스턴스 생성하면 자동으로 정해진 서브넷 안에 들어간다. 이렇게 대부분의 aws 서비스는 서브넷 안에 있다. 각 서브넷에는 가용 영역이 있다.
실제 인스턴스를 만들어 상세정보를 보면 다음과 같은 항목을 볼 수 있다. 퍼블릭 IPV4 DNS가 우리가 만든 인스턴스의 DNS이다. 이에 퍼블릭 IP와 DNS 정보로 외부에서 접속 할 수 있다. VPC에 트래픽이 들어오면 만들어 놓은 라우팅 테이블(라우팅 테이블 ID : rtb-28c6e743)을 통해 트래픽이 전송 된다.
VPC ID는 속해 있는 VPC의 ID이다. 서비스의 네트워크 필드에 vpc를 누르면 기본 vpc를 확인 할 수 있다. vpc-770a921c같은 형태로 되어있다. 서브넷 ID도 subnet-f9966fb6와 같은 형태로 같이 확인 할 수 있다. 이런 VPC나 서브넷 기본 설정은 (서비스 - 네트워크 필드 - vpc)를 누르면 기본 vpc를 확인 할 수 있다.
AWS clous는 보안에 관련 된 것이 보안 그룹, ACL 두 가지가 있다. 보안그룹은 인스턴스에서 들어오고 나가는 것을 필터링 한다. 22번, 80번을 등록하면 이 트레픽만 허용 한다. ACL은 서브넷을 보호한다.
ㄷ. 클라우드 종류
a. 퍼블릭 클라우드 : AWS가 구성해 놓은 인프라에 사용자가 접속해서 사용한다. 모든 사용자, 장비가 인터넷에 연결되어있는 상태이다. 비용 지불시 아무나 사용 가능하다.
b. 프라이빗 클라우드 : 온프레미스 환경을 구성해서 회사 자체 데이터 센터의 안에 인프라를 구성한다. 특정 사용자만 사용가능한 클라우드이다.
c. 하이브리드 클라우드 : AWS 클라우드와 온프레미스 상의 리소스 자원들을 서로 통신 가능하게 묶어준다. (전용회선, VPN등을 사용해 묶어준다.) 기존의 온프레미스 상의 모든 인프라를 점진적으로 AWS 클라우드 상에 옮긴다. 이때 보안이 중요한 데이터는 온프레미스 상에둔다. 온프레미스와 AWS Cloud 두 개를 묶어 사용하는 환경의 클라우드이다.
2) AWS 코어서비스
ㄱ. Auto Scaling
특정 조건에 따라 자동으로 EC2 인스턴스를 추가 혹은 제거 해주는 서비스
트래픽이 증가하거나 감소하는 등 변화가 생길때, 인스턴스가 자동으로 변한다. 처음 생성할때 인스턴스 개수의 최소와 최대와 그 조건을 정해 놓는다. 논리적으로 가상화되어 만들어진 서버이기 때문에 쉽게 변경이 가능하다.
a. 수직적 오토 스케일 : 스케일 up, 스케일 Down이 있다. 생성해 놓은 한 대 장비의 성능을 더 좋게 만드는 것이다. CPU, 메모리 등을 업그레이드 시킨다.
b. 수평적 오토 스케일 : 스케일 in, 스케일 out이 있다. 동일한 성능의 리소스 자원을 늘리고 줄이는 것이다. 두 대의 인스턴스를 조건에 따라 4대로 변경 하는 것이다. 수평적으로 늘리는 것은 out 좁히는 것은 in이다.
초록 선 안이 하나의 VPC이다. 위의 사진에서 오른쪽 위의 인스턴스부터 1, 왼쪽 위 2, 오른쪽 아래 3, 왼쪽 아래 4로 숫자를 정했다. 1과 3은 가용영역1, 2와 4는 가용영역 2에 포함 되어있다. 오토 스케일링 그룹은 여러개를 만들 수 있다. 처음에 최소 1,2 두개 만 이용되게 오토 스케일링 그룹으로 묶어 놓는다. 장애를 격리화 하기 위해서 오토 스케일링 그룹으로 묶을때 다른 가용역역의 인스턴스를 사용한다. 아예 실제 데이터 센터, 지리적으로 다른 데이터 센터를 이용해 물리적 장비를 격리화 한다. 1과 2는 똑같은 설정으로 수평적 오토 스케일링이다. 특정 조건이 만족되면 자동으로 오토 스케일링 된다.
ㄴ. 컴퓨팅 서비스
a. EC2 (Elastic Compute Cloud)
컴퓨팅 리소스를 제공하는 서비스이다. AWS 콘솔 사이트 - 서비스 - EC2 항목 안에 오토 스케일링이있다. EC2만 하는 서비스가 아닌 오토 스케일링도 있지는데 EC2외의 다른 서비스를 오토 스케일링 해주는 것이다.
b. Lambda - 서버리스 컴퓨팅
특정 조건이 일치 할때만, 가상 서비스를 코드로 배포해서 만들어주는 서비스이다. 조건이 끝나면 없에는 것이다. 실제 운영시에 딜레이가 얼마나 걸리는 것인지 제일 중요하다.
ㄷ. 스토리지 서비스
a. EBS (Elastic block storage)
EC2 인스턴스에 연결되어서 사용될 수 있는 블록 스토리지 서비스이다. 탄력적으로 쓸 수있는 하드디스크 서비스이다. 용량을 원하는 만큼 조절해서 데이터 센터 내부의 하드디스크를 사용 할 수 있는 서비스이다.
b. S3 (simple storage service)
객체 기반의 무제한 파일을 저장할 수 있는 스토리지이다. 여러 가용 영역에 걸쳐있어서 뛰어난 내구성을 제공한다. 서울 리전에 S3 서비스를 만들면 가용영역의 수 많은 데이터 센서에 다 링크가 걸려 데이터가 여러 하드디스크에 분포가 된다.
ㄹ. 데이터 베이스 서비스
a. Amazone RDS (Relational Database Service)
관계지향형 데이터 베이스 서비스이다. 모든 데이터가 관계가 있다. 각 테이블의 정보가 관련있어서 중복되거나, 잘못 삭제 되거나, 잘못된 정보가 입력되지 않게 일관성을 유지하는 것이다. 인스턴스에 명령어를 사용해 DB를 설치 할 수 있지만 이 서비스를 이용하면, 알아서 DB를 설치하고 관리해준다.
b. DynamoDB
대표적인 NoSQL 서비스이다. 객체지향형 데이터 베이스이다. 빅데이터, IOT, 인공지능과 같은 것들은 모든 데이터들이 관계성을 가지고 있으면 데이터 베이스에 많은 데이터를 저장하지 못한다. 값과 키로 이루어져서 그에 따라 그룹을 만들거나 특정 데이터를 찾는다.
3) AWS 인프라 구조
ㄱ. VPN
하이브리드 클라우드 구조에서 클라우드와 온 프레미스 상에 연결을 할려면 VPN과 전용회선 연결 두 가지가 있다.
ㄴ. ELB(elastic load balancer)
외부에서 들어오는 트레픽을 설정에 따라서 나눠서 부하분산해준다. 이 사진에서 인스턴스 그림을 보면 오토 스케일링 되어있는 것이다.
ㄷ. AWS privateLink
퍼블릭 인터넷에 데이터가 노출되지 않도록 하고 내부 네트워크를 통해 AWS 서비스와 온 프레미스 간에 안정한 비공개 연결을 제공한다. 외부에 정보가 공개 되지 않고 링크로만 서비스를 이용 가능한 것이다.
ㄹ. Route 53
AWS에서 제공하는 관리형 DNS 서비스이다. Route 53을 통하여 도메인 이름 구매를 대행하고, 구매한 도메인 주소에 대한 호스팅 영역 설정을 통해서 도메인 질의에 대한 응답을 처리 할 수 있다.
AWS 콘솔에서 바로 들어가거나, 외부 프로그램(CMD,SDK..)을 이용해서 접속해 들어가는 방법 2가지로 접속 가능 하다. EC2는 IP가 있지만 다른 서비스들은 IP가 없다. 대신 모든 AWS 서비스들은 자체 ID가 부여된다. 하지만 이 ID는 내부에서 사용하는 용도이다. 이에 Route 53는 도메인 주소와 ID를 매핑해서 외부와 통신 가능하게하는 서비스이다. 기본적인 DNS의 역활을 리전쪽에서 한다. 도메인에 대한 정보와, AWS 서비스들에 대한 도메인 정보를 알려 줄 수 도 있다. DNS 정보를 엔드 포인트 라고 한다.
ㅁ. AWS 전송 게이트 웨이
AWS 전송 게이트 웨이는 VPC나 온프레미스 등의 네트워크를 단일 지점으로 연결할 수 있는 라우팅 서비스이다.
가상 네트워크 VPC를 2개를 만들었다. 두 VPC는 같은 리전에 있지만 서로 통신을 하려면 외부로 트레픽이 나갔다 와야한다. 이는 거리적으로 비효율 적이다. VPC 끼리 통신이 가능하게 게이트 웨이를 만들어준다. 이를 통해 내부에 연결해줘서 짧게 연결해 빠르게 통신가능하다. 또한 리전간에 통신도 가능하게 한다.
ㅂ. AWS CloudFront (CDN - 콘텐츠 전송/ 캐시)
a. CDN (content delivery network)
컨텐츠 제공자와 사용자간 지리적으로 떨어져 있는 환경에서 콘텐츠를 빠르게 제공하기 위한 기술이다. 캐싱 기능을 사용 해 한번 요청이 들어온 정보를 가지고 있어 빠르게 제공해준다.
b. CloudFront
AWS에서 제공하는 CDN 서비스이다. 전 세계 42개국 82개 도시에서 216 엣지 POP을 두고 AWS 글로벌 네트워크를 통하여 콘텐츠를 캐싱하여 서비스를 제공한다.
2. VPC 기초
1) VPC
VPC(Virtual Private Cloud) : AWS 클라우드 내 논리적으로 독립된 섹션을 제공하여, 사용자가 정의한 가상 네트워크상에서 다양한 AWS 리소스를 실행할 수 있게 지원하는 서비스이다.
내부적으로 서비스끼리 통신하거나 외부와 통신하게 해주는 네트워크 기반이다.
VPC의 기본 구성서비스는 인터넷 게이트웨이, NAT, 가상 라우터, 네트워크 ACL이 있다. 인터넷 게이트 웨이는 외부의 인터넷 망과 연결 해주는 것이다. 서브넷을 퍼블릭, 프라이빗 용도로 만들 수 잇다. 프라이빗 서브넷은 사설 네트워크로 NAT 게이트 웨이가 있어야 외부와 통신이 가능하다. 가상 라우터는 개념적인 가상의 라우터로 라우팅 테이블을 가지고 목적지 IP를 가지고 어디로 트래픽이 나갈지 정해준다. 퍼블릭은 인터넷 게이트 웨이로 프라이빗은 NAT 게이트 웨이로 보낸다. 서브넷에 트래픽이 들어갈 때 네트워크 ACL에 의해 한번 필터링 된다. 즉, ACL은 서브넷을 보호한다. 보안그룹은 인스턴스를 보호한다.
ㄱ. VPC 종류
AWS 콘솔 - 서비스 - 네트워크 및 콘텐츠 전송 - VPC에서 확인 가능 하다.
각 리전별 1개의 VPC가 있는 것을 확인 할 수 있다. 사용자 VPC는 5개 이상 만들려면 승인을 받아야한다.
ㄴ. 특징
a. 확장성
클라우드 기반에 손쉽게 VPC 자원을 생성하고 삭제가 가능하며, 설정 및 관리에 편의성을 제공한다.
b. 보안
인스턴스 레벨과 세브넷 레벨에서 인바운드 및 아웃바운드 필터링을 수행할 수 있도록 보안 그룹과 네트워크 ACL 을 제공하여 보안을 강화했다. 퍼블릿 클라우드의 최대 단점이 보안이다.
c. 사용자 중심
VPC 내 리소스에 대해 사용자가 원하는 대로 손쉽게 제어할 수 있으며 , 네트워크 지표 및 모니터링 툴을 활용하여 사용자에게 높은 가시성을 제공한다.
d. 제약 사항
전통적인 네트워크 환경에서 사용가능 했던 기능이 제한되어 있거나 일부분만 사용 가능하여 기술적 제약이 있다. 온 프레미스 상의 라우터, 스위치의 고급기능을 사용하는데 제약이 있다.
2) 서브넷
VPC 안에 있는 각 장비들의 네트워크 범위이다.
ㄱ. IP
AWS 에서는 서브넷에 할당할 수 있는 IP 대역에서 미리 예약되어 있는 IP 주소가 존재한다. VPC 내 여러 서브넷이 존재할 경우 첫번째 서브넷의 세번째 주소를 DNS 서버 주소로 사용한다. 나머지 서브넷의 세번째 주소는 AWS 에서 예약되어 있다.
여기에서 10.0.0.2가 각 서브넷(A,B,C)의 DNS 주소로 세팅 된다. 나머지 10.0.1.2 10.0.2.2는 예약된 주소로 사용된다.
위의 정보만 보고 프라이 빗인지 알 수 없다. 지금 말하는 것은 프라이빗 IP로 내부 통신 용이다.
예약되어 있는 IP 주소
첫번째 주소 : 네트워크 주소 (10.0.0.0, 10.0.1.0, 10.0.2.0)
두번째 주소 : AWS VPC 가상 라우터 주소, 게이트 웨이 주소 (10.0.0.1, 10.0.1.1, 10.0.2.1)
세번째 주소 : AWS DNS 서버 주소 (10.0.0.2)
네번째 주소 : 향후 새로운 기능에 활용할 주소 (10.0.0.3, 10.0.1.3, 10.0.2.3)
마지막 주소 : 네트워크 브로드캐스트 주소 (10.0.0.255, 10.0.1.255, 10.0.2.255)
ㄴ. 퍼블릭, 프라이빗 서브넷
a. 퍼블릭 서브넷
공인 네트워크 개념, 외부 인터넷 구간과 직접적으로 통신을 할 수 있는 네트워크이다. 2개의 인터페이스인 공인 IP, 사설 IP가 있다.
b. 프라이빗 서브넷
외부 인터넷 구간과 직접적인 통신을 할 수 없는 폐쇄적인 네트워크이다. 외부통신을 위해 NAT 게이트웨이가 필요하다. IP가 공인 IP는 없고 사설 IP만 있다(1개의 인터페이스). 이에 외부와 통신이 안된다. 이에 라우팅 테이블에 인터넷 게이트 웨이가 아닌 NAT 정보가 적혀 있다. 인반적으로 DB와 같은 민감한 정보를 저장하는 용도로 사용해서 외부와 연결 하지 않는다.
ㄷ. 가상 라우터와 라우팅 테이블
서브넷당 하나씩 기본적으로 라우팅 테이블이 있다.
10.0.0.0/16 대역의 VPC 를 생성하면, 자동으로 가상 라우터가 생성된다.
가상 라우터는 최초에 기본 라우팅 테이블을 보유하고 있으며 로컬 네트워크에 대한 라우팅 경로만 있다.
여기서 로컬 네트워크는 VPC의 자체 대역으로 VPC 내에 생성된 서브넷은 라우팅 테이블의 로컬 네트워크에 의해 통신이 가능하다.
다음 페이지에서 실습내용을 확인하자.