이제 AWS 서비스를 하나 하나 정리해 보자!
EC2(Elastic Compute Cloud)
아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스이다. 아마존에서 가성의 컴퓨터를 한 대 빌리는 것과 같다.
EC2는 비용, 성능, 용량 면에서 탄력적인 클라우드 컴퓨터를 제공한다.
인스턴스 :
가상 컴퓨팅 환경으로 하나의 서버라고 생각한다.
- AMI(Amazon Machine Image) : 운영체제, 애플리케이션 서버, 그리고 위에서 실행되는 애플리케이션 등 세부 내용을 담고 있다. AMI를 통해 자신이 원하는 수 만큼 인스턴스를 생성할 수 있다.
스토리지 - 인스턴스 루트 볼륨(Instance Root Volume) :
인스턴스 루트 디바이스에는 인스턴스 부팅을 위한 이미지가 포함되어 있다. 이 루트 디바이스는 EBS 혹은 인스턴스 스토어 볼륨 중 하나다.
(실습을 진행하면서 볼륨이 생겼길래 이게 뭐야 하고 지웠는데 중지한 인스턴스가 시작 불가능이라고 버렸는데.. 이게 부팅을 위한 이미지가 있는 볼륨이었던 것 같다~)
- 인스턴스 스토어 기반 인스턴스 : 인스턴스가 론칭되면 루트 디바이스는 S3로 부터 론칭에 필요한 정보를 가져온다. S3를 통해 백업되는 인스턴스 루트 디바이스를 인스턴스 스토어 기반이라고 부른다.
- EBS 기반 인스턴스 : AWS가 EBS를 제공한 이미지를 EBS 볼륨 기반으로 제공하는데 론칭을 할 때 마다 루트 디바이스가 EBS 볼륨에서 론칭되고 EBS 스냅샷을 통해 생성된다. (내가 지원 볼륨은 EBS 기반 인스턴스를 만들면서 생긴 EBS 볼륨같다)
보안
- 키페어 : EC2는 퍼블릭-프라이빗 키 방식을 사용한다.
- 보안 그룹(Security Group) : 하나 혹은 다수의 인스턴스에 대한 트래픽을 통제하는 가상의 방화벽이다. 인스턴스에 하나 혹은 다수의 보안 그룹을 연결하여 해당 인스턴스로 유입되거나 유출되는 트래빅에 대한 처리 규칙을 설정한다.
- 기본적으로 모든 아웃바운드 트래픽을 허용한다.
- 허용여부만을 정하고 거부여부는 정할 수 없다.
- 보안그룹은 스테이트풀 속성을 갖는다. 인스턴스가 요청을 보낼경우 인바운드 규틱과 상관없이 응답 트래픽은 허용된다.
- 언제든 추가, 삭제가 가능하다.
- 하나의 인스턴스에 여러개의 보안그룹을 연결하면 보안그룹은 단일 규칙 세트로 인스텅스에 적용되고 이 규칙 세트를 통해 트래픽의 허용 여부를 결정할 수 있다.
네트워킹 - Instance IP 주소 지정
- 프라이빗 IPv4 : 인터넷을 통해 연결할 수 없는 IP 주소. 동일 VPC 인스턴스 간 통신을 위해 사용된다. 인스턴스 시작 시 기본 프라이빗 IPv4 주소와 내부 DNS 호스트 이름이 할당됩니다
- 퍼블릭 IPv4 : 인터넷을 통해 연결할 수 있는 IPv4 주소. 인스턴스와 인터넷 상호 통신을 위해 사용한다. 인스턴스 중지 혹은 최대 절전 모드로 전환 후 다시 재시작될 경우 새 퍼블릭 IP 주소가 할당된다. (이 부분은 직접 체험했다..^^) 영구 퍼블릭 IP 주소가 필요한 경우 Elastic IP를 사용한다.
- Elastic IP : 동적 클라우드 컴퓨팅을 위해 고안된 정적 IPv4이다. AWS 계정에 할당되며 해제할 때 까지 유지가 된다. 다른 인스턴스에 매핑하여 오류를 마스킹할 수 있다. 도메인에 대한 Elastic IP도 지정이 가능하다.
Storage
인터넷 공간에 데이터를 저장하는 저장소이다. 컴퓨터로 따지면 하드디스크의 역할을 하는 서비스.
- 객체 스토리지 (object storage) : 문서, 이미지 등 단순한 구조에 메타데이터를 포함하고 있는데이터 (S3)
- 블록 스토리지 (block storage) : 서버 인스턴스에 디스크 볼륨 형태로 제공되는 데이터 (EBS)
- 파일 스토리지 (file storage) : 서버 인스턴스에 파일 시스템 인터페이스 방식으로 제공되는 데이터 (EFS)
Q. 객체, 블록, 파일 스토리지의 차이점과 장단점은 무엇일까?
객체, 블록, 파일 스토리지는 데이터를 저장하고 처리하는 방법의 차이를 가지고 있습니다.
- 객체: 속성과 메서드를 가진 데이터 구조입니다. 자바스크립트에서는 객체가 중요한 개념 중 하나이며, 변수, 함수 등을 포함하는 객체를 만들 수 있습니다. 객체는 데이터의 구조화와 캡슐화를 가능하게 합니다. 객체의 장점은 데이터를 쉽게 조작할 수 있다는 점입니다. 객체는 속성 이름으로 데이터를 검색하고, 속성 이름을 통해 데이터를 삽입하거나 제거할 수 있습니다.
- 블록: 블록은 일반적으로 프로그래밍 언어에서 제어 구조에 사용됩니다. 블록은 중괄호({})로 묶여 있으며, 일련의 문장들을 하나의 단위로 묶어서 실행할 수 있게 합니다. 블록의 장점은 코드의 구조화와 가독성을 높일 수 있다는 점입니다. 블록은 여러 문장을 묶어서 하나의 명령으로 처리할 수 있기 때문에, 코드를 구조화하고 가독성을 높일 수 있습니다.
- 파일 스토리지: 파일 스토리지는 파일 시스템에서 파일을 저장하는 영역을 말합니다. 파일 스토리지는 영구적인 데이터 저장이 가능하며, 파일 시스템을 통해 쉽게 접근할 수 있습니다. 파일 스토리지의 장점은 대용량 데이터를 저장할 수 있다는 점입니다. 파일 스토리지는 대용량 데이터를 저장하고 검색하는 데 유용합니다.
각각의 방식은 다른 장단점을 가지고 있으며, 사용 목적에 따라 적절한 방식을 선택해야 합니다. 객체는 데이터의 구조화와 캡슐화, 블록은 코드의 구조화와 가독성, 파일 스토리지는 대용량 데이터 저장과 검색에 유용합니다.
[ 출처 : chat GPT ]
Storage - S3(Simple Storage Service)
AWS 대표 스토리시 서비스로 객체 스토리지이다. 데이터 백업, 정적 웹사이트 호스팅, 애플리케이션 호스팅, 재단 복구, 콘텐츠 복구 데이터 레이트, 프라이빗 저장소 등에 활용할 수 있다. (실습에서는 S3는 주로 정적 웹사이트 호스팅을 할 때 사용하였다)
- 버킷(bucket) : 객체를 저장하는 컨테이너. 파일을 담는 폴더. 버킷내에 여러개의 폴더를 생성할 수 있다.
- 객체(object) : 단순 구조의 메타 데이터를 포함하고 있는 데이터. 버킷에 저장된 모든 것을 객체하고 한다. 버킷에 존재하는 모든 객체는 단 하나의 키를 갖는다.
접근성 통제
S3 버킷에 누가 어떻게 접근할 것인지 정의한다. JSON 을 이용해 작성된 policy를 통해 이루어지며 접근정책, 버킷정책, 접근제어 목록 등의 방식을 사용한다.
하나의 Statement에는 하나의 permission 정보가 포함된다. 정책에 포함된 다수의 statement는 논리합 관계(Logical OR) 관계를 맺는다.
접근 정책 (Identity-based policies)
: IAM 즉 신분 및 접근 관리 정책으로 S3의 객체를 매우 세분화해 통제할 수 있다. 유저, 그룹, 롤 등 IAM 정책을 정의한다. IAM과 S3를 이용하면 특정 IAM 유저와 공유되고 있는 버킷을 선택하고 특정 유저가 버킷에 접근하도록 허용할 수 있다. 특정 버킷의 내용을 회원 혹은 일부 회원이 열람할 수 있고 고객, 파트너가 특정 버킷에 객체를 추가하도록 허용할 수 있다.
버킷 정책(Resource-based policies)
버킷 레벨에서 생성한 정책을 의미. S3 버킷을 세분화된 방식으로 제어할 수 있다,
Storage - EBS(Elastic Block Store)
aws에서 사용할 수 있는 블록 수준 영구 스토리지 볼륨이다. 영구 스토리지는 EC2 인스턴스 수명주기를 넘어서 존재할 수 있는 스토리지. EC2에 EBS 볼륨을 부착하면 서버를 위한 하드라이브 같은 기능을 수행한다. EC2에 여러개의 EBS를 탈부착할 수 있다. 그러나 다른 AZ에 있는 EC2와 EBS는 불가능하다.
Storage - EFS(Elastic File System)
파일시스템을 생성하고 EC2에 인스턴스 파일 시스템을 탑재한 후 파일 시스템에 데이터를 작성하거나 파일 시스템에서 데이터를 읽을 수 있습니다. 앱을 중단하지 않고 온디맨드 방식으로 페타바이트까지 확장되도록 구축되어 사용자가 파일을 추가하고 제거할 때 자동으로 확장/축소된다.
RDS
데이터베이스 관리 시스템. AWS는 관계형 데이터베이스 호스팅 및 관리 서비스인 Amazon Relational Database Service(RDS)를 제공한다.
- 온프레미스 데이터 센터에서 데이터베이스 호스팅 : 전원, 네트워크 환경설정, 앱 최적화, 데이터베이스 SW 업데이트 등 데이터 센터 운영을 위한 모든 업무를 직접 수행해야한다.
- Amazon EC2 서버에 데이터베이스 호스팅 : 사용자는 DB 소프트웨어 설치, 패치, 데이터베이스 백업, 앱 최적화 등을 관리하고 AWS는 OS설치, 서버유지 보수, 서버 랙 관리, 네트워크 관리 등의 업무를 처리한다.
- Amazon RDS를 이용해 데이터베이스 호스팅 : AWS가 데이터베이스 설치부터 업드레이드 등 데이터베이스 호스팅과 관련된 모든 복잡한 업무를 대신 처리한다. 사용자는 애플리케이션 최적화만 집중하면 된다.
RDS의 장점
- 인프라 관리 불필요
- 즉각적인 프로비저닝
- 확장성관리
- 애플리케이션 호환성
- 고가용성
- 보안유지
VPC(Virtual Private Cloud)
클라우드 내 프라이빗 공간을 제공함으로써, 클라우드 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 한다.
VPC가 없을때에는 클라우드에 있는 리소스를 격리할수 있는 방법이 없어 인스턴스들이 서로 연결되어 있고, 인터넷과 연결되어 시스템의 복잡하고 의존도가 높았다.따라서 유지관리에 많은 비용과 노력이 필요했다.
VPC를 분리하면서 확장성과 네트워크에 대한 통제권이 생겨났다.
IP Address
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해 사용하는 번호로 IPv4, IPv6로 나뉘어있으며 혼용하여사용한다. 2진수 8자리의 형태를 십진수의 형태로 보기 편하도록 변형한 것이다. 실제로는 8bit씩 총 32bit로 구성괴어 있다. 각 8bit를 옥텟이라고 부른다. 따라서 IPv4는 4개의 옥텟으로 이루어져 있다.
IP Address Class
IPv4 주소는 호스트가 연결되어 있는 특정 네트워크를 가르키는 8비트의 네트워크 영역과 해당 네트워크 내에서 호스트의 주소를 가르키는 나버지 영역을구분하기 위해 클래스를 사용했다. A,B,C,D,E 5가지의 클래스로 나누어져 있다. D,E 클래스는 멀티캐스트용, 연구개발을 위한 예약 IP로 사용하지 않습니다.
- A클래스
Network Address | Host Address | Host Address | Host Address |
0-127 | 0-255 | 0-255 | 0-255 |
- 0.0.0.0의 경우 자체 네트워크를 의미하기 때문에 제외되고 127.0.0.0 ~ 127.255.255.255 자기 자신을 가리키기 위한 목적으로 예약된 IP로 사용할 수 없다,
- B클래스
Network Address | Host Address | Host Address | Host Address |
128-191 | 0-255 | 0-255 | 0-255 |
- C클래스
Network Address | Host Address | Host Address | Host Address |
192-223 | 0-255 | 0-255 | 0-255 |
CIDR(Classess inter-domain routing)
사이더는 클래스가 없는 도메인 간 라우팅 기법으로 1993년 국제 표준의 IP주소 할당 방법이며 IP클래스 방식을 대체한 방식이다.
기존에는 클래스에 따라 정해진 Network Address와 Host Address를 사용해야했다면 CIDR는 원하는 블록만큼 Network Address를 지정하여 운용할 수 있다.
/16은 첫 16bit를 Network Address로 사용한다는 의미
서브넷(Subnet)
서브네트워크의 줄임말로 IP 네트워크의 논리적인 하위 부분을 가르킨다. 서브넷을 통하여 하나의 네트워크를 여러 개로나눌 수 있다. VPC를 사용하면 퍼블릭 서브넷, 프라이빗 서브넷, VPN only 서브넷 등 필요에 따라 다양한 서브넷을 생성할 수 있다.
- 퍼블릭 서브넷 : 인터넷을 통해 연결할 수 있는 서브넷
- 프라이빗 서브넷 : 인터넷을 연결하지 않고 보안을 유지하는 배타적인 서브넷
- VPN only 서브넷 : 기업 데이터 센터와 VPC를 연결하는 서브넷
서브넷은 VPC의 CIDR 블록을 이용해 정의되며 최소 크기는 /28이다. 서브넷은 AZ당 최소 하나를 사용할 수 있고 여러개의 AZ에 연결되는 서브넷은 만들 수 없다.
라우팅 테이블(Routing Table)
트래픽의 전송 방향을 결정하는 라우트와 관련된 규칙을 담은 테이블로 목적지를 향한 최적의 경로로 데이터 패킷을 전송하기 위한 모든 정보를 담고 있다.
테이블은 하나의 지점에서 또 다른 지접으로 가기 위한 모든 정보를 제공하기 위한 테이블이다.
각각의 서브넷은 항상 라우팅 테이블을 가지고 있어야 한다. 하나의 라우팅 테이블 규틱을 여러개의 서브넷에 연결하는 것도 가능하다. 서브넷을 생성하고 별도의 라우팅 테이블을 생성하지 않으면 클라우드가 자동으로 VPC의 메인 라우팅 테이블을 연결한다.
오늘의 회고..
AWS 챕터를 배운지 일주일이 넘어가지만.. 그래도 어찌어찌 포스팅을 했당..
AWS에 조금은 익숙해졌을까..? 다시 복습하면서 보니 처음 볼때보다 훨씬 이해가 잘된다.
늦게 포스팅한게 오히려 좋을 수도..?
틀린 퀴즈도 보면서 왜 내가 저걸 틀렸을까 싶었당ㅋㅋ
스프린트를 따라하고 개념을 복습하니 더 와닿는 것 같다.
내일은 AWS 스프린트를 다시 보면서 정리해야겠당
'코드스테이츠_Devops_4기 > section2) 클라우드 서비스 운영' 카테고리의 다른 글
Section2 실습과제 Day 2 (0) | 2023.05.01 |
---|---|
Section2 실습과제 Day 1 (0) | 2023.04.27 |
Section2 AWS (0) | 2023.04.21 |
Section2 Docker (1) | 2023.04.16 |
Section2 YAML (0) | 2023.04.12 |