Notice
Recent Posts
Recent Comments
Link
Gom3rye
AWS 본문
728x90
반응형
Public Cloud(AWS)
AWS(Amazon Web Service)
특징
- 서비스 조합이 쉽다.
- AWS와 AWS 외부의 시스템 및 네트워크 연동이 쉽다.
- 종량제
- 사용이 쉽다.
- 한국어와 한국 원화 결제 가능
- 서울에 한국 전담팀이 구성되어 있고 예산 견적이나 시스템 도입에 대한 상담을 할 수 있는 APN(Amazon Partner Network) 기업도 있는데 AWS가 공식 인증하는 최상위 프리미터 컨설팅 파트너로는 Megazon Cloud, GS 네오텍, 베스핀 글로벌 등이 있다.
- 한국은 ISMS(한국 정보보호 관리체계) 인증을 취득했다.
- 글로벌 확장이 쉽다.
- 가장 많은 region을 소유하고 있다.
서비스: 165개 이상의 서비스를 제공한다.
- EC2(Elastic Compute Cloud)
- 컴퓨터 용량을 제공하는 서비스
- 서버, OS, 소프트웨어를 세트로 사용 가능하다.
- 다양한 OS와 하드웨어를 제공한다.
- S3(Simple Storage Service)
- 오브젝트 스토리지 서비스(Key와 Value를 이용해서 저장한다.)
- 파일 서버를 주로 이용한다.
- 다른 서비스와 연동이 수월하다.
- 파일 하나의 크기는 최대 5TB이고 전체 용량 제한이 없다.
- 정적 웹 호스팅 가능: 웹 프론트앤드 애플리케이션 배포가 가능하다.(CDN 가능)
- Amazon VPN
- AWS 계정 전용의 가상 네트워크를 만들어주는 것
- 네트워크 및 서브 네트워크의 범위, 라우팅 테이블 및 네트워크 게이트웨이 등을 설정하고 가상 네트워크 환경을 구성한다.
- Amazon RDS
- 관계형 데이터베이스 서비스
- Amazon Route 53
- DNS 기능
- Domain 설정
- Elastic IP 서비스
- 정적 공인 IP 주소 할당
- EC2와 ELB(Load Balancer)를 조합해서 사용한다.
- ECR, ECS, EKS
- ECR: Container Registry
- ECS: Container Service - Docker
- EKS: Kubernetes Service
- Cloud9
- 웹 브라우저로 조작이 가능한 통합 개발 도구이다.
- S3 Glacier
- 파일을 압축해서 장기 보존하는 서비스
- AWS Backup
- AWS Direct Connect, Site to Site VPN
- AWS VPC와 외부 연결을 해주는 서비스
- DevOps 관련
- CodeBuild
- CodeCommit
- CodeDeploy
- CodePipeline
- AWS CLI
AWS 비용
- 사용한 만큼 지불하는 종량제
- 서비스마다 다른 요금 체계를 가진다.
- 대표적인 요금 체계
- EC2: 인스턴스 사용량(가동한 시간단가) + EBS 사용량(용량단가) + 통신 요금 + 그 이외 옵션
- S3: 보존 용량 + 전송량
- RDS: 스토리지 요금 + DB 인스턴스 요금 + 백업 스토리지 요금 + 통신량
- 종량제의 장점과 단점
- 초기 비용이 들지 않는 대신 운영 비용이 들기 때문에 경우에 따라 정액제 임대나 직접 구성하는 편이 저렴할 수 있으며 종량제더라도 최저 요금이 있는 요금 체계도 있고 서비스 1개당 요금이 발생하는 체계도 있다.
- 이벤트나 캠페인과 같이 돌발적으로 접속사자 늘어나는 웹 사이트의 경우는 AWS의 유연성이 큰 장점이 되지만 그다지 변동이 없는 시스템은 이점이 없을 수도 있다.
- 변화가 없는 경우 비용 절감에 주목해야 할 것은 종량제보다 인건비의 축소이다.
- AWS는 운영에 대한 부분을 맡길 수 있기 때문에 관리하는 사람이 없어도 운영 가능하다.
- Free Tier와 AWS Billing and Cost Management
- AWS에서는 쉽게 시작할 수 있도록 Free Tier가 준비되어 있다.
- 소규모 EC2 1대와 RDS 1대, 5GB의 S3 스토리지 등을 12개월 동안 무료로 사용 가능하다.
- AWS Billing and Cost Management 에서 요금을 확인할 수 있고 한 달 동안 요금을 예측할 수 있으며 예산을 설정해두면 초과했을 경우 메일 등으로 통지 받을 수 있다.
기본 개념
- Region
- AWS의 모든 서비스가 위치하고 있는 물리적인 장소
- region 안에는 가용 영역이 여러 개 존재한다.
- 서비스가 가까운 region에 애플리케이션이나 서비스가 위치해야 속도가 빠르다.
- 동일한 서비스라도 region 별로 요금이 다르다.
- Availability Zone(가용 영역)
- 데이터 센터와 유사한 개념
- 각 AZ는 같은 지역이나 도시더라도 멀리 떨어져 있다.
- EC2 가상 서버를 여러 개 만들 때 되도록 서로 다른 AZ에 만드는 것을 권장한다.
- Edge Location
- AWS의 CDN 서비스인 CloudFront를 위한 캐시 서버
- CDN 서비스는 Content Delivery Network의 약자로 콘텐츠를 사용자들이 빠르게 받을 수 있도록 전세계 곳곳에 위치한 캐시 서버에 복제해주는 서비스
- CDN 캐시 서비스는 인터넷 트래픽을 효과적으로 처리할 수 있는 지역에 POP(Point-of-Presence)을 구축하는데 CDN 서비스와 사용자가 직접 만나는 곳이라고 하여 Edge Location이라고 한다.
- AWS에서는 CloudFront 뿐 아니라 DNS 서비스인 Route53에서도 제공한다.
- AWS CLI
- AWS CLI는 로컬의 명령어 단말기 또는 서버에서 명령어나 스트립트로 AWS 서비스를 빠르게 수행하기 위한 도구
- 로컬에 설치해서 AWS 로그인의 인증 정보를 입력하여 설정한다.
- VPC와 보안 그룹
- VPC
- Amazon Cloud 환경에서 구성하는 VPN으로 AWS 계정 전용 가상 네트워크 서비스
- 하나의 VPC는 하나의 논리적인 네트워크가 된다.
- EC2나 RDS의 경우 VPC를 선택하지 않으면 서버를 생성할 수 없으므로 반드시 설정해야 한다.
- VPC 내부 통신은 요금을 지불하지 않는다.
- 보안 그룹
- AWS에서 가장 기본이 되는 네트워크 보안 기술
- InBound(외부에서 인스턴스로 들어오는 Network)와 OutBound(내부에서 외부로 나가는 Network-기본적으로 전부 열려 있다.)로 나누어서 설정한다.
- 네트워크 대역과 포트 번호를 이용해서 설정한다.
- VPC
EC2
- Amazon Elastic Compute Cloud(Amazon EC2)
- 컴퓨팅 용량을 제공하는 서비스
- Managed 서비스가 아니므로 서버 및 네트워크 운영은 AWS가 담당하지만 운영체제를 포함하여 필요한 소프트웨어는 사용자가 직접 설치하고 운영한다.
- 클릭 한 번으로 최적의 서버를 생성한다.
- 서버를 직접 만든다고 하지만 관리 콘솔에서 클릭 한 번으로 생성할 수 있기 때문에 서버에 대한 기술적 지식은 그다지 필요하지 않는다.
- 다양한 서버 시스템의 조합(인스턴스 유형)과 OS 및 소프트웨어의 조합이 준비되어 있기 때문에 선택만 하면 서버를 사용할 수 있다.
- Managed Service가 아니므로 AWS에 의해서 강제로 업데이트 되지 않기 때문에 자유도가 높은 반면 관리하기는 어렵다.
- 구체적인 메뉴얼보다 어떻게 구성할 것인가 또는 어느 정도의 성능으로 만들 것인가 등의 설계적 지식이 필요하다.
장점
- 하드웨어 사용이 다양하게 준비되어 있다.
- OS도 다양하게 준비한다.
- 가상화 기술을 이용하기 때문에 백업을 취득하기 쉽다.
- 퍼블릭 클라우드에 존재하기 때문에 어디서든 접속이 가능하다.
- 리전과 가용 영역 때문에 물리적으로 다른 여러 장소에 설치할 수 있다.
- 생성과 삭제가 편리하다.
단점
- 단순한 서버 1대로 구성되면 그다지 변화가 없는 시스템의 경우 적합하지 않다.
구성
- Instance: 가상 서버를 의미한다.
- AMI: 가상 이미지를 의미한다.(운영체제)
- Key Pair: 인스턴스에서 접속할 때 인증을 위해 사용하는 키(SSH 접속할 때 필요하다.)
- EBS: AWS에서 EC2 인스턴스에 연결하여 사용할 수 있는 고성능 블록 스토리지
- 보안 그룹: 가상의 방화벽
- Elastic IP: 정적 IPv4 주소
EC2 인스턴스 생성
- Region 선택: 관리 콘솔 화면의 상단 오른쪽에서 선택
- 인스턴스 시작 누르기
- 이름을 설정
- AMI 선택 (이미지를 선택)
- 인스턴스 유형 선택(CPU와 메모리 선택)
- 키페어 생성 또는 선택
- 키페어는 외부에서 인스턴스에 로그인할 때 필요(SSH)
- 네트워크 설정
- 보안 그룹
- 퍼블릭 ip 할당 여부
- 스토리지 설정
- 인스턴스 시작을 누르면 생성
정보 확인
- Instance ID는 AWS 내에서 인스턴스를 구분하기 위한 ID
- Public IP가 부여되는데 이 IP는 정적 IP가 아니라서 인스턴스를 재부팅하거나 종료한 후 다시 생성하면 변경될 수 있다.
- Private IP가 부여되는데 VPC 내에서 통신하기 위한 IP이다.
SSH로 접속
ssh -i "키페어파일의 경로" Public DNS나 Public IP
ssh -i "C:\Users\kimmy\OneDrive\Documents\pem\kyla.pem" ubuntu@ec2-15-164-217-20.ap-northeast-2.compute.amazonaws.com
- 보안 그룹의 InBounds에 22번 포트가 열려있지 않으면 접속 불가하다.
- 관리자 계정의 이름은 기본적으로 운영체제 이름인 ubuntu이다.
웹 서버 설치 및 외부 접속
- 패키지 업데이트: sudo apt update
- 아파치 웹 서버 설치: sudo apt install -y apache2
- 서비스 시작: sudo service apache2 start
- 서비스 실행 중인지 확인: sudo service apache2 status
- 현재 컴퓨터에서 실행: curl http://localhost
- 외부에서 Public IP로 접속하려고 하면 80번 포트를 InBound 규칙에 추가해줘야 한다. (http)
- 메인 페이지 수정
- /var/www/html 디렉토리에 index.html 파일을 만들어주면 된다.
- sudo rm index.html
- sudo vi index.html
MySQL 서버 만들기
- 패키지 업데이트: sudo apt update
- MySQL 서버 설치: sudo apt install -y mysql-server
- 잘 깔렸는지 버전 확인: mysql --version
- 로컬에서 접속해보기: sudo mysql -u root -p(비밀번호는 없거나 ubuntu)
- 관리자 비밀번호 변경: alter user "root"@"localhost" identified with mysql_native_password by "비밀번호”;
- 변경 내용 적용시키기: FLUSH PRIVILEGES;
- 외부 접속을 위한 설정:
- sudo su
- cd /etc/mysql/mysql.conf.d
- vi mysql.conf → bind-address 부분을 주석처리하고 bind-address = 0.0.0.0 으로 새롭게 넣어주기
- mysql 서비스 재시작: service mysql restart
- 외부 접속 가능한 유저 생성: mysql -u root -p로 mysql 접속
- 사용할 데이터베이스 생성: create database 데이터베이스이름;
- 유저 생성: create user 유저이름@’%’ identified by ‘비밀번호’;
- create user gom3rye@'%' identified by 'pass1234';
- 사용 권한 부여: grant all privileges on 데이터베이스이름또는*.테이블이름또는* to 사용자이름’@’IP 또는 *’;
- grant all privileges on kyla.* to 'gom3rye'@'%';
- kyla라는 데이터베이스에 gom3rye가 어디에서 접속을 하던 모든 작업 수행을 가능하도록 설정한다.
- 변경 내용 적용시키기: flush privileges;
- 보안 그룹에서 인바운드 규칙에 3306번 포트를 열어준다.
SnapShot
- SnapShot이란 어떤 시점의 디스크 상태를 통째로 보존한 파일이나 디렉토리의 집합이다.
- 항상 전체를 보존하기 때문에 데이터나 소프트웨어 뿐만 아니라 OS와 설정 정보 등도 모두 포함한다.
- 소프트웨어나 OS 갱신 작업 등을 할 때 무언가 문제가 발생하면 바로 되돌릴 수 있도록 백업하기 위해서 사용하는 경우가 많고 개인이 AWS에서 AMI를 만들기 위해 스냅샷을 사용하기도 한다.
- AWS는 Amazon EBS 볼륨의 데이터를 스냅샷으로 보존할 수 있는데 최초에는 전체를 보존하지만 두 번째 이후부터는 차분만 보존한다. (스냅샷의 비용이 높아지지 않도록 하기 위한 아마존의 정책)
- 스냅샷을 삭제하면 해당 스냅샷 고유의 데이터만 삭제되므로 최초 데이터를 삭제할 경우 두 번째 스냅샷을 취득했을 때 변경되지 않은 부분만 두 번째 스냅샷으로 합쳐진 후 삭제한다.
스냅샷 생성 방법
- 관리 콘솔에서 볼륨 단위로 선택하여 생성한다.
- 생성한 스냅샷을 기반으로 EBS 볼륨을 생성하면 새로운 볼륨은 원래 볼륨의 복제이다.
- AMI를 작성하고 싶을 때도 스냅샷으로 작성하고 데이터 수명 주기 관리자를 사용하면 스냅샷의 생성, 삭제를 자동화 할 수 있는데 스냅샷을 정기적으로 생성하면 서버가 망가졌을 때 대응할 수 있다.
- 스냅샷의 요금은 생성한 스냅샷의 분량 단위(GB 단위)
- 스냅샷의 데이터는 S3에 보존되지만, 사용자가 직접 스냅샷 파일을 다운로드할 수는 없다. 또한 이 데이터는 사용자가 사용하는 S3 버킷이나 리전(영역)과는 다른 내부 영역에 저장되며, 이에 대해 별도의 S3 요금은 발생하지 않는다.
요금 정책
- 기본적으로 인스턴스 사용량+EBS요금+통신요금+그 이외의 옵션
- 인스턴스 사용량: 가동 시간 * 단가
- 가동 시간은 초 단위로 과금되며 정지하고 있는 동안은 과금되지 않는다. 단가는 인스턴스 유형에 따라 다르고 고기능을 사용할 수록 비싸다.
- EBS 요금: 용량 * 단가
- 용량 단위로 과금되고 스토리지 성능(SSD, HDD, iOPS 등)에 따라 단가가 달라지는데 보유한 용량 단위이며 저장 용량 단위가 아니므로 주의해야 하고 인스턴스와는 달리 정지하고 있는 동안에도 요금이 부과된다.
- 통신 요금(아웃바운드 통신 요금): 인스턴스의 통신 요금으로 인터넷에서 인스턴스로 들어오는 인바운드 통신료는 무료이고 인스턴스에서 인터넷으로 나가는 통신 아웃바운드만 요금이 부과되며 리전에 따라 다르다.
- 그 이외 옵션: Elastic IP 등의 요금
EC2와 많이 조합하는 AWS 서비스
- S3: 파일 저장 서비스
- RDS: 관계형 데이터베이스
- VPC: VPN 서비스
- Route53: 도메인 서비스
- CloudWatch: 모니터링 관리 서비스
Elastic IP
- AWS가 제공하는 정적인 공인 IPv4 주소
- EC2 인스턴스는 정지 후 다시 시작하면 Public IP 주소가 변경될 수 있는데 이는 서버로서 사용하는데 문제가 되기 때문에 고정 IP 주소를 인스턴스와 연결해야 하고 이 때 고정 IP로 사용되는 것이 Elastic IP 주소이다.
- EC2 인스턴스에 외부에 접속할 수 있는 애플리케이션을 배치하는 경우 대부분 사용한다.
- AWS 계정에 연결되어 있는데 인스턴스 단위가 아니므로 IP 주소를 부여한 인스턴스를 삭제해도 확보한 IP 주소를 그대로 AWS 계정에서 소유하는 것이 가능하다.
- 보유하고 있는 IP 주소를 다른 인스턴스나 네트워크에 부여하는 것이 가능하다.
- 이미 할당된 IP 주소는 Elastic IP 주소로 사용할 수 없고 Elastic IP 주소는 리전에 속하기 때문에 다른 리전이 보유한 Elastic IP 주소는 사용할 수 없다.
- Elastic IP 요금은 기본적으로 인스턴스에 부여된 IP 한 개는 무료이고 추가로 IP를 연결하면 시간에 비례해서 요금이 부과되고 중지된 인스턴스나 분리된 네트워크에 연결된 경우에도 시간 당 요금이 부과되므로 사용하지 않는 IP 주소는 해지해야 한다.
NodePort Service
노드 포트 서비스를 이용하려면 포트를 3개 작성해야 한다.
- targetPort는 실제 애플리케이션의 포트(컨테이너가 개방하는 포트)
- port는 ClusterIP가 사용할 포트/ ClusterIP를 가지고 접근할 때는 이 포트를 사용한다.
- 쿠버네티스 클러스터가 있는 곳에서만 ClusterIP:8080으로 접근 가능
- nodePort는 Node의 IP를 가지고 접근할 때 사용하는 포트이다.
- NodeIP:30080
# 서비스 작성: sample-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: sample-nodeport
spec:
type: NodePort
ports:
- name: "http-port"
protocol: "TCP"
port: 8080
targetPort: 80
nodePort: 30080
selector:
app: sample-app
Ingress
- 인그레스는 입구를 1개로 만들어서 control 하는 거니까 apiGateway랑 비슷한 거다.
728x90
반응형
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
| AWS의 Database (3) | 2025.07.23 |
|---|---|
| Kubernetes Service, AWS EC2 (4) | 2025.07.22 |
| Jenkins (0) | 2025.07.18 |
| Git Hub Action & Jenkins (5) | 2025.07.17 |
| Git 협업 (2) | 2025.07.16 |