AWS 클라우드 서비스 교육 필기
AWS General Immersion Day
포지션 소개
Solution Architects: 엔터프라이즈에서 서비스 런칭할 때 AWS 상 아키텍쳐 조언
Technical Account Manager: 기업에서 발생하는 각종 이슈들 조언
AWS 글로벌 인프라
대체로 가까운 리전, 가용영역(AZ)에 서비스 연결
하나의 가용영역(AZ)이 뻑나도 문제 없게 설계.
데이터센터 뿐 아니라 글로벌 네트워크도 갖고 있음.
가용 영역(AZ)은 AWS 리전에서 중복 전력, 네트워킹 및 연결을 지원하는 하나 이상의 개별 데이터 센터입니다. AZ를 사용하면 단일 데이터 센터보다 더 높은 가용성, 내결함성 및 확장성을 갖춘 프로덕션 애플리케이션과 데이터베이스를 운영할 수 있습니다.
서브넷에서 실행되는 애플리케이션을 여러 AZ에 걸쳐 분할하면 정전, 번개, 토네이도, 지진 등과 같은 문제로부터 보다 효율적으로 격리되고 보호됩니다.
AWS VPC (Virtual Private Cloud)
논리적으로 격리된 가상의 프라이빗한 네트워크 환경
AWS가 클라우드를 물리적으로 관리, 그걸 논리적으로 분리
가상 네트워크 제어 기능 포함
- IP 주소 범위, 서브네팅, 라우팅, 보안그룹 등
CIDR(Classless Inter-Domain Routing) 블록: 어떻게 네트워크를 정의할 건지에 대한 규약. CIDR 블록을 VPC 크기를 지정하여 생성
- 원래 네트워크 구성할 때 클래스 기반으로 잘랐었음. 근데 IP 낭비가 심해서 Classless로 발전한 거.
VPC 아키텍처
: AWS Cloud > AWS 어카운트 > 서울 리전(ap-northeast-2) > VPC < 가용영역 & 서비스 영역
(글로벌 서비스 영역: AWS Identity and Access Management, Amazon Route 53)
(리전 서비스 영역: S3, DynamoDB)
VPC 구성
- VPC 네트워크 IP 대역 정의
- AZ 별 서브넷 지정: 어떤 서브넷이 어떤 가용영역에 매핑되는지
- 라우팅 테이블 생성: 이를 통해 서브넷 연결
- 트래픽 접근 제어
EC2 배포하기 까지
VPC IP 대역 정의
- 172.31.0.0/16 이라고 하면 앞에는 IP 대역 (권장대역: RFC1918. 퍼블릭과 겹치지 않도록).. 뒤 16은 얼마나 큰걸로 할지(CIDR 블록. 권장 프리픽스: 16 -> 2^16 -> 65536개 주소 사용 가능)
- 사용자 입장에서 16이 가장 큰 거임. (1010 1100 0001 1111 0000 0000 0000 0000) 16은 Prefix(앞에 미리 고정되어 있는 거). 뒤가 자율적으로 할당되는 거. 따라서 고정되는 개수가 적을 수록 뒷공간이 많이 확보됨.
- 범위는 16~28. 최소 단위는 28이고 그랬을 때는 2^4 = 16개 사용 가능함.
라우팅 테이블 - 로컬 및 인터넷 통신
구체적인 IP: 10.0.0.0/16 이런식으로 해주면 로컬 연결
그외 IP: 0.0.0.0/0 을 따라 인터넷 게이트웨이로 나감
퍼블릭 라우팅 테이블 - 퍼블릭에서 EC2 접근할 때
프라이빗 라우팅 테이블 - VPC 내부적으로 통신할 때
NAT 게이트웨이 - 서버(프라이빗 서브넷)에서 인터넷 아웃바운드일 경우 여기로 나감 (EC2에서 OS 업데이트 할 때.. 서버에서 인터넷에 있는 레포지토리 등을 통해 소프트웨어 업데이트 받을 때 등등.. 그럴 때는 NAT 게이트웨이 만들고 이를 통해 업데이트)
퍼블릭 IP는 정말 필요할 때만 사용을 권장. 왜냐하면 보안을 위해. 개발 단계에서는 신경 안쓰지만, 운영할 때는 매우 중요. 최근에 골프존 .. AWS 고객인데 얘네도 랜섬웨어 걸림. SRE 담당자의 역할이긴 하지만..
AWS가 예약한 IP 주소들
- 10.0.0.0 (네트워크 주소)
- 10.0.0.1 (VPC 라우터)
- 10.0.0.2 (DNS 용)
- 10.0.0.3 (향후 서비스를 위해)
- 10.0.0.255 (브로드캐스트 주소)
VPC 액세스 제어
보안그룹: 서버 단위로 적용하는 차단기 역할
- 인바운드 rules/ 아웃바운드 rules 설정 가능.
- 일반적으로 인바운드만 설정함. (보통은 UCP, UDP 설정)
- 인바운드로 허용된 트래픽의 아웃바운드는 자동 허용
- 다른 보안그룹을 참조하여 source로 지정 가능
운영환경을 위한 VC 디자인
2개 이상의 AZ 구성해야 함.
- 각 AZ에 매핑된 서브넷 만들면 되겠지?
- 클라이언트가 두 가지 AZ 중에 어디로 갈 건지?? Load Balancer가 부하 분산해줌.
요즘 서비스는 트래픽 예측이 쉽지 않음.
- 이럴 때 하나의 웹서버로 모든 걸 처리할 순 없음. (ex. 티켓 예매, 블랙프라이데이)
- 그럴 때는 scale out 필요. 그러나 단일 엔드포인트로 받아야 함. 그 역할을 Load Balancer가 함.
- 따라서 어느 규모 이상의 서비스 구축에서는 Load Balancer 구성이 필수적.
AZ 상호간의 통신은 Private IP를 통해 수행
NAT 게이트웨이, 인터넷 게이트웨이도 구성 필요
프로젝트 팀에서 누가 VPC 만들 것인지.. 그 사람은 이런 구성 작업 수행해야 함.
QnA
Q. 로드 밸런서와 네트워크 이중화의 차이?
네트워크 이중화는 인프라 레벨. 실제 데이터센터 가보면 책장처럼 꽂혀있는 서버들 위에 스위치가 있음. 그 스위치들 위에 라우터가 있음. 이런 구조를 의미함.
네트워크 로드 밸런서는 위에서 설명한 내용대로임. 서버 1~5 중에 어디로 갈 것인가? 로드 밸런서는 별도의 6을 가지고 있음. 클라이언트 입장에서는 6이라는 하나의 엔드포인트로 진입하는데, 로드 밸런서가 이 부하를 분산하고 적절한 곳으로 뿌려주는 것.
Amazon EC2
Amazon EC2 개요
AWS 글로벌 리전에 위치한 물리적 서버 => 이거를 하이퍼 바이저라는 걸로 자원을 쪼갬 => 이걸 할당 받음. 이게 가상화
인스턴스 별로 운영체제, 자원, 성능이 다름.
일반적으로 개발할 때는 T 타입, M 타입 사용하면 됨.
AMI (Amazon Machine Image)
서버를 만들 때마다 어플리케이션 따로 설치 귀찮음
-> 한대의 EC2 를 기본 AMI로 만들고, 그 이미지를 활용해서 다른 서버를 만들었을 때 설치된 상태로 만들 수 있음.
운영체제는 알다시피 윈도우 리눅스 우분투 .... 지원
인스턴스 수명 주기
실행중 (Running)
- 인스턴스 동작 중
- 과금 발생
정지됨 (Stopped)
- 중지된 상태
- EBS 볼륨을 루트로 사용하는 인스턴스만 가능
- 과금 안됨
종료됨 (Terminated)
- 인스턴스가 완전히 제거 (인스턴스 영영 없어짐)
- 시작이나 정지 불가
인스턴스 명명 규칙
"c7gn.xlarge" 라고 하면
- c7: 인스턴스 패밀리
- 7이 인스턴스 세대임
- 웬만하면 최신 세대 사용 권장
- gn: 추가 기능 종류
- g, a, i, d, n, b, e, z 등 .. 프로세서 뭔지, 어떤 자원에 최적화된건지 .. 필요하면 따로 알아보기
- 서비스 성능 테스트에 중요
- xlarge: 인스턴스 크기
- 우리도 자원이 무한한게 아니니까.. 때때로 특정 크기는 없을 수도 있음.
컴퓨팅 관련 서비스
ELB (Elastic Load Blancing) 종류
ALB(Application Load Balancer): TCP 통신
NLB(Network Load Balancer): HTTP 통신
EC2 Auto Scaling
- 변화하는 수요에 동적으로 대응하고 비용 최적화
Amazon CloudWatch
트래픽, 로그, 지표 등 모니터링 가능
2. Storage in AWS
서버 네트워크 스토리지
- 3개의 축 중 스토리지
스토리지 타입 (이는 AWS에만 국한된 내용은 아님)
- 블록 스토리지: 데이터가 블록 단위로 저장됨. 단순히 블록상태라면 다루기 어려움. 때문에 이 위에 각자가 원하는 파일 시스템 구축
- 파일 스토리지: 디렉토리 구조로 파일을 저장. 스토리지 단에서 파일을 생성.
- 오브젝트 스토리지: REST 기반의 API 호출을 통해 데이터 접근. HTTP 프로토콜. 대표적으로 S3(Simple Storage Service) 있음.
AWS 사용하는 대부분의 고객이 S3 사용