[AWS] 개요
1. AWS (Amazon Web Service)
- 시스템 운영에 관련된 다양한 서비스 제공하는 클라우드 기반 서비스
- 컴퓨팅, 스토리지, 데이터베이스, 분석 툴, 네트워크, 모바일, 개발자 도구 등
- 서비스 조합이 쉽다.
- 요금이 종량제
- 사용한만큼 지불
- 특별한 경우 최소 요금이 설정되어 있다.
일반적으로 사용자의 트래픽이 수시 변경되는 경우라면 퍼블릭 클라우드가 유리하지만
일정한 트래픽이라면 On Premiss가 유리하다. 이런 경우는 고려할 사항 중 하나가 관리자의 인건비
- 사용이 쉽다.
- 글로벌 확장이 쉽다.
- 현재 사용 가능한 Public Cloud 중 Region 과 AZ(가용 영역)이 가장 많음
- 한국에는 서울 리전이 있고 4개의 가용 영역 운영 중
- 보안 기준: ISMS (한국 정보보호 관리체계) 인증 취득
2. 제공되는 서비스
- 165개 이상의 서비스 제공
- 목적에 따라 다양한 서비스
- 서버 전체 및 관리에 필요한 기능을 제공
- 분석 시스템
- 가상 데스크톱
- 머신 러닝 과 인공 지능, 블록체인 서비스도 제공
- 대표적 서비스
- EC2: 컴퓨터(서버 - 24시간 서비스가 가능해야 하고 고정된 IP를 가져야 함)를 빌려주는 개념
- S3: 파일 스토리지의 개념으로 최근에는 데이터 저장소의 역할을 하는 경우가 많음
- 외부에서 수집된 데이터를 이 공간에 저장해두고 사용하기도 하고 정적 웹 페이지를 배포하는 용도 또는 백업용으로 사용
- VPN: 가상 네트워크
- Database
- Route 53: 도메인 관련 작업
- Elastic IP: 공인 IP 주소를 제공
- SageMaker: 머신러닝 기능을 제공
- QuickStart: 시각화 기능 제공
- Managed BlockChain
- Cloud9: 통합 개발 도구
- GameLift: 게임 호스팅 서비스
- ECR, ECS, EKS: 이미지 저장소, 도커 배포, 쿠버네티스 배포
- Free Tier 계정
- EC2 인스턴스 1대, RDS 1 대, S3 5GB 의 공간을 1년 동안 무료로 사용할 수 있도록 계정
- 관리 콘솔
- Web에 접속해서 GUI로 AWS를 조작하는 화면
- Managed Service
- AWS가 관리하는 서비스
- 가상 서버인 EC2는 Managed Service가 아니지만 스토리지 인 S3 와 데이터베이스 서버인 RDS는 Managed Service
- Managed Service는 백업 및 업데이트가 자동으로 이루어지므로 사용자가 수동으로 관리할 필요가 없다.
- 보안 문제
- 일반적으로는 On-Premiss 가 보안성이 우수하다.
- On-Premiss는 기업에 보안에 대한 전문가 필요함.
- 도입 사례
- 현대 건설 기계는 Amazon S3를 이용해서 빅데이터 플랫폼 과 데이터 레이크를 구축하고
Sage Maker를 이용해서 수요 예측 시스템을 구축해서 건설 장비에 대한 수요를 예측
3. 기본 개념
Region
- AWS의 모든 서비스가 위치하고 있는 물리적 장소. 그 안에 다시 여러 개의 가용 영역 (AZ - 데이터센터) 존재
- Region 별로 제공하는 서비스가 다르면 요금도 다름
- 클라이언트가 사용하는 앱을 배포하는 경우 Region을 반드시 확인
Edge Location
- AWS의 CDN 서비스인 CloudFront를 위한 Cache Server
- CDN(Content Delivery Network)은 콘텐츠를 사용자들이 빠르게 받아볼 수 있도록 전 세계 곳곳에 위치한 캐시 서버에 복제해주는 서비스
- CDN 서비스와 사용자가 만나는 지점을 Edge Location
4. IAM
- AWS에 회원 가입을 하면 모든 작업을 수행할 수 있는 루트 계정이 만들어 진 것
- 기업을 사용을 하다 보면 여러 다른 사람에게 서비스를 사용할 수 있도록 해주어야 하는 경우가 발생
- 사용자를 생성해주는 기능
Factor
- 사용자의 신원을 확인하는 방법
- 종류
- 지식 기반: ID/PW 와 같이 알고있는 인증 정보를 이용하는 방식
- 소유 기반: 사용자가 소유한 것을 이용하여 인증하는 방식 - 인증서, 휴대폰 인증
- 속성 기반: 고유의 속성을 이용하는 것으로 지문, 홍채 인식 등
- AWS는 Multi Factor 인증 지원
사용자 생성
- 사용자를 생성하고 권한을 반드시 부여
- 권한 부여를 하지 않으면 아무일도 할 수 없다.
- 권한 설정 방법
- 그룹에 권한을 부여한 후 사용자를 그룹에 포함시키는 방식
- 기존 사용자의 권한을 복사하는 방법
- 기존 정책을 연결하는 방법
5. Network
IP Address
- TCP/IP 라는 프로토콜을 사용하는 인터넷 망에서 컴퓨터를 구분하기 위한 숫자의 조합
- 인터넷 망에서 데이터를 송수신 할 때 Port 와 함께 사용
- IP Address 는 컴퓨터를 구분하고 Port 컴퓨터 안에서 동작하는 Application을 구분
- 실제 데이터의 송수신은 컴퓨터의 애플리케이션이 수행하기 때문
- 인터넷 망에서 각 컴퓨터의 IP는 구별되어야 하고 하나의 컴퓨터에서 각각의 Application이 사용하는 Port는 구분되어야 함
- 하나의 컴퓨터에서 여러 개의 Application을 동작할 때는 포트를 확인해봐야 함
- IPv4 와 IPv6
- IPv4: 32비트 주소 체계로 8비트씩 나누어서 표현을 하는데 일반적으로 10진수로 변환해서 표현
- 00000000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111
- 0.0.0.0 ~ 255.255.255.255
- IPv6: IPv4 의 주소 개수 한계로 등장한 주소 체계, 현재는 전부 IPv6를 사용하는데 IPv4로 설정하면 자동으로 변환을 수행. 128비트 주소 체계로 16비트씩 8개의 영역으로 구분을 하고 각 16비트는 16진수 4자리로 표현하고 중복되는 부분을 생략할 수 있도록 설계
- 00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111
.11111111.11111111.11111111.11111111.11111111.11111111.11111111.11111111.11111111.11111111.11111111.11111111 - 0000:0000:0000:0000:0000:0000:0000:0000 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
- 00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000.00000000 ~ 11111111.11111111.11111111.11111111
- Loopback(자기 자신)을 표현할 때
IPv4는 127.0.0.1로, IPv6는 0:0:0:0:0:0:0:1 로 표현
Windows7 이상에서는 로컬 호스트에서 자신의 웹 서버에게 접속하면 IPv6로 표현됨
- Private IP & Public IP
- Public IP는 인터넷에서 외부 망에서 구별하기 위한 주소로 이 주소는 컴퓨터 마다 유일 무이해야 한다.
- Private IP는 인터넷에서 내부 망에서 구별하기 위한 주소로 이 주소는 내부 망에서만 유일 무이하면 된다.
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.168.255.255
- 이 대역은 외부에서 사용할 수 없음
- Docker에서 Network 만들 때, Kubernetes 에서 Pod를 생성할 때, 유동 IP를 사용하는 인터넷을 이용할 때 확인 가능
- 유동 IP 와 고정 IP
- 유동 IP는 IP Address 가 계속해서 변하는 것
- 전용선을 사용하지 않고 통신 회사의 라우터를 이용해서 인터넷을 사용하는 경우 통신 회사에서는 라우터에 몇 개의 IP만 할당하고 각 개인에게는 Port Forwarding 이라는 기술로 분배해서 사용하는 경우에 할당됩니다.
- 고정 IP는 IP Address 가 고정되는 것
- 전용선을 사용하는 환경에서 배정
- 서버가 될려면 이 고정 IP를 사용해야 합니다.
- Elastic IP(탄력적 IP)
- AWS에서 클라우드 서버에게 배정하는 IP로 하나의 고정 IP를 부여하는 것
- 컴퓨터를 임대해서 사용하는 EC2 서비스를 사용할 때 임대한 컴퓨터를 서버로 활용할려면 이 탄력적 IP를 부여받아서 사용해야 한다.
- 최근에는 EC2 서비스의 인스턴스를 생성하면 Public IP가 부여된다.
Domain 과 DNS(Domain Name Service)
- IP Address 는 숫자로 된 주소이므로 사람이 기억하기가 어렵습니다.
- 숫자로 된 주소를 문자의 조합으로 사용할 수 있도록 만든 것 중 하나가 Domain
- 인터넷 망에서는 IP Address 를 이용해서 다른 컴퓨터에 요청을 할 수 있고 Domain을 이용해서 요청을 할 수 있음
- Domain을 입력했을 때 Domain을 해석해서 IP Address 로 변환해주는 서비스가 DNS
- AWS에서 DNS 서비스가 Route53
- 도메인은 이름이기 때문에 호스트 또는 서비스 이름이 안들어가는데 실제 사용을 할 대는 호스트 이름 과 도메인을 합쳐서 사용을 해야 하는데(https://www.naver.com) 이것을 FQDN(Fully Qualified Domain Name)
- 맨 앞은 프로토콜을 의미하고 도메인 앞 부분이 호스트 이름
- 가끔 http 나 https를 붙이지 않고 //로 시작하는 경우가 있는데 이는 필요에 따라 http 나 https로 접속
- URI(Uniform Resouce Identifier), URN(Name), URL(Locator)
- URI: 자원 식별자로 가장 큰 개념으로 URN 과 URL이 하위 개념으로 존재
- URL: 네트워크 상에서 자원이 어디에 위치해 잇는지 알려주기 위한 규칙
- URN: 자원을 구별하기 위해서 붙이는 이름
- ARN: AWS 안에서 자원을 구별하기 위해서 붙이는 이름
6. VPN(Virtual Private Network)
- Private Network: 외부에서는 접근할 수 없는 네트워크
- 최근에는 건물 내부 뿐 아니라 다른 건물 또는 외부에서 인터넷을 이용해서 Private Network를 사용해야 하는 경우가 많은데 이 때 내부 구성원을 제외한 사람들이 접근할 수 없도록 해야 하는데 이렇게 구축한 것을 VPN 이라고 한다.
- AWS에서는 이를 VPC 라는 개념으로 제공한다.
- 최근에는 서비스를 만들면 데이터 - 애플리케이션 - API 형태로 만들어지는데 이 때 API는 외부로 노출이 되지만 데이터 와 애플리케이션은 외부로 노출되지 않도록 하는 것을 권장
- 하나의 서비스를 만들 때 데이터 와 애플리케이션 그리고 API는 하나의 VPC로 구성해서 내부 통신이 가능하도록 하고 API 만 외부로 노출을 시켜서 클라이언트나 다른 API 와 통신을 할 수 있도록 만드는 것을 권장
- VPN 안에는 보안 그룹이나 ACL의 개념이 있어서 특정 네트워크 또는 컴퓨터나 접속할 수 있도록 설정을 할 수 있다.
- NAT(Network Address Translation)를 이용해서 내부에서는 사설 IP를 사용하고 외부로 나갈 때 Public IP로 변환해서 나가도록 한다.
7. Network 범위와 CIDR 표기
- 하나의 컴퓨터를 구별하기 위해서는 IP Address 를 사용하는데 여러 개의 컴퓨터 특히 연속된 IP 대역을 가진 컴퓨터를 표현하기 위한 방법이 CIDR 표기법
- IP주소/공통된 주소의 개수를 비트 단위로 입력
- 공통된 주소 부분을 포함하는 모든 컴퓨터를 하나의 대역으로 표현 가능
192.168.0.0/16
- 앞의 16개의 비트는 고정이고 나머지는 자유롭게 사용
- 192.168.0.0 ~ 192.168.255.255 까지를 의미
192.168.1.0/24
- 192.168.1.0 ~ 192.168.1.255 를 의미
0.0.0.0/0
- 고정되어야 하는 것이 하나도 없음, 모든 IP를 의미
192.168.0.1/32
- 모든 비트가 고정되어야 합니다. 하나의 IP를 의미
- 이 방식은 지금은 거의 사용하지 않는데 데이터베이스에 애플리케이션 서버가 하나만 연결되는 경우 이런식으로 작성해서 다른 컴퓨터는 데이터베이스에 접속을 못하도록 하는 경우가 사용
8. 알려진 포트(well-known port)
- 포트 중에서 0 ~ 1023번까지는 대부분 정해져 있다.
http: 80
https: 443
SSH(원격 접속): 22
FTP(파일 전송): 20, 21
DNS: 53
Mail: 25, 110, 143
- 애플리케이션이 사용하는 포트
RDP(원격 데스크톱): 3389
DB:
- 1433(SQL Server)
- 1521(Oracle)
- 3306(MySQL 이나 Maria DB)
- 5432(Postgre SQL)
- 27017(Mongo DB)
- 6397(Redis)
- zookiper(2181)
- Kafka(9092)
- logstash(5044)
- elastic search(9200, 9300)
- kibana(5601)
9. End Point
- 외부에서 접속하기 위한 접속점
- 외부에서 AWS 서비스에 접속을 할 때 IP가 부여되면 IP 주소를 이용해서 접속을 하면 되지만 IP를 부여하지 않는 경우에는 End Point를 이용해서 접속을 해야 한다.
- EC2 같은 서비스는 IP도 부여되고 End Point도 부여되므로 2가지 모두로 외부에서 접속이 가능하지만 RDS 같은 데이터베이스 서비스는 IP를 알려주지 않고 End Point만 알려주므로 End Point를 이용해서 접속을 해야 합니다.