클라우드 컴퓨팅(Cloud Computing)
클라우드 컴퓨팅이란, 인터넷이라는 통신 서비스를 활용한 컴퓨팅 서비스 종류의 하나로 개인용 컴퓨터가 아닌, 인터넷을 통해 연결된 원격 컴퓨터를 활용하는 기술을 말합니다. 쉽게 말해 '개인용 컴퓨터보다 성능이 뛰어난 컴퓨터나 저장장치 등의 컴퓨터 자원을 다른 곳에서 빌려 사용할 수 있도록 처리해주는 IT 기술이다'라고 할 수 있습니다. 이러한 클라우드 컴퓨팅 자원에 대해 언제, 어디서나, 인터넷을 사용해 손쉽게 접근이 가능하며 최소한의 노력으로 최단 시간에 컴퓨터 자원을 늘리거나 줄이는 것이 가능합닌다. 또한 Pay-Per-Use Pricing이 적용되어 사용한 만큼만 비용을 지불하면 됩니다. 집에서 사용하는 전기, 가스, 수도 요금과 같이 한달 사용량을 측량하여 사용한 만큼 비용을 지불하는 것과 같이 클라우드 서비스도 매월 자원을 사용한 만큼에 대해 비용으로 지불하게 됩니다.
Infrastructure as a Service(IaaS)
IaaS로 줄여 쓰기도 하는 Infrastructure as a Service는 클라우드 IT의 기본 빌딩 블록을 포함하고 일반적으로 네트워킹 기능, 컴퓨터(가상 또는 전용 하드웨어) 및 데이터 스토리지 공간을 제공합니다. Infrastructure as a Service(IaaS)는 IT 리소스에 대해 가장 높은 수준의 유연성과 관리 제어를 제공하며 오늘날 많은 IT 부서와 개발자에게 익숙한 기존 IT 리소스와 가장 비슷합니다.
Platform as a Service(PaaS)
Platform as a Service(PaaS)를 사용하면 조직은 기본 인프라(일반적으로 하드웨어와 운영 체제)를 관리할 필요가 없어 애플리케이션 개발과 관리에 집중할 수 있습니다. 즉, 애플리케이션 실행과 관련된 리소스 구매, 용량 계획, 소프트웨어 유지 관리, 패치 또는 다른 모든 획일적인 작업에 대한 부담을 덜어 더욱 효율적이 되도록 해줍니다.
Software as a Service(SaaS)
Software as a Service는 서비스 제공업체에 의해 실행되고 관리되는 완전한 제품을 고객에게 제공합니다. 대부분의 경우 Software as a Service라고 하면 최종 사용자 애플리케이션을 말합니다. SaaS 오퍼링을 사용하면 서비스가 어떻게 유지 관리되는지 또는 기본 인프라가 어떻게 관리되는지 생각할 필요가 없으며 소프트웨어 이 특정 부분을 어떻게 사용할지만 생각하면 됩니다. SaaS 애플리케이션의 일반적인 예로는 이메일 제품용 추가 기능을 관리할 필요가 없고 이메일 프로그램이 실행되는 서버 및 운영 체제를 유지 관리하지 않고 이메일을 보내고 받을 수 있는 웹 기반 이메일이 있습니다.
클라우드
클라우드 기반 애플리케이션은 클라우드상에 완전히 배포되며 애플리케이션의 모든 부분이 클라우드에서 실행됩니다. 클라우드의 애플리케이션은 클라우드에서 생성되었거나 클라우드 컴퓨팅의 이점을 활용하기 위해 기존 인프라에서 클라우드로 마이그레이션되었습니다. 클라우드 기반 애플리케이션은 낮은 수준의 인프라상에 구축할 수 있고 또는 주요 인프라를 관리, 설계 및 확장할 필요가 없는 높은 수준의 서비스를 사용할 수 있습니다.
하이브리드
하이브리드 배포는 클라우드 기반 리소스와 클라우드에 위치하지 않은 기존 리소스 간에 인프라와 애플리케이션을 연결하는 방법입니다. 클라우드와 기존 온프레미스 인프라 간에 가장 일반적인 하이브리드 배포 방법은 클라우드 리소스를 내부 시스템에 연결하면서 조직의 인프라를 클라우드로 확장하는 것입니다. AWS가 하이브리드 배포에 어떻게 도움을 줄 수 있는지 자세히 알아보려면 하이브리드 페이지를 방문하세요.
온프레미스
가상화 및 리소스 관리 도구를 사용하여 온프레미스에 리소스를 배포하는 것을 “프라이빗 클라우드”라고 부르기도 합니다. 온프레미스 배포는 클라우드 컴퓨팅이 가진 많은 장점을 제공하지는 않지만 전용 리소스를 제공하는 온프레미스 기능이 필요할 때가 있습니다. 대부분의 경우 온프레미스 배포 모델은 리소스 활용도를 높이기 위해 애플리케이션 관리 및 가상화 기술을 사용한다는 점에서 레거시 IT 인프라와 같습니다.
출처:https://aws.amazon.com/ko/types-of-cloud-computing/
기존 OS (Host OS)와 별개로 가상화 SW를 이용해서 가상 HW를 구성/제공하는 가상화 방법
Hypervisor를 지원하는 CPU 환경에서만 가능
Hypervisor 환경에서 가상 HW를 구성한 가상머신 (virtual machine)
Host OS와 Guest OS 별도 설치 사용 -> 자원관리 측면에서 많은 자원소모 발생
가상머신의 크기가 SW적으로 하나의 컴퓨터에 대한 자원들을 관리하므로 용량이 큰 편
가상화 SW
VMWare
VirtualBox
기존 OS (호스트 OS) kernel을 수정하여 가상화 기능 제공 => KVM
가상의 HW 생성 없이 물리적인 HW를 가상화 기술을 이용하여 공유
자원관리 측면에서 bare metal 방식보다 효과적 & 크기 측면에서도 더 적은 크기로 제공
public cloud 제공업체에서 주로 활용
public cloud의 모든 서비스는 가상환경을 이용하여 제공
Application 실행 환경을 가상화하여 좀 더 쉽게 app을 배포/운영 장점
ex) docker
1. 루트 사용자의 개념
AWS 루트 사용자는 회원가입 시 만든 계정으로서 모든 AWS 권한을 갖고 있는 사용자입니다. 이 계정은 탈취당할 시 복구가 매우 어려울 뿐만 아니라, 최근에는 해커들이 비트코인 채굴에 AWS 계정을 착취하여 사용하기 때문에 상상을 초월하는 과금폭탄을 맞을 수 있습니다. 실제로 최근 국내에서 AWS 계정이 해킹을 당하여 과금만 3억이 나온 사례도 있습니다. 따라서, 루트 사용자는 계정 설정을 변경하거나 과금 관리(i.e., Billing) 등 관리 목적으로만 사용하는 것이 바람직합니다. 이처럼 루트 사용자는 최대한 사용을 자제하고 로그인 시 Multi Factor Authentication(MFA)과 같은 OTP 사용을 권장하고 있습니다.
2. IAM 사용자의 개념
루트 사용자는 탈취 당할 시 치명적인 문제를 야기할 수 있기 때문에 AWS 관리를 제외한 서비스 관리용 계정이 필요한데, 이러한 계정이 바로 IAM 사용자입니다. IAM은 Identity and Access Management의 약자로, 특정 사용자나 그룹의 서비스 혹은 리소스에 대한 접근 권한을 관리하는 서비스입니다. 쉽게 말하자면, 누가, 언제, 어디에서, 어떤 서비스를, 어떻게 접근하고 사용할 수 있을지 관리해 주는 역할을 합니다. IAM은 지역별(region) 서비스가 아닌 글로벌 서비스라는 점이 특징입니다.
일반적인 (가장 많이 사용) AWS 서비스 사용 방법 - GUI 방식
AWS 서비스 셍성, 모니터링, 삭제, 변경 등을 GUI 방식으로 운영
dashboard를 통해 개별 서비스 현황 파악 가능
시스템 운영자(관리자), application 개발자
명령 프롬프트(터미널)에서 명령어 기반으로 AWS 서비스 사용/관리 방법 - CUI
명령을 통해 세세한 관리 수행
별도의 설치 프로그램으로 AWS CLI 설치 후 사용
시스템 운영자(관리자), application 개발자
CLI 사용을 위한 프로그램
Windows
AWS 가상 컴퓨팅 사용시 : ssh client 프로그램 (putty, xshell 등)
Windows에 직접 CLI 설치시: 명령 프롬프트, windows terminal, power shell 사용
Linux/MacOS - 터미널 프로그램
application program에서 API (Application Programming Interface, 함수 (function) 집합)를 이용하여 AWS 서비스 사용
별도 설치 필요
application 개발자
Infra 구축을 코드를 이용하여 관리하는 방법
AWS 서비스 생성 및 운영에 대한 내용을 Code 형식을 사용하여 일괄적으로 관리하는 방법
복잡한 Infra를 일관성있게 유지하면서 관리하기 위한 목적
시스템 운영자 (관리자)
대표적인 IaC Utility
AWS CloudFormation
Ansible
Terraform - Windows 환경에서 많이 사용
참조:https://velog.io/@peppie0192
글로벌인프라 https://aws.amazon.com/ko/about-aws/global-infrastructure/
AZ(가용 영역)는 AWS 리전의 중복 전력, 네트워킹 및 연결이 제공되는 하나 이상의 개별 데이터 센터로 구성
가용영역과 외부(인터넷) 연결을 위한 이중화된 트랜짓 센터(엣지) 가 존재
- 트랜짓 센터는 AWS 글로벌 백본 네트워크에 연결이 되고, 엣지 POP을 통해서 CDN 등 서비스 함
AZ는 표시할 때는 리전 코드와 식별문자를 조합하여 표현한다.
리전은 국가코드, 위치에 숫자로 표기하며, AZ는 알파벳 소문자를 사용한다.
us-east-1
미국 동부(버지니아 북부)
us-east-2
미국 동부(오하이오)
EC2는 풀어서 쓰면 ECC(Elastic Compute Cloud)의 약자입니다. 말그래도 가상의 컴퓨터를 이야기 합니다. 서버를 빌리고자 할 때는 디폴트로 온디맨드 형식으로 빌릴수 있으며, 가장 기본적인 t2.micro 사이즈의 컴퓨터를 선택하여 시간당 16원 정도 부과됩니다. EC2를 빌리고자 할 때는 다음 몇가지를 신경쓰면 됩니다.
EC2 사용 이점
컴퓨터의 필요한 만큼 크기 설정 가능.
컴퓨팅 리소스에 대한 포괄적인 제어권 제공.
보안 및 네트워크 구성, 스토리지 관리 효과적
EC2에서 인스턴스 유형에 사용되는 자원
CPU
메모리
스토리
네트워킹 용량
EC2에서는 위 자원의 조합으로 운영하려는 서버에 최적화된 환경을 제공함. 운영자는 이에 맞게 적합한 리소스 조합을 선택할 수 있음.
인스턴스 유형 종류
범용(General Purpose) :모든 리소스의 균형을 알맞게 유지하여 사용 가능한 유형
컴퓨팅 최적화(Compute Optimized) : 고성능 프로세서의 이점을 활용하는 유형 (일괄처리, 머신러닝 등)
메모리 최적화(Memory Optimized) : 메모리에서 대규모 데이터를 처리하는 유형 (관계형 및 NoSQL 데이터베이스, '키-값' 유형의 데이터, 비정형 데이터 처리)
가속화된 컴퓨팅(Accelerated Computing) : 그래픽 처리와 같은 하드웨어 기반 컴퓨팅 리소스에 비중을 두는 유형
스토리지 최적화(Storage Optimized) : 로컬 스토리지의 초대형 데이터 세트에 대한 순차적 읽기 및 쓰기 엑세스가 많이 필요한 작업에 적합한 유형 (대량 병렬 처리, 데이터 웨어하우스, 하둡 분산, 로그 처리 등)
우선 위와 같이 크게 5가지로 분류할 수 있는데, 각 유형마다 성능별 여러개로 분류된다.
AMI(Amazon Machine Image) - 아마존에서 제작한 기본 운영체제 이미지 -> 가상 이미지에 여러 프로그램을 설치하여 커스텀 이미지로 만들수도 있음
인스턴스 유형 - 기본은 t2.micro이나 EC2 요금표를 보고 적절히 선택, 간혹 1GB의 적은 메모리로 인해 프로그램 빌드시 느릴 수 있음
인스턴스 세부정보
VPC : 우리가 VPC를 굳이 만들지 않아도 각 리전마다 기본 VPC 및 서브넷이 설정되어 있음
퍼블릭 IP 자동 할당: 외부에서 접근할 수 있는 IP를 할당해줍니다.
스토리지(기본) , 태그 (대시보드에서 편하게 보기위해 Name을 키, 원하는 이름을 값으로 설정)
보안그룹은 NACL과는 다른 AWS 리소스에 사용되며, 상태 저장 방화벽인 것이 특징입니다.(인바운드 규칙 설정시 자동으로 아웃바운드도 같게 설정)
- 보통 터미널 접속을 위한 ssh와 웹 접속을 위한 http, https 가 많이 사용되며 서버에 깔리는 애플리케이션에 따라 추가할 수 있습니다.
- 다만 모든 포트를 개방한 후 특정 포트만 차단하는 블랙리스트 방식보다는 모든 포트를 차단 후 특정 포트만 열어두는 화이트리스트 방식이 안전하다
마지막으로 검토시작 버튼을 누르면 우리가 빌린 EC2에 접속할 수 있는 키페어 쌍을 다운받을 수 있다, 한 번 잃어버리면 다시 발급이 불가하니 유의할것
인스턴스 유형 선택
키 페어에 대한 메시지가 나타나면 키 페어 생성하여 선택한다. (키 페어 없이 사용하는 옵션은 선택하지 말것!! 인스턴스 연결할 수 없음)
나는 기존에 있는 키페어를 선택했지만 키 페어 생성할 수 있다.
네트워크 설정에서 보안 그룹을 생성할 수 있다. 물론 기존 보안 그룹을 선택 가능하다.
편집에 들어가면 해당화면이 나오며 VPC와 서브넷, ip 자동할당, 인바운드 보안 규칙을 수정할 수 있다.
나는 기존의 인바운드 규칙을 선택하였다.
마지막으로 스토리지 구성을 설정하고 인스턴스 시작 클릭한다. 고급 세부 정보도 있지만 필요에 의해 수정하면 된다.
9.인스턴스 상태를 실행 중 상태로 바꾼다.
pending
EC2 instance 구동준비 상태, 요금 미청구
running
EC2 instance 구동 상태, 요금 청구
stopping
EC2 instance 구동중지 상태, 요금 미청구, 스토리지 비용은 청구, 메뉴 - 인스턴스 정지
shutting down
EC2 instance 종료준비 상태, 요금 미청구
terminated
EC2 instance 삭제, 요금 미청구, 메뉴 - 인스턴스 종료
(중지 vs 종료 헷갈리지 말 것!)
퍼블릭 IPv4 주소
인터넷에서 사용가능한 IP
EC2 instance가 실행중인 상태에서만 유지 (동적 IP 주소)
기본적으로 EC2 insatnce에 부여된 퍼블릭 IPv4 주소는 동적할당된 IP 주소
-> EC2 instance가 중지되었다가 다시 실행되면 새로운 IP 주소 부여
프라이빗 IPv4 주소
서브넷에 설정한 IP주소 CIDR 범위에서 할당된 로컬 IP, VPC 내에서 통신 가능
EC2 instance 실행 시간
EC2 instance가 중지 상태인 경우 요금 계산에서 제외
인스턴스 스토리지 볼륨(EBS) 사용량
EC2 instance가 중지 상태인 경우라도 사용요금 부과
네트워크 사용량
패킷 전송(송신)에 대한 비용
Elastic IP, 고정 IP; 5개까지의 IP를 EIP로 할당 가능
EC2 instance에 고정 IP를 부여하고자 하는 경우
NAT Gateway를 사용하는 경우 반드시 EIP 사용
고정 IP 필요성이 있는 경우 사용
EIP가 EC2 instance에 할당되고 실행 중일 때는 요금 미청구
EIP가 EC2 instance에 할당되고 중지일 때는 요금 청구
EIP가 첨부된 네트워크 인터페이스가 연결되어 있으면 요금 미청구
그 외는 요금 청구 (참고)
EC2 메뉴 -> 탄력적 IP -> 탄력적 IP 주소 할당
네트워크 경계 그룹 - region
퍼블릭 IPv4 주소 풀 (pool) - Amazon의 IPv4 주소 풀
태그 설정
EC2 메뉴 -> 탄력적 IP -> 연결할 EIP 인스턴스 선택 -> 작업 메뉴 -> 탄력적 IP주소 연결
리소스 유형 : 인스턴스
인스턴스 : EIP를 연결할 인스턴스 선택
EIP에 연결된 인스턴스나 네트워크 인터페이스가 없는 경우에만 삭제 가능
EC2 메뉴 -> 탄력적 IP -> 연결할 EIP 인스턴스 선택 -> 작업 메뉴 -> 탄력적 IP 주소 연결 해제 후 다시 작업 메뉴 -> 탄력적 IP 주소 릴리즈를 선택하여 삭제
현재 인스턴스 연결하여 접속한 상태이고 웹서버를 접속하기 위해 httpd를 설치해준다
start 명령어까지 해주면 apache2.4가 자동실행된다.
public ip로 접속해야 한다.
이번엔 html 만들려고 한다.
다시 새로고침하면
어떤 곳에 사용하는게 좋은가?
Block Storage : 호스트에서 직접 파일을 액세스하고 기록하며 빠른 성능을 요하는 경우
File Storage : 여러대의 서비스들이 데이터를 공유하고 공유에서 사용해야 하는 경우
Object Storage : 대량의 데이터를 저장하고 또는 앱 컨텐츠로 사용되어야 하거나 다수의 서버에서 해당 데이터에 접근 해야 하는 경우
기존 인스턴스
복제 해보자!
이미지 생성(스냅샷) > MYEC2-clone
생성된 이미지 확인
스냅샷으로 인스턴스 생성
스냅샷으로 만든 인스턴스 연결 후 httpd start 시켜주면 이전과 똑같이 화면 출력되는 것을 확인할 수 있다.