일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 프로그래머스
- node.js
- 방송대
- MySQL
- 코드잇
- 개발자취업
- 방송대컴퓨터과학과
- redis
- 코딩테스트
- CSS
- Python
- HTML
- JavaScript
- Git
- 자격증
- TiL
- Cookie
- 유노코딩
- 꿀단집
- 엘리스sw트랙
- nestjs
- 파이썬프로그래밍기초
- 데이터베이스시스템
- 99클럽
- 파이썬
- 코딩테스트준비
- 항해99
- 중간이들
- aws
- SQL
- Today
- Total
배꼽파지 않도록 잘 개발해요
[엘리스sw] 실습으로 배우는 AWS - ④ AWS 네트워킹 활용하기 본문
◆ 네트워킹 기본
◆ Route 53
◆ VPC (Virtual Private Cloud)
◆ VPC 중급
◆ AWS 환경에서 탄탄한 웹 서버 구축하기
◆ 네트워킹 기본
네트워킹 기초
- 네트워킹 : 두 개 이상의 컴퓨터 혹은 서버를 연결하는 것
- 클라이언트 : 요청을 보내는 주체
- 서버 : 요청을 수행하는 주체
두 개가 아닌 더 많은 디바이스가 연결되어 있는 네트워킹 구성에서는 서버가 다시 어디에 요청하는 경우에는 해당 서버가 서버이자 동시에 클라이언트가 될 수 있음. - 프로토콜 : 전 세계 통신규약
- OSI 7계층 : 네트워킹 장비를 만드는 제조업체에서 규약을 따르기 위해 제작한 기본 설계사항
메인 네임과 IP 주소
- 사용자가 입력하는 academy.elice.io는 사람이 쉽게 이해할 수 있는 도메인 네임이다.
하지만 컴퓨터는 IP주소만 이해하기 때문에, 도메인 네임을 IP 주소로 변환해야 한다.
DNS 서비스
- DNS(Domain Name System)은 도메인 네임을 IP주소로 변환하는 서비스
- 마치 전화번호부처럼 도메인 네임과 해당 IP주소를 연결하는 역할을 함.
DNS 서버 계층 구조
- DNS 서버들은 전 세계에 분산되어 있으며, 계층적인 구조를 갖고 있음.
- 요청은 루트 서버로부터 시작하여 점차 하위 서버들로 내려가며 처리됨.
도메인 마지막에는 '.(점)'이 생략됨.
웹브라우저를 열고 http://www.google.com. 을 입력하면 동일하게 구글 웹 페이지가 열림.
이렇게 생략된 점은 이 DNS 서버 계층에서 가장 상단에 위치한 루트네임 서버를 가리킴.
이 루트네임 서버에서는 오로지 도메인 이름 중에서 가장 마지막으로 io로 끝나는 주소의 정보만 알고 있음.
보통 도메인 이름의 마지막 부분(.com, .net, .org, .io)의 정보를 갖고 있는 것을 TLD (Top Level Domain) 서버라고 부름
엘리스 아카데미 접속하면 내부적으로 생기는 일
- 루트 서버 : TLD 서버의 위치를 알려줌.
- TLD(Top Level Domain) 서버 : Authoritative DNS 서버의 위치를 알려줌.
- Authoritative DNS 서버 : 도메인 네임에 대한 IP 주소를 제공
1. 사용자가 academy.elice.io 주소를 입력하면, 먼저 로컬 DNS 서버에 IP 주소를 요청한다.
2. 로컬 DNS 서버는 캐시에 해당 정보가 없으면 루트 서버에 요청한다.
3. 루트 서버는 .io 도메인을 관리하는 TLD(Top-Level Domain) 서버의 주소를 알려준다.
4. 클라이언트는 TLD 서버에 elice.io 도메인을 관리하는 Authoritative DNS 서버의 주소를 요청한다.
5. TLD 서버는 elice.io Autoritative DNS 서버의 주소를 알려준다.
6. 클라이언트는 Authoritative DNS 서버에 academy.elice.io의 IP 주소를 요청한다.
7. Authoritative DNS 서버는 academy.elice.io의 IP주소를 클라이언트에게 제공한다.
8. 클라이언트는 받은 IP주소를 사용하여 academy.elice.io 웹사이트에 접속한다.
DNS 동작 방식
가장 먼저 도메인네임을 입력했을 때 수행하는 것은 랩탑 내부에 DNS 캐시를 참조하는 것.
랩탑 내부에는 DNS 캐시 정보를 가지는데, 이 캐시 정보는 만약 어떤 주소가 DNS 서버를 통해서 전달받은 IP주소가 있다면 그것을 DNS캐시에 DNS 정보를 랩탑에 캐싱해서 반복적으로 DNS 서버를 호출하는 횟수를 최소함.
다음으로 DNS요청을 하는 것은 로컬 DNS서버임. DNS 캐시에 만약 도메인네임의 정보가 없을 경우 다음으로 요청하는 것이 로컬 DNS서버임. 로컬 DNS는 인터넷에 연결되는 관문에 해당하는 ISP가 가지고 있는 DNS 서버를 의미함. ISP는 인터넷 사업자들을 의미함. 국내에서는 KT, SKT, LG유플러스 등이 있음. 이들이 가진 DNS서버를 Local DNS서버라고 함.
Root 네임서버부터 elice.io 서버까지 재귀적으로 호출해서 최종적으로 academy.elice.io 주소를 전달 받아서 IP주소로 접속을 시도하는 방식임.
IP 동작 방식 - vs 주소 시스템
- IP 동작방식과 주소 시스템의 동작 방식은 유사하다.
- 계층적인 구조를 갖는 이유 : 각 상위지점에서는 주소 전체를 해석할 필요 없이 이 주소 정보를 갖고 있는 지점으로 분류만 해서 전송하면 최종적으로 목적지에 도착하기 때문에 수많은 지역에서도 주소를 찾는 것이 가능하게 됨.
- 인터넷 환경에서 데이터를 전달하기 위해 사용하는 것 : 스위치, 라우터
IP 동작 방식
- 패킷 : 네트워크 전송 단위
- 같은 IP 대역 : 필요한 IP 개수에 따라 다름.
일반적으로 라우터와 연결된 스위치, 그 아래 연결된 디바이스들은 같은 IP 대역에 있다고 이해해도 좋음. - IP 대역에는 1개의 Gateway IP가 존재함.
- Gateway IP : 또다른 IP 대역으로 넘어가기 위한 관문에 해당하는 IP주소
일반적으로 다른 IP 대역을 찾기 위해 가장 상단에 위치한 라우터 정보를 갖고 있음.
그렇게 다른 IP 대역으로 넘어가기 위해서 게이트웨이IP까지 전달된 패킷은 라우터에서 동작함.
라우터는 최종 목적지의 위치의 정보는 갖지 않지만 목적지 IP로 가기 위해 나에게 근접한 라우터 중 어떤 라우터가 가장 빠를지에 대한 정보를 갖고 있음. 다음 라우터에 대한 정보를 가지는 것은 Routing Table이라고 부름.
Private IP vs Public IP And NAT (Network Address Translation)
IP Subnet 동작 원리
◆ Route 53
AWS Route 53란?
- Route 53 : AWS의 완전 관리형 글로벌 DNS 서비스
- 사용자에게 친숙한 Host name (ex. www.google.com)을 AWS 서비스의 IP주소로 변환(라우팅)하는 역할
- AWS 서비스가 정상적으로 동작하는지 헬스 체크
AWS Route 53 구성 절차
- 도메인 등록 : 이미 사용중인 도메인 등록 혹은 AWS에서 구매
- 호스트 영역 : DNS 구성을 위한 서비스들이 어디에 해당되는지 영역을 지정함.
- 레코드 설정 : 어떤 규칙을 가지고 주소를 변환할 것인지 규칙 생성
- TTL : 로컬 데스크탑의 DNS 정보를 캐싱할 때 이 데이터를 얼마나 오래 보관할 것인지 기입할지 설정하는 값
AWS Route 53 도메인 등록
도메인 등록 규칙
- 등록되는 도메인은 전 세계적으로 유일해야 함.
- 대표적인 TLD 도메인은 com, org, co.kr 등이며, TLD 도메인별 비용이 상이함.
- 사용자 지정 도메인은 문자, 숫자, 하이픈 (-)을 포함할 수 있으며 64자 미만임.
AWS Route 53 호스팅 영역
호스팅 영역 지정
- 하나의 독립적인 도메인 이름(elice.io)을 가지며, 그 안의 여러 개의 서브 도메인(academy.elice.io)을 가지는 단위
- 퍼블릭 호스팅 영역 : 인터넷상에서 AWS 서비스에 대한 라우팅을 위한 영역
ex. S3 버킷, Edge Location, 외부 인터넷에 노출된 ALB - 프라이빗 호스팅 영역 : VPC 내부의 AWS 서비스에 대한 라우팅을 위한 영역
AWS Route Record
레코드 구성하기
- 레코드는 하나의 도메인 영역에서 어떤 규칙으로 라우팅을 할 것인가에 대한 정보를 가짐
레코드 유형
- A : 도메인 이름 ↔ IPv4 주소
- AAAA : 도메인 이름 ↔ IPv6 주소
- CNAME : 도메인 이름 ↔ 도메인 이름
AWS Route 53 TTL (Time to Live) & Routing 정책
- 권장되는 TTL : 60초 ~ 2일
- 단순 라우팅 : 하나의 인스턴스가 하나의 도메인을 가질 때 단순 라우팅 정책을 사용함.
- 가중치 기반 : 사용자가 각 인스턴스별로 가중치를 부여하여 그 비율만큼 라우팅을 다르게 주는 방식
- 지리적 위치 : 사용자가 어느 곳에 위치하느냐에 따라서 가까운 곳으로 라우팅하는 방식
- 지역 시간 : 각 인스턴스에 대해 지연시간을 분석해서 지연시간이 짧은 쪽으로 라우팅하는 방식
- 장애 조치 : 두 개의 인스턴스에 대해 하나는 active, 나머지는 standby로 구성. active에 문제 생기면 standby로 하는 방식
◆ VPC (Virtual Private Cloud)
VPC란 무엇인가?
- VPC (Virtual Private Cloud)
- AWS 환경에서 존재하는 가상의 네트워크
- Region 단위로 존재하여, 하나의 큰 IP CIDR Block을 가짐.
주요 구성요소
- Subnet (Public / Private)
- Routing Table
- Internet Gateway
- NAT Gateway
Private Subnet vs Public Subnet
Subnet
- VPC가 가지는 큰 IP CIDR 블럭을 Subnetting (서브네팅)하여 용도, 목적별로 분리하여 실제 AWS 서비스가 배치되는 곳
- 가용영역 (AZ) 단위로 서브넷 배포
Public Subnet
- 인터넷과 직접적으로 연결되어 통신 가능한 서브넷
- 인터넷 접속 가능한 EC2 혹은 ALB 배치
Private Subnet
- 인터넷과 완전히 격리된 네트워크 서브넷
- WAS 서버나 DB 서비스 배치
IGW (Internet Gateway)과 Route table은 무엇일까요?
IGW (Internet Gateway)
- VPC라는 격리된 AWS 네트워크 환경에서 인터넷 환경과 마주보고 있는 Gateway
Route Table
- VPC 내의 서브넷들이 보내려는 주소로 가기 위해 어디로 향해 보내야 하는지 정보를 가지는 테이블
- 도착지(Destination)와 대상(Target)으로 구성
VPC 구성해보기 : VPC 및 Subnet 분리
NAT Gateway란 무엇인가요?
NAT Gateway
- Private Subnet에 위치하는 서비스들을 인터넷과 통신하기 위해 Public 주소로 변환해주는 관리형 NAT 서비스
- AZ 내 서브넷 단위로 배포
- 트래픽 흐름 : Private Subnet Instance → NAT Gateway → IGW
- 고 가용성을 위해 AZ별로 각각 배포
- NAT 당 고유한 Public IP 주소 할당
◆ VPC 중급
AWS Elastic IP : AWS Public IP 할당하는 방법
Elastic IP (EIP)
- 탄력적 IP는 인터넷과 직접적으로 통신할 수 있게 해주는 AWS의 Public IP = 전세계적으로 유일한 IP
- 계정 당 최대 5개까지 생성 가능
- 보안을 위해 직접적으로 노출되지 않도록 DNS나 Load Balancer 사용
Public IP 활용 예시 1 : 외부 노출이 필요한 고 가용성 인스턴스
고 가용성 인스턴스
- IP 통신이 필요한 인스턴스의 대표적인 고가용성 구성
- Network Load Balancer는 고유의 Public IP를 가지며, EC2 인스턴스는 Private IP를 가지고도 외부로 통신 가능함.
Public IP 활용 예시 2 : Bastion Host
Bastion Host
- Bastion Host는 퍼블릭 혹은 프라이빗 서브넷에 위치한 EC2 인스턴스를 안전하게 접속하도록 돕는 EC2 Instance
- Private Subnet에 위치한 EC2 인스턴스는 NAT를 통해 외부 통신
- Bastion Host(요새, 방어막)는 NAT를 통해 해당 인스턴스를 SSH 접속
VPC Peering : VPC 간의 연동하는 방법
VPC Peering
- 두 개의 VPC의 트래픽을 라우팅 할 수 있도록 하는 VPC 간의 네트워킹 연결
VPC Peering 사용 예시
- 보안 목적 : Peering을 통해 연결된 VPC는 IGW 구성을 하지 않고 완전히 인터넷 영역과 차단된 환경 구성 가능
- 유연한 서비스 분리 : 백엔드 서비스와 같이 인터넷 서비스와 직접적인 연결이 필요 없는 서비스의 경우, NAT나 Public IP 구성없는 별도 환경 구성 가능
ex. 1개는 인터넷과 연결 / 다른 1개는 인터넷과 차단
VPC Endpoint : 프라이빗 네트워크로 AWS 서비스 접속하는 방법
VPC Endpoint
- VPC 내 존재하는 서비스와 Region에 존재하는 서비스와 통신하기 위해서는 인터넷을 거쳐야 함.
- VPC Endpoint는 인터넷을 거치지 않고, AWS 프라이빗 네트워크를 사용하여 VPC 내 서비스와 Region 내 서비스와 연결
NACL(Network Access Control List)이란 무엇인가요?
NACL(Network Access Control List)
- NACL은 서브넷 레벨에서 트래픽을 관리하는 방화벽
- 서브넷 생성 시 Default NACL이 자동으로 생성되며, 모든 트래픽은 Allow
- 방화벽 규칙은 IP, Port, Protocol로 제어
- 규칙 번호를 가지며, 작은 순서대로 순차적으로 검사
보안 그룹(Security Group) vs NACL
보안 그룹 | NACL | |
적용대상 | 인스턴스 레벨에서 적용 ex. EC2, RDS, 로드밸런서 (서비스별 트래픽 제어) |
서브넷 레벨에서 적용 ex. 서브넷 내에 존재하는 모든 서비스 (광범위한 목적의 트래픽 제어) |
규칙 | 허용 규칙만 허용 (white-list) |
허용 및 거부 규칙 지원 |
상태 저장 | 상태 저장 (stateful) : 규칙에 관계없이 반환 트래픽이 자동으로 허용 |
상태 비 저장 (stateless) : 반환 트래픽이 규칙에 의해 명시적으로 허용 |
우선순위 | 트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가 | 트래픽 허용 여부를 결정할 때 번호가 낮은 규칙부터 순서대로 규칙처리 |
활성화 | 인스턴스 시작 시, 보안 그룹을 인스턴스에 지정해야만 보안 그룹 규칙이 적용됨. | 연결된 서브넷의 모든 인스턴스에 자동 적용 |
VPC 기능을 활용한 아키텍처
- VPC : Region 단위로 생성할 수 있는 VPC는 AWS에 논리적으로 분리된 네트워크 환경임.
- VPC 안은 다시 서브넷으로 분류되고, 인터넷 게이트웨이와 라우팅 테이블을 통해 통신 여부를 설정할 수 있음.
- NAT gateway : 프라이빗 서비스에 접근하고, 노출할 수 있음.
- VPC Peering : VPC 간 통신
- VPC Endpoint : VPC와 외부서비스
- NACL : 서브넷 레벨로 적용할 수 있는 방화벽
◆ AWS 환경에서 탄탄한 웹 서버 구축하기
웹 서버를 구축할 시 고려해야 할 점
성능 | 사용자가 만족할 수준의 충분한 성능을 제공하고 있는가? | Computing, Database, Storage, CloudFront |
안정성 | 해당 서비스는 여러 명이 들어와도 충분히 수용 가능한가? | Instance Type, Loadbalancer, Autoscaling, Read replica |
고 가용성 | 하나의 서비스가 문제가 생겨도 지속적인 서비스가 가능할까? | Region, AZ |
보안 | 구성한 서비스들이 악의적인 접근으로부터 충분히 보호받고 있는가? | IAM, Security group, Subnet, NACL, Encryption |
'교육 > 엘리스 SW 트랙' 카테고리의 다른 글
[엘리스sw] 엘리스 SW 엔지니어 트랙(프론트엔드) 8기 후기 (0) | 2025.07.30 |
---|---|
[엘리스sw] 실습으로 배우는 AWS - ③ AWS Storage, DB CDN 서비스 (0) | 2024.05.20 |
[엘리스sw] 실습으로 배우는 AWS - ② AWS EC2 (0) | 2024.05.19 |
[엘리스sw] 실습으로 배우는 AWS - ① AWS 시작하기 (0) | 2024.05.19 |
[엘리스sw] SQL로 데이터 다루기 Ⅱ (0) | 2024.05.09 |