이번 AWS 특강에서 최종 목표는 아래와 같은 아키텍처를 완성하는 것이다.
실제 프로젝트에서도 이렇게 아키텍처를 만들 수 있으면 좋을 것 같다.
(이번 AWS 8시간 특강은 위의 내용들을 진행 한 것이라고 보면 된다.)
✨AWS VPC
- Amazon Virtual Private Cloud(Amazon VPC)
- AWS 클라우드 내에서 사용자가 정의한 논리적으로 격리된 가상 네트워크를 제공
- 사용자는 네트워킹 환경을 완벽하게 제어
- IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등
- 인터넷에 액세스할 수 있는 퍼블릭 서브넷과 인터넷 액세스가 제한된 프라이빗 서브넷을 생성
- 웹 서버와 데이터베이스 서버를 각각 배치 가능
- 보안 그룹과 네트워크 액세스 제어 목록을 통해 각 서브넷의 AWS 리소스에 대한 접근을 세부적으로 제어
✨서브넷
서브넷은 네트워크를 더 작은 논리적 네트워크로 나누는 기술이다 .
- 퍼블릭 서브넷: 인터넷 게이트웨이를 통해 외부와 통신 가능. 외부 IP가 할당된 리소스 배치
- IGW (Internet Gateway): 퍼블릭 서브넷 리소스에 인터넷 접속을 허용. 외부와 양방향 통신 가능
- 인터넷에 노출 된 리소스 (웹 서버)
- 프라이빗 서브넷: 인터넷 직접 접속 불가. NAT 게이트웨이나 VPN을 통해서만 외부와 통신. 보안 필요한 리소스 배치.
- NGW (NAT Gateway): 프라이빗 서브넷에서 외부 인터넷으로 아웃바운드 트래픽을 보낼 때 사용, 외부에서 내부로의 접근은 불가
- 인터넷에 노출되지 않은 리소스 (데이터베이스)
- 퍼블릭과 프라이빗으로 나누어 보안을 강화
- 트래픽을 라우팅 테이블로 제어
- 환경 (개발,테스트,프로덕션 )을 서브넷으로 분리하여 리소스 독립적으로 관리
여기에서 라우팅 테이블이 뭘까 ?
목적지 → 대상(Target)
-------------------------------
10.0.0.0/16 → Local
192.168.1.0/24 → VPC Peering Connection
0.0.0.0/0 → Internet Gateway
172.16.0.0/12 → Virtual Private Gateway
- 실제 이렇게 생기지는 않았고 이해를 위해 예시로 가져왔다.
- 서브넷의 용도에 따라 라우팅 테이블이 다름
- 네트워크 트래픽이 어디로 가야 할지 경로를 정의하는 표
그렇다면 NAT Gatway와 Internet Gateway의 뭘까 ?
- NAT Gateway
- 프라이빗 서브넷의 리소스가 아웃바운드 트래픽을 보낼 수 있게 함
- 프라이빗 서브넷은 기본적으로 인/아웃 바운드 트래픽 모두 차단
- 인바운드 (외부에서 접근) 차단
- 프라이빗 서브넷의 리소스가 아웃바운드 트래픽을 보낼 수 있게 함
- Internet Gateway
- 퍼블릭 서브넷의 리소스가 외부와 양방햔 통신 (인/아웃바운드 트래픽) 가능하도록
(위에 있는 내용이지만, 강조 차원에서 한번 더 설명 !! )
(참고)
- 인바운드: 네트워크로 들어오는 트래픽 → 외부에서 서버로의 요청
- 아웃바운드: 네트워크에서 나가는 트래픽 → 내부에서 외부로의 요청
✨ DNS와 DHCP
- DNS (Domain Name System)
- 도메인 이름을 IP 주소로 변환해주는 시스템. 예: google.com → 142.250.190.14.
- DHCP (Dynamic Host Configuration Protocol)
- DHCP는 네트워크에 연결된 기기가 IP 주소와 네트워크 설정을 자동으로 할당하는 프로토콜
- 네트워크 장치라 하면 컴퓨터, 스마트폰, 라우터 등등
- DHCP는 네트워크에 연결된 기기가 IP 주소와 네트워크 설정을 자동으로 할당하는 프로토콜
✨ VPC 액세스 제어 : 보안그룹과 NACL
보안 그룹, NACL 모두 네트워크 트래픽을 제어하는 보안 도구이다.
- 보안 그룹
- EC2 인스턴스, RDS, ALB 등 특정 리소스.
- 상태 저장 (인바운드 허용하면 아웃바운드 자동 허용)
- 허용만 가능 (허용되지 않은 트래픽은 기본적으로 차단)
- NACL
- Network ACL
- 서브넷 수준에서 작동
- 상태 비저장 (인바운드와 아웃바운드를 별도로 정의)
- 허용과 거부 모두 가능
ex) 웹 서버(EC2)가 퍼블릭 서브넷에 위치, 외부에서 HTTP 요청을 처리
- 보안 그룹 설정:
- 인바운드 규칙: HTTP(포트 80) 허용
- 자동으로 아웃바운드 규칙도 설정되어 응답 허용
- NACL 설정:
- 인바운드 규칙: HTTP(포트 80) 허용
- 아웃바운드 규칙: 별도로 설정해 HTTP 응답 허용
✨ 운영환경을 위한 VPC 디자인
- AZ (가용 영역, Availability Zone)은 독립적으로 운영되는 데이터 센터 그룹
- 고가용성과 장애 복구를 위해 AZ를 활용하는 것이 권장
✨ VPC Endpoint
VPC와 AWS 서비스(S3, DynamoDB 등) 간의 트래픽이 인터넷을 거치지 않고 AWS 네트워크 내부에서 직접 연결되도록 설정하는 기능
- 인터넷 게이트웨이, NAT 게이트웨이 없이 AWS 리소스에 안전하게 접근 가능
- 데이터가 퍼블릭 인터넷에 노출되지 않아 보안성이 높음
- 게이트웨이 엔드포인트:
- S3와 DynamoDB 같은 서비스와 연결
- 라이팅 테이블에 경로(AWS 서비스) 추가
- ex) S3로 가는 경로는 VPC Endpoint를 통해 연결
- 프라이빗 링크(인터페이스 엔드포인트):
- 다른 AWS 서비스나 사용자 정의 서비스와 연결
- AWS 네트워크와 연결되는 가상 네트워크 카드
✨ Amazon EC2(Elastic Compute Cloud)
Amazon EC2는 AWS의 가상 서버 서비스로, 사용자가 필요에 따라 컴퓨팅 자원을 유연하게 생성, 관리할 수 있도록 지원
- 필요한 만큼 컴퓨팅 자원을 추가하거나 줄일 수 있음
- 다양한 CPU, 메모리, 스토리지 옵션을 제공
- 워크로드에 맞는 인스턴스 선택 가능(예: T2, M5, C6g 등)
- 사용한 만큼만 비용 지불(Pay-as-you-go)
- Linux, Windows 등 선택 가능
- 보안 그룹과 IAM 역할을 통해 네트워크 및 액세스 제어
사용 사례
- 웹 어플리케이션 실행
- 대량 데이터 처리 작업
- 개발/테스트 환경 테스트
- 데이터 분석
구조
- 인스턴스: EC2에서 실행되는 가상 서버.
- AMI(Amazon Machine Image): 인스턴스 실행을 위한 템플릿(OS, 소프트웨어 포함)
- EBS(Elastic Block Store): EC2 인스턴스에 연결되는 스토리지
인스턴스 유형
✨ AMI (Amazon Machine Image)
- 기본 AMI로 EC2 인스턴스를 시작
- 애플리케이션 설치/설정 후, 해당 인스턴스 기반으로 사용자 정의 AMI 생성
- 사용자 정의 AMI를 사용해 여러 인스턴스 빠르고 일관되게 생성
기본 AMI는 운영 체제만 포함되어 있거나, 최소한의 설정만 적용된 상태여서 매번 같은 설정을 반복적으로 해야 한다면 사용자 정의 AMI를 사용하여 필요한 소프트웨어와 설정이 미리 적용된 상태로 인스턴스 생성
✨ AWS Nitro System
AWS Nitro System은 하드웨어와 소프트웨어 통합 플랫폼으로 EC2의 가상화 효율을 높이고 보안을 강화한 시스템
- 가상화 오버헤드 감소 (기존 하이퍼바이저 관리 복잡성 제거)
- 데이터 격리와 보안 자동처리
- 네트워크와 스토리지 성능 최적화
- 민감한 데이터 처리 환경 구축 간소화
위에 말들이 좀 어렵다.
핵심만 말하자면 Nitro 기반의 EC2는 최적화가 기본 적용된 EC2라고 이해하면 된다 !
(거의 항상 Nitro 기반 EC2를 사용하는 것이 항상 더 유리함함)
✨ Elastic Load Balancing (ELB)
Elastic Load Balancing은 AWS에서 트래픽을 여러 인스턴스에 분산해주는 서비스
- 트래픽 분산
- 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너 등으로 고르게 분배
- 장애 발생 시 헬스 체크를 통해 문제가 없는 인스턴스로만 트래픽 전달
- 유형:
- Application Load Balancer (ALB):
- 애플리케이션 7계층 (HTTP/HTTPS)에서 작동
- 요청 내용 기반으로 트래픽 분산
- ex) URL, 헤더, 쿠기
- 세션 기반 라우팅과 복잡한 트래픽 제어 가능
- HTTPS 요청의 SSL/TLS 암호화 해제
- 이게 좀 해제라 해서 헷갈릴 수 있는데, 로드 밸런서가 HTTPS 요청을 해독해서 HTTP로 통신하는 것을 의미
- 클라이언트 ↔ 로드 밸런서 : HTTPS
- 로드 밸런서 ↔ 내부 서버 : HTTP
- 웹 소켓 지원
- Network Load Balancer (NLB):
- 초고속 트래픽 처리
- 네트워크 4계층 (TCP/UDP)에서 작동
- 고성능과 높은 트래픽 처리량이 필요한 경우 사용
- 사용 사례
- IoT 애플리 케이션, TCP/UDP 기반 서비스 / DB 연결
- Gateway Load Balancer (GWLB)
- 네트워크 트래픽 라우팅 및 보안 애플리케이션 연결
- Classic Load Balancer (CLB):
- 기본적인 HTTP, TCP 로드 밸런싱(구형)
- Application Load Balancer (ALB):
- 자동 확장 지원, 고가용성 보장
주로 사용하는 ELB 종류
- Application Load Balancer
- Network Load Balancer
✨ Amazon EC2 Auto Scaling
- 변화하는 수요에 동적으로 대응하고 비용 최적화
- Dynamic Scaling: 트래픽 변화에 따라 EC2 인스턴스 추가/제거.
- Fleet Management: 인스턴스 상태를 지속 모니터링하고 비정상 인스턴스 교체.
✨ EC2 키 페어
- 역할:
- Linux: SSH를 통한 최초 로그인 인증
- Windows: 관리자 암호 검색에 사용
- 구조:
- 퍼블릭 키: AWS에 저장
- 프라이빗 키: 사용자만 보관. AWS는 저장하지 않음
- 특징:
- 안전하고 개인화된 초기 접근 방식
- 표준 SSH RSA 키 페어 사용, NIST 및 PCI DSS 등 규격 준수
✨ IAM (Identity and Access Management)
AWS IAM은 사용자, 그룹, 역할, 권한을 관리하여 AWS 리소스에 대한 접근을 제어하기 위한 서비스
- 특정 사용자나 리소스에 대해 권한을 세밀히 설정 가능
- 모든 AWS 서비스에 대해 IAM으로 접근 관리 가능
사용 사례
- 개발자와 운영자 계정 분리
- 개발자는 S3 읽기만 가능, 운영자는 S3 전체 권한 부여
- 외부 서비스 통합
- 보안 강화
- 모든 계정에 MFA 활성화
실습은 위의 링크에서 하면 된다 !
다음편은 Storage 서비스에 대해 봐볼 예정이다.
Network 서비스만큼 긴 포스팅은 아니다.
'WEB > Backend' 카테고리의 다른 글
AWS 특강 - Databases (0) | 2024.12.11 |
---|---|
AWS 특강 - Storage (1) | 2024.12.11 |
리눅스 명령어 / VI 명령어 모음 (0) | 2024.10.03 |
SFTP 파일 전송 (VS Code 플러그인으로 원격 서버 파일 전송) (1) | 2024.10.03 |
AWS EC2 서버 세팅 및 배포 / 몽고DB 도메인 연결하기 (A~Z까지) feat. Flask서버, Filezilla,Studio 3T,Gabia (0) | 2024.07.27 |