-
TIL 2023.05.02내일배움캠프 2023. 5. 2. 19:48
AWS 클라우드 소개
AWS는 Amazon Web Services의 약어로, 아마존닷컴이 제공하는 클라우드 컴퓨팅 플랫폼입니다. AWS는 전 세계에 분산되어 있는 데이터 센터에서 고객에게 IT 인프라를 제공하며, 이를 사용하여 고객은 필요한 인프라를 빠르고 쉽게 설정하고 관리할 수 있습니다.
AWS의 주요 서비스는 다음과 같습니다.
- 컴퓨팅: EC2 (Elastic Compute Cloud), Elastic Beanstalk 등
- 데이터베이스: RDS (Relational Database Service) 등
- 스토리지: S3 (Simple Storage Service), EBS (Elastic Block Store)등
- 네트워킹: VPC (Virtual Private Cloud), CloudFront, Route 53 등
- 보안: IAM (Identity and Access Management) 등
이번 과정을 통해서 AWS의 핵심에 대해서 배워보겠습니다!
Onpremise란?
On-premise 서버는 조직 내부에 설치되고 유지보수되는 서버입니다. 즉, 서버가 조직의 물리적인 위치에 있으며 조직의 IT 인프라를 관리하는 팀이 해당 서버를 관리하고 유지보수합니다. 이러한 서버는 일반적으로 조직의 중요한 데이터나 애플리케이션을 호스팅하고 보호하기 위해 사용됩니다.
On-premise 서버는 클라우드 서비스와 대조적입니다. 클라우드 서비스는 일반적으로 인터넷을 통해 액세스할 수 있는 외부 데이터 센터에서 호스팅됩니다. 클라우드 서비스를 사용하면 조직은 자체 IT 인프라를 보유하지 않아도 됩니다. 대신 클라우드 제공 업체가 서버를 관리하고 유지보수합니다.
Region and Availability Zone
- AWS 리전(Region)은 세계 각지에 있는 AWS 데이터 센터의 물리적인 위치를 의미합니다. 각 리전은 여러 개의 가용 영역(Availability Zone, AZ)으로 구성되어 있습니다. 가용 영역은 독립적인 데이터 센터로 구성되어 있으며, 네트워크 연결로 연결되어 있습니다.
- 여러개의 AZ를 씀으로써 데이터센터가 재해상황에 빠졌을때도 서비스를 유지할 수 있는 고가용성을 확보할 수 있습니다.
고가용성
고가용성(High Availability)은 시스템이 예기치 않은 장애 또는 중단에도 불구하고 지속적으로 작동하는 능력을 말합니다.
IAM 소개
AWS Identity and Access Management (IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하면 AWS에서 사용자, 그룹 및 역할을 생성하고 관리하여 리소스에 대한 액세스를 안전하게 제어할 수 있습니다.
IAM을 사용하면 다음과 같은 보안 기능을 수행할 수 있습니다.
- 인증: IAM을 사용하여 사용자가 AWS 리소스에 액세스할 때 사용자 이름과 암호를 요청하여 인증할 수 있습니다.
- 권한 부여: IAM을 사용하여 사용자, 그룹 또는 역할에 대한 권한을 지정할 수 있습니다. 권한은 AWS 리소스에서 수행할 수 있는 작업을 나타내며 IAM 정책을 사용하여 지정할 수 있습니다.
- 권한 검증: IAM을 사용하여 사용자가 AWS 리소스에 대한 액세스를 요청할 때 요청이 인증된 사용자에게 허용되는지 여부를 결정할 수 있습니다. IAM은 권한 검증을 수행하기 위해 사용자가 AWS 리소스에 대한 액세스를 요청할 때 IAM 정책을 적용합니다.
IAM은 AWS에서 보안을 강화하고 규정 준수 요구 사항을 충족하는 데 중요한 역할을 합니다. IAM을 사용하면 사용자에게 필요한 권한만 부여하여 보안을 유지하고, 일부 규정 준수 규정을 준수하기 위해 일부 사용자에게만 특정 리소스에 대한 액세스를 부여할 수 있습니다
Users, Groups, Policies
- 사용자(User): IAM에서 사용자는 AWS 계정에 액세스하는 개별 인물 또는 서비스입니다. AWS IAM에서는 계정에 액세스하는 각 사용자에 대해 별도의 보안 자격 증명을 생성할 수 있습니다. 이를 통해 사용자가 AWS 리소스에 대한 액세스 권한을 가지며, 이러한 액세스 권한은 IAM 정책을 사용하여 관리됩니다.
- 그룹(Group): IAM에서 그룹은 하나 이상의 사용자를 그룹화하여 이들에게 공통된 권한을 부여하는 데 사용됩니다. 예를 들어, 특정 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스를 가진 모든 사용자를 그룹화할 수 있습니다. 그룹에 대한 권한은 IAM 정책을 사용하여 관리됩니다. 그룹은 유사한 권한을 가진 여러 사용자를 효과적으로 관리할 수 있도록 도와줍니다.
- 정책(Policy): IAM 정책은 AWS 리소스에 대한 액세스 권한을 지정하는 데 사용되며, 사용자 또는 그룹과 연결됩니다. IAM 정책은 JSON 형식으로 작성되며, 허용 또는 거부할 수 있는 작업 및 AWS 리소스에 대한 액세스 수준을 지정합니다. IAM 정책은 일반적으로 최소 권한 원칙을 따릅니다. 즉, 필요한 권한만 부여하고, 불필요한 권한을 제거하여 보안을 강화합니다.
위와 같이 IAM에서는 사용자, 그룹, 정책을 사용하여 AWS 리소스에 대한 액세스 권한을 지정하고 관리합니다. 이를 통해 AWS 리소스에 대한 보안을 강화하고, 사용자에게 필요한 권한만 부여하여 보안을 유지할 수 있습니다.
Policy Structure
{ "Version": "policy-version", "Statement": [ { "Effect": "allow-or-deny", "Action": ["action-name"], "Resource": ["resource-arn"], "Condition": { "condition-operator": { "condition-key": "condition-value" } } } ] }
- Version: 정책의 버전을 나타냅니다. 현재는 "2012-10-17" 에서 고정되었습니다.
- Statement: 정책의 규칙을 나타냅니다. 배열 형태로 여러 개의 규칙을 작성할 수 있습니다.
- Effect: 규칙의 적용 여부를 나타냅니다. "allow" 또는 "deny" 중 하나를 선택합니다.
- Action: 규칙이 적용되는 작업의 종류를 나타냅니다. 예를 들어 "s3:ListBucket"과 같은 형식으로 작성합니다.
- Resource: 규칙이 적용되는 리소스의 ARN (Amazon Resource Name)을 나타냅니다. 예를 들어 "arn:aws:s3:::my-bucket/*"과 같은 형식으로 작성합니다.
- Condition: 규칙이 적용되는 조건을 나타냅니다. 필수는 아니며, 필요한 경우 추가할 수 있습니다. 다양한 조건 연산자를 사용할 수 있습니다. 예를 들어 "IpAddress" 조건 연산자를 사용하면 특정 IP 주소에서만 작업을 수행할 수 있도록 제한할 수 있습니다.
MFA
MFA는 Multi-Factor Authentication의 약어로, 다중 인증 요소 인증 방식을 의미합니다. 이 방식은 일반적인 사용자 ID와 비밀번호 입력 외에 추가적인 인증 요소를 요구하여 보안을 강화하는 방법입니다.
예를 들어, 일반적인 로그인 절차에서는 사용자가 ID와 비밀번호를 입력하여 인증을 완료합니다. 그러나 MFA를 사용하는 경우, 사용자는 일반적인 로그인 정보 외에도 추가적인 인증 요소를 제공해야 합니다. 이는 일반적으로 사용자의 소유물인 스마트폰 또는 하드웨어 보안 토큰 등을 사용하여 구현됩니다.
MFA를 사용하면 사용자의 로그인 정보가 유출되었을 경우에도 보안을 유지할 수 있습니다. 예를 들어, 악의적인 공격자가 사용자의 ID와 비밀번호를 훔쳐서 로그인을 시도해도, MFA를 사용하면 추가적인 인증 요소를 입력하지 않는 한 로그인이 불가능합니다. 이를 통해 AWS와 같은 클라우드 서비스에서는 중요한 데이터와 리소스를 안전하게 보호할 수 있습니다.
Billing
AWS Billing은 AWS 계정 사용량과 비용을 모니터링하고, 요금 청구 정보를 제공하는 서비스입니다. AWS 사용량과 비용을 모니터링하고 분석함으로써, 비즈니스에서 AWS 비용을 최적화할 수 있습니다.
AWS Billing은 다음과 같은 기능을 제공합니다.
- 사용량 모니터링: AWS에서 제공하는 모든 서비스에 대한 사용량을 모니터링할 수 있습니다. 사용량 정보는 서비스별로 제공되며, 월간, 일간 또는 실시간 데이터를 확인할 수 있습니다.
- 비용 분석: AWS에서 제공하는 서비스에 대한 비용을 분석하고, 서비스별, 리전별, 태그별 또는 사용자별로 비용을 확인할 수 있습니다. 또한 예상 비용을 분석하여, 비용을 줄이는 방안을 찾을 수 있습니다.
- 청구 정보 확인: AWS 계정에 대한 요금 청구 정보를 확인할 수 있습니다. 청구 정보에는 사용량, 비용, 청구 일자 등이 포함됩니다.
- 예산 설정: AWS에서 제공하는 예산 설정 기능을 사용하여, 비용을 제어하고 예산 초과를 방지할 수 있습니다.
AWS Billing은 AWS Management Console, API 또는 CLI를 통해 사용할 수 있으며, 사용자가 원하는 방식으로 사용할 수 있습니다. 또한 AWS 계정 설정을 통해 알림 설정을 할 수 있어, 예산 초과나 다른 문제 발생 시 즉시 알림을 받을 수 있습니다.
EC2 기초
클라우드 서비스의 종류
- IaaS (Infrastructure as a Service) : 하드웨어 인프라를 인터넷을 통해 제공하는 서비스를 말합니다. IaaS는 가상화된 하드웨어, 스토리지, 네트워크, 운영체제 등을 제공하며, 사용자는 이를 이용해 자신의 애플리케이션을 실행할 수 있습니다. AWS EC2, Microsoft Azure, Google Compute Engine 등이 IaaS 서비스를 제공합니다.
- PaaS (Platform as a Service) : 애플리케이션을 개발, 실행, 관리하기 위한 플랫폼을 인터넷을 통해 제공하는 서비스를 말합니다. PaaS는 IaaS에서 제공하는 하드웨어 인프라와 미들웨어를 이용하여, 애플리케이션 개발, 배포, 운영 등에 필요한 환경을 제공합니다. 예를 들어, AWS Elastic Beanstalk, Heroku, Google App Engine 등이 PaaS 서비스를 제공합니다.
- SaaS (Software as a Service): SaaS는 사용자에게 완전한 애플리케이션을 제공하며, 이 애플리케이션은 클라우드 제공업체의 서버에서 실행됩니다. 사용자는 애플리케이션에 대한 제한된 제어권을 가지며, 클라우드 제공업체가 모든 인프라, 운영 체제, 백엔드 애플리케이션 및 데이터 관리를 담당합니다. SaaS는 대부분의 사용자에게 필요한 소프트웨어 서비스를 제공합니다. 예를 들어, 구글 드라이브, 마이크로소프트 오피스 365, Salesforce 등이 SaaS 서비스의 예입니다.
AWS EC2 (Elastic Compute Cloud)는 클라우드 컴퓨팅 서비스 중 하나로, 가상 서버 인스턴스를 제공합니다. EC2를 사용하면 필요한 시간만큼 가상 서버를 생성하고 사용할 수 있으며, 필요에 따라 스케일 업 또는 스케일 다운할 수 있습니다.
이 환경은 실제로는 하드웨어 리소스를 가상화하여 사용하고 있기 때문에, 하드웨어 상에서 실행 중인 물리적인 서버와는 다릅니다. 따라서, 이러한 가상화된 컴퓨터 환경을 "인스턴스(instance)" 라고 부르게 되었습니다.
각 인스턴스는 독립적으로 실행되고 관리됩니다. 이러한 인스턴스들은 필요에 따라 생성, 시작, 중지, 종료 등이 가능합니다.
EC2 인스턴스는 다양한 운영 체제 (예: Linux, Windows)와 인스턴스 유형 (예: 범용, 컴퓨팅 최적화, 메모리 최적화)을 지원합니다.
EC2는 다양한 용도로 사용될 수 있으며, 주요 사용 사례는 다음과 같습니다.
- 웹 애플리케이션 호스팅
- 데이터베이스 호스팅
- 컴퓨팅 작업 (예: 데이터 분석, 머신 러닝)
- 애플리케이션 테스트 및 개발
EC2는 유연하게 스케일링할 수 있으며, 필요에 따라 인스턴스를 추가하거나 제거하여 자원 사용량을 조절할 수 있습니다. 또한 AWS의 다른 서비스와 통합하여 다양한 용도로 사용할 수 있습니다.
EC2의 다양한 옵션들
- 인스턴스 유형 (Instance Types) - 인스턴스 유형은 서버에 할당되는 CPU, 메모리, 스토리지 및 네트워크 리소스와 같은 기본 성능 특성을 결정합니다. 예를 들어, 일부 인스턴스 유형은 컴퓨팅 작업에 적합하고, 다른 유형은 메모리 집약적인 작업에 적합합니다.
- 운영 체제 (Operating System) - EC2 인스턴스는 다양한 운영 체제를 지원합니다. 예를 들어, Amazon Linux, Ubuntu, Windows 등이 있습니다.
- 스토리지 옵션 (Storage Options) - EC2 인스턴스에는 인스턴스 스토어, Amazon EBS 및 Amazon S3와 같은 다양한 스토리지 옵션이 있습니다.
- 보안 그룹 (Security Groups) - 보안 그룹은 인바운드 및 아웃바운드 트래픽을 제어하는 방화벽 규칙입니다. 각 보안 그룹은 포트 범위, 프로토콜 및 허용되는 IP 주소 범위를 정의할 수 있습니다.
- 키 페어 (Key Pair) - 키 페어는 EC2 인스턴스에 대한 SSH 액세스를 허용합니다. 키 페어를 만들면 EC2 인스턴스를 시작할 때 키 페어를 선택할 수 있습니다.
- 탄력적 IP 주소 (Elastic IP Address) - 탄력적 IP 주소는 EC2 인스턴스에 고정 IP 주소를 할당합니다. 이는 EC2 인스턴스를 중지하거나 시작할 때마다 IP 주소가 변경되는 것을 방지할 수 있습니다.
- 사용 가능한 영역 (Availability Zones) - EC2 인스턴스는 여러 가용 영역에서 실행될 수 있습니다. 이는 장애 대응 및 고가용성을 위해 중요합니다.
인스턴스 띄워보기
sudo apt-get update sudo apt-get install nginx echo "<h1>EC2로 띄워봤음! $(hostname -f)</h1>" > /usr/share/nginx/html/ sudo systemctl start nginx
인스턴스 타입 명칭
Amazon EC2 인스턴스 유형 – Amazon Web Services
보안 규칙을 위한 Security Group과 Ports
보안규칙
- 여러 인스턴스에 할당 가능
- time out → 보안규칙 이슈
- connection refuse → ec2 내부 이슈
- 모든 inbound는 디폴트로 막혀있습니다.
- 모든 outbound는 디폴트로 열려있습니다.
포트
- 22 = ssh(secure shell)로 인스턴스에 원격 접속
- 21 = FTP 파일전송 프로토콜
- 80 = http 웹 접속
- 443 = https 안전한 http 접속, 현재의 스탠다드
SSH 연결
chmod는 파일이나 디렉토리의 권한을 변경하는 유닉스 명령어입니다. 파일이나 디렉토리는 소유자, 그룹, 그리고 나머지 세 개의 사용자 카테고리를 갖습니다. 각 카테고리에 대해 읽기(read), 쓰기(write), 실행(execute)의 권한을 설정할 수 있습니다.
chmod 400
chmod 400은 파일 권한 설정 중 하나입니다. 이 권한을 설정하면 해당 파일에 대해 읽기 권한만 부여됩니다. 숫자 400은 소유자에 대한 읽기 권한을 의미합니다. 다른 사용자들은 읽기 및 쓰기 권한이 없습니다. 이 권한은 일반적으로 중요한 정보를 포함하는 파일이나 개인 키 파일과 같은 보안 파일에 적용됩니다.
chmod 644 명령은 file.txt 파일의 권한을 다음과 같이 변경합니다.
- 소유자: 읽기와 쓰기 권한
- 그룹: 읽기 권한
- 나머지: 읽기 권한
EBS
Amazon Elastic Block Store (EBS)는 Amazon EC2 인스턴스에 연결할 수 있는 블록 수준 스토리지 볼륨입니다. EBS 볼륨은 네트워크를 통해 Amazon EC2 인스턴스에 연결되므로 데이터 지속성, 스냅샷 백업 및 다른 인스턴스에서 쉽게 사용할 수 있습니다. EBS 볼륨은 데이터의 지속성을 보장하기 위해 AWS 내에서 복제 및 백업되므로 안정적이고 내결함성이 높은 스토리지 옵션입니다.
인스턴스를 terminate 한 후에도 데이터를 유지할 수 있습니다.
특정 AZ에 한정됩니다.
인스턴스의 usb 메모리라고 생각할 수 있습니다.
하나의 인스턴스에서 떼어서 다른 인스턴스에 꽂을 수 있습니다.
하나의 EBS는 하나의 인스턴스에만 연결될 수 있지만 하나의 인스턴스에는 여러개의 EBS가 연결될 수 있습니다.
EBS snapshot
EBS(Elastic Block Store) 스냅샷(Snapshot)은 EBS 볼륨의 데이터를 백업하는 데 사용되는 Amazon Web Services(AWS)의 기능입니다. 스냅샷은 EBS 볼륨의 데이터를 인스턴스 내에서 복제하고, 이를 S3에 저장합니다. 스냅샷은 EBS 볼륨의 모든 데이터를 포함하므로, 데이터를 백업하고 나중에 이전 상태로 복원할 수 있습니다.
EBS 스냅샷은 다음과 같은 몇 가지 용도로 사용될 수 있습니다.
- 데이터 백업 및 복원: 스냅샷을 사용하면 EBS 볼륨의 데이터를 백업하고 나중에 이전 상태로 복원할 수 있습니다.
- 볼륨 확장: 스냅샷을 사용하여 EBS 볼륨의 크기를 확장할 수 있습니다. 스냅샷에서 새로운 볼륨을 생성하고, 기존 볼륨에서 새로 생성한 볼륨으로 데이터를 복사할 수 있습니다.
- 데이터 마이그레이션: 스냅샷을 사용하여 EBS 볼륨의 데이터를 다른 지역으로 이동할 수 있습니다.
스냅샷은 필요에 따라 자동으로 스케줄링할 수 있으며, 각 스냅샷은 다른 스냅샷과 차이점만 저장됩니다. 따라서 이전 스냅샷에 비해 적은 양의 스토리지 공간이 필요합니다. 스냅샷은 EBS 볼륨의 상태를 복원할 때 사용되며, 이전 상태로 데이터를 복원하면 해당 스냅샷을 기반으로 새로운 EBS 볼륨이 생성됩니다
AMI 소개
- EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함되어 있습니다.
- 이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정할 수 있습니다.
- AMI는 Amazon에서 제공하는 것뿐만 아니라 개발자가 직접 생성할 수도 있습니다.
- 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유할 수도 있습니다.
EBS와 AMI의 차이
Amazon Elastic Block Store (EBS)와 Amazon Machine Image (AMI)는 Amazon Web Services (AWS)에서 사용되는 서비스입니다.
Amazon EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨입니다. 이 볼륨은 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용됩니다. EBS는 인스턴스를 종료해도 볼륨에 저장된 데이터를 보존합니다.
반면, Amazon Machine Image (AMI)는 EC2 인스턴스를 시작할 때 사용되는 이미지입니다. AMI는 이미 설치된 운영 체제와 애플리케이션을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보를 포함합니다. 이를 통해 AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있습니다.
AMI는 EBS 스냅샷을 사용하여 생성될 수 있습니다. EBS 스냅샷은 EBS 볼륨의 이미지입니다. AMI를 생성할 때 EBS 스냅샷을 사용하면 인스턴스를 시작할 때 EBS 볼륨이 생성되고, 해당 볼륨에는 이전 인스턴스와 동일한 데이터가 저장됩니다.
따라서 AMI는 EC2 인스턴스를 시작할 때 사용하는 이미지이며, EBS는 인스턴스에 연결되어 데이터를 저장하고 보존하는 데 사용되는 스토리지 볼륨입니다. AMI를 생성하는 데 EBS 스냅샷을 사용할 수 있습니다.
Scalability vs Availability
Scalability와 Availability는 모두 분산 시스템에서 중요한 개념이지만 서로 다른 개념입니다.
Scalability는 시스템이 커지거나 작아질 수 있는 능력을 의미합니다. 이는 사용자 수, 데이터 양, 처리량 등이 증가할 때 시스템의 성능과 처리 능력을 유지하거나 향상시키는 것을 말합니다. 이를 위해서는 확장성 있는 시스템 디자인과 구현이 필요합니다.
반면 Availability는 시스템이 정상적으로 작동하고 사용 가능한 상태를 유지하는 능력을 의미합니다. 즉, 사용자가 요청하는 서비스를 항상 이용 가능한 상태로 유지하는 것입니다. 이를 위해서는 시스템의 안정성을 높이고 장애 대응 능력을 강화하는 것이 중요합니다.
따라서, Scalability는 시스템의 성능과 처리 능력을 유지하거나 향상시키는 능력을 의미하고 Availability는 시스템의 안정성과 사용 가능한 상태를 유지하는 능력을 의미합니다. 둘 다 중요한 개념이며, 분산 시스템을 설계하고 구현할 때 모두 고려해야 합니다.
ELB 살펴보기
Elastic Load Balancer는 AWS에서 제공하는 로드 밸런싱 서비스로, 다수의 EC2 인스턴스를 사용하여 트래픽을 분산시킵니다. 다양한 유형의 로드 밸런서가 있으며 각각의 특징은 아래와 같습니다.
- Application Load Balancer: OSI 모델 7계층에서 동작하며, HTTP/HTTPS 트래픽을 처리합니다. 또한, 컨테이너화된 애플리케이션과 연동하여 사용할 수 있습니다.
- Network Load Balancer: OSI 모델 4계층에서 동작하며, TCP/UDP 트래픽을 처리합니다. 높은 처리량을 필요로 하는 애플리케이션에 적합합니다.
- Classic Load Balancer: OSI 모델 4~7계층에서 동작하며, HTTP/HTTPS, TCP/UDP 트래픽을 처리합니다. 가장 오래된 형태의 로드 밸런서이며, 대부분의 경우 Application Load Balancer나 Network Load Balancer를 사용하는 것이 좋습니다.
각각의 로드 밸런서는 다양한 기능과 구성을 제공하며, 선택적으로 사용할 수 있습니다. 예를 들어 Application Load Balancer는 URL 경로 라우팅, 호스트 기반 라우팅 등 다양한 라우팅 정책을 제공합니다. 이러한 로드 밸런서는 고가용성과 확장성을 제공하므로, 인스턴스의 장애와 부하 분산에 대한 대응을 용이하게 해줍니다.
Application Loadbalancer 사용해보기
#!/bin/bash apt-get update apt-get install -y nginx cat <<EOF > /var/www/html/index.html <!DOCTYPE html> <html> <head> <title>Welcome to Nginx</title> </head> <body> <h1>Hello World!</h1> <p>AWS deployed by Me!</p> <p>private ip is $(hostname -f)</p> </body> </html> EOF sudo systemctl start nginx
SSL과 HTTPS
SSL 이란 ? Secure Sockets Layer
인터넷 상에서 정보를 안전하게 전송하기 위한 프로토콜입니다. SSL은 클라이언트와 서버 사이에 안전한 접속을 만들어주며, 전송되는 데이터를 암호화하여 정보의 안전성을 보장.
TLS란? Transport Layer Security
SSL을 보완한 기술로 현재는 사실 SSL이 아니라 TLS 기술이다.
그러나 모두가 아직까지 SSL이라고 부르고 있다!
- ssh와 ssl의 차이점을 설명할 수 있나요?
How HTTPS Works
🙀 A cat explains how HTTPS works...in a comic! 😻
howhttps.works
위 링크 만화는 꼭 보자. 만화를 다 보고 퀴즈를 풀면
이런 수료증을 받을 수 있다 ^^
RDS 소개
RDS는 EC2 인스턴스 내에서 호스팅될 수 있지만, EC2를 사용하여 RDS를 생성할 필요는 없습니다. RDS는 관리형 데이터베이스 서비스로, Amazon RDS 서비스를 통해 데이터베이스 엔진을 선택하고 필요한 크기 및 용량을 선택하여 인프라를 자동으로 프로비저닝할 수 있습니다. 따라서 EC2 인스턴스 내에 직접 데이터베이스를 설치하고 구성하는 대신 RDS 서비스를 사용하여 데이터베이스를 생성, 관리 및 확장할 수 있습니다.
- SQL을 쿼리언어로 사용하는 관계형DB를 위한 서비스
- Postgres, MySQL, MariaDB, Oracle, Microsoft SQL service ...
- EC2 상에 DB만들기보다 RDS가 나은점
- RDS는 DB를 위한 인프라를 자동으로 구축(provisioning), 업데이트
- 지속적인 백업과 복구 기능 지원
모니터 대시보드 지원
- 성능향상을 위한 read replicas 지원Disaster Recovery를 위한 multi AZ 지원수평/수직 확장성 지원EBS 백업 지원
- 하지만 SSH로 접속 불가능하다
Storage Auto Scaling
- DB 용량의 한계치까지 왔을 때 자동으로 용량을 늘려준다
- 사용을 위해 Maximum Storage Threshold를 지정해줘야 한다.
- 예측불가능한 트래픽이 있을때 유용하다!
Read Replicas
- read replica는 오직 SELECT문만 가능하다. INSERT, UPDATE, DELETE는 불가능!
Multi AZ
- 가용성을 높여준다
- 확장성을 높여주지 않는다
- 수동으로 설정할 필요가 없다
- read replica도 multi az로 쓰일 수 있다
DNS란?
DNS란 Domain Name System의 약어로, 인터넷에서 사용되는 컴퓨터나 기기들의 주소를 인터넷 사용자가 쉽게 이해하고 기억할 수 있는 도메인 이름(예: [www.google.com)으로](http://www.google.㯘%29-172yn48f/) 변환해주는 시스템입니다.
인터넷에 연결된 모든 기기들은 IP 주소를 가지고 있지만, 이 주소는 일반 사용자들이 기억하기 어렵고 입력하기 번거로워서, 대신 이를 쉽게 이해하고 기억할 수 있는 도메인 이름으로 변환해주는 것이 DNS의 역할입니다.
DNS는 인터넷에서 매우 중요한 역할을 하며, 인터넷 사용자가 웹 사이트를 방문하거나 이메일을 보내는 등의 모든 인터넷 활동에서 사용됩니다.
- www.google.com → 172.217.18.36
- 계층 구조 (뒤쪽이 top level)
- Registrar : Route53, GoDaddy …
- DNS Records : A, AAAA, CNAME, NS
- Zone File
- Name Server
- URL
- Top level Domain
- Second Level Domain
- Subdomain
- Protocol
- ISP
- KT, SK Broadband, LG U+
인터넷에서 도메인 이름을 이용하여 웹 사이트나 이메일을 찾을 때는 DNS(Domain Name System) 서비스를 사용합니다. DNS 서비스는 계층적으로 구성된 분산 시스템으로 이루어져 있으며, 이 계층 구조에서는 Root DNS Server, TLD DNS Server, SLD DNS Server가 각각의 역할을 수행합니다.
- Root DNS Server
- Root DNS Server는 DNS 계층 구조에서 가장 상위에 위치한 DNS 서버입니다.
- 모든 DNS 쿼리는 먼저 Root DNS Server에 도착하여 해당 도메인의 TLD(Top-Level Domain) DNS Server의 주소를 알아내야 합니다.
- Root DNS Server는 인터넷 상에서 전 세계에 총 13개가 운영되고 있으며, 이들은 전 세계의 인터넷 서비스 제공 업체들에 의해 운영됩니다.
- TLD DNS Server
- TLD DNS Server는 도메인 이름의 최상위 레벨에 해당하는 .com, .net, .org, .kr 등의 TLD를 관리하는 DNS 서버입니다.
- 모든 도메인 이름은 하나 이상의 TLD에 속하며, TLD DNS Server는 해당 도메인 이름이 속한 SLD(Secod-Level Domain) DNS Server의 주소를 알려줍니다.
- SLD DNS Server
- SLD DNS Server는 도메인 이름의 중간 레벨에 해당하는 DNS 서버입니다.
- 도메인 이름의 중간 레벨에 해당하는 부분은 일반적으로 사용자가 만든 이름이며, SLD DNS Server는 해당 도메인 이름에 대한 IP 주소를 반환해줍니다.
즉, Root DNS Server는 인터넷에서 가장 상위에 위치하며, TLD DNS Server는 도메인 이름의 최상위 레벨을 관리하고, SLD DNS Server는 중간 레벨을 관리합니다. 이들은 모두 인터넷 사용자가 도메인 이름을 입력하여 해당하는 웹 사이트나 이메일을 찾을 때 중요한 역할을 수행합니다.
nslookup naver.com // 223.130.200.107 nslookup google.com // 142.250.76.142
도메인 등록하고 레코드 만들어보기
왜 53인가요?
53은 통신에 사용되는 프로토콜 중 하나인 DNS(Domain Name System)에서 사용하는 기본 포트 번호입니다. DNS는 인터넷에서 사용되는 컴퓨터나 기기들의 주소를 인터넷 사용자가 쉽게 이해하고 기억할 수 있는 도메인 이름으로 변환해주는 시스템으로, 이를 위해 기본적으로 TCP와 UDP를 사용하며, TCP 53번 포트와 UDP 53번 포트를 사용합니다.
IPv4v6, 레코드타입, TTL
IPv4 vs IPv6
IPv4와 IPv6는 인터넷 프로토콜 주소 체계입니다. IPv4는 32비트로 구성된 주소 체계로, 최대 약 43억개의 IP 주소를 사용할 수 있습니다.
192.168.0.1.
하지만, 인터넷 사용자의 증가로 인해 IPv4 주소가 부족해지는 문제가 발생했습니다.
이에 따라, IPv6가 등장하게 되었습니다. IPv6는 128비트로 구성된 주소 체계로, 약 340경개의 IP 주소를 사용할 수 있습니다.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6는 IPv4에 비해 주소 고갈 문제를 해결할 수 있을 뿐만 아니라, 보안성과 기능 면에서도 개선되었습니다.
레코드 타입
DNS 레코드 타입은 다음과 같습니다.
- A 레코드: 호스트네임과 IPv4 주소를 연결합니다.
- AAAA 레코드: 호스트네임과 IPv6 주소를 연결합니다.
- CNAME 레코드: 호스트네임을 다른 호스트네임과 연결합니다. 다른 호스트네임은 반드시 A 혹은 AAAA 레코드가 있어야 합니다.
- NS 레코드: 호스트존의 네임서버를 지정합니다.
호스트존은 주소록입니다. public 호스트존은 도메인 네임의 IP 주소를 가리키며, private 호스트존은 사설망 내부에서 사용됩니다. 또한, SOA 레코드는 메타 데이터를, NS 레코드는 네임서버 정보를 담고 있습니다.
CNAME vs Alias
CNAME과 Alias는 DNS 레코드의 유형입니다. 두 레코드는 호스트 이름을 다른 호스트 이름에 매핑하는 데 사용됩니다. 그러나 두 레코드는 서로 다른 용도를 가지고 있습니다.
CNAME 레코드는 호스트 이름을 다른 호스트 이름으로 매핑합니다. 이전에 정의된 호스트 이름의 모든 레코드를 복사하여 새 호스트 이름에 할당합니다. 이는 호스트 이름이 변경되었거나 호스트 이름이 서로 다른 IP 주소를 가리키도록 하려는 경우에 유용합니다.
CNAME은 루트 도메인이 아닌경우에만 적용가능합니다.(ex app.mydomain.com O, mydomain.com X)
Alias 레코드는 호스트 이름을 Amazon S3 버킷, Elastic Load Balancer 또는 Amazon CloudFront 분산 된 웹 사이트와 같은 AWS 리소스에 매핑합니다. 이를 통해 AWS 리소스에 대한 DNS 레코드를 만들 수 있습니다. Alias 레코드는 Amazon Route 53에서만 지원됩니다.
Alias가 가능한 서비스들
- Elastic Load Balancer
- Cloudfront
- API Gateway
- Elastic Beanstalk
- S3
- VPC Interface Endpoints
Alias가 불가능한 서비스
- EC2
TTL
TTL은 Time to Live의 약어로, DNS 레코드가 캐싱될 수 있는 최대 시간을 나타내는 값입니다. TTL이 높을수록 DNS 레코드가 캐싱될 수 있는 시간이 더 길어지므로, 캐시 효율성은 높아집니다. 일반적으로, TTL은 몇 분에서 몇 시간까지로 설정됩니다.
'내일배움캠프' 카테고리의 다른 글
TIL 2023.05.04 (0) 2023.05.04 TIL 2023.05.03 (0) 2023.05.03 TIL 2023.05.01 (0) 2023.05.01 WIL 내일배움캠프 7주차 (0) 2023.04.28 TIL 2023.04.28 (0) 2023.04.28