클라우드 컴퓨팅/AWS 이론

[24.07.08] AWS 기본 과정 - 1 클라우드 컴퓨팅 기초 및 용어 정리, 리전과 AZ, EC2 Instance

우잉~ 2024. 7. 8. 21:04

 

클라우드 컴퓨팅

클라우드 컴퓨팅은 구성 가능한 컴퓨팅 자원(컴퓨터 네트워크, 서버, 스토리지, 애플리케이션, 서비스 등)에 대해 어디서나 접근이 가능한, 주문형 접근을 가능케하는 모델

내가 원할 때 언제 어디서나 네트워크를 통해서 IT 관련된 인프라, 플랫폼, 서비스를 빌려쓰는 것.

 

퍼블릭 클라우드

- 컴퓨팅 리소스를 공개적으로 제공한다. 외부 통신 가능

프라이빗 클라우드

- 컴퓨팅 리소스를 내부에서만 접근 가능하다.

단점: 트래픽 폭주 시 자원이 확장하기 어렵다.

 

클라우드가 아시아에 출시된 지 얼마나 되었을까?

aws 싱가포르 리전 2010년 출시

aws 한국 리전 2016년

클라우드 컴퓨팅이 한국에서 흥행한지 얼마 안 됐다. 6~7년 정도

 

클라우드 컴퓨팅 종류

AWS, Azure, GCP, NHN, UCloud

 

* 물리적 코어 1개, 메모리 8GB, SSD 512GB 한달 동안 얼마 주고 사용할 건지?

-> EC2 기본 사양 한달에 20만원

클라우드는 저렴하지 않다. 가격을 항상 신경 써야 한다.

하지만 가격 예측이 쉽지 않다. -> 클라우드의 단점

 

 

하이브리드 클라우드란?

프라이빗 클라우드 + 1개 이상의 퍼블릭 클라우드

 

멀티 클라우드란?

프라이빗 클라우드 + 2개 이상의 퍼블릭 클라우드

 

하이브리드 vs 멀티

요즘은 하이브리드 클라우드를 많이 사용한다.

: 클라우드로 구축하면 비용이 장난 아니다. 트래픽이 많이 몰리는 것들만 클라우드로 사용하는 것이 요즘 추세

 

하이브리드 클라우드

AWS: outpost

Azure: Azure Stack

GCP: 없음

 

한국 클라우드를 꼭 사용해야 하는 경우가 있다.

Chat bot이나 tts. 음성인식이 필요한 것들

AWS만 사용한다고는 할 수 없다.

 

퍼블릭 클라우드 순위

1. AWS

2. Azure

3. GCP

 

프라이빗 클라우드 순위

1. vmWare

2. openStack

3. Azure

 

* 용어에 대한 뜻을 잘 알자

플랫폼: 애플리케이션이 개발될 수 있는 개발 환경

 

클라우드 서비스 모델

1. IaaS(Infrastructure as a Service): 가상화, 서버, 스토리지, 네트워크 등 인프라 자원을 제공하는 서비스

2. PaaS(Platform as a Service): 인프라 자원을 포함하여 OS, 미들웨어, 런타임 등 개발할 수 있는 환경을 제공하는 서비스

3. SaaS(Software as a Service): 인프라 자원, 플랫폼, 애플리케이션 모두 제공해주는 서비스

 

온프레미스와 오프프레미스

On-premise: '내 소유의' 자원

Off-premise: 빌려 쓰는 클라우드

 

* 클라우드 백업 솔루션같은 경우, 우리의 자원을 클라우드에 저장하게 된다.

 

5가지 전개 모델

1. 퍼블릭 클라우드

2. 프라이빗 클라우드

- 온 프레미스 프라이빗 클라우드

- 매니지드 프라이빗 클라우드: 데이터센터를 구축을 직접 하고 운영만 너네가 해줘.

- 호스티드 프라이빗 클라우드: 데이터도 운영도 너네가 관리 다 해줘 근데 우리만을 위해서 해줘

3. 커뮤니티 클라우드: 같은 분야의 사람들이 같은 목적을 위해 만든 클라우드

4. 하이브리드 클라우드

5. 멀티 클라우드

 

클라우드를 사용해야 할 때(장점)

- 다른 나라에게 서비스할 때

- 빠르게 서비스를 테스트하고자 할 때

 

클라우드 단점

- 비용 예측 불가

- AWS는 표준 용어를 사용하지 않아 생소 -> 다루는 방법 모르면 사용 못함

* lock-in: 한 서비스에 묶임

클라우드 같은 경우, 각 회사마다 용어들이 다 다르기 때문에 한 가지만 사용하다 보면 다른 것을 못쓰게 될 수도 있다.

 

AWS는 리눅스를 위한 서비스만 제공한다. => 사실 윈도우도 제공하긴 하지만, 대부분의 서비스가 리눅스 환경을 위해 만들어졌다.

윈도우 서비스를 이용하고 싶다면 Azure쪽이 더 다양하고 저렴하다!

 


 

리전, 가용영역, 글로벌 서비스

리전: AWS 데이터센터의 물리적 위치

가용 영역 (Availability Zone): 데이터 센터의 묶음. 하나의 가용 영역은 두세 개 이상의 데이터센터 클러스터링. 하나의 데이터 센터에는 4만개 정도의 서버가 존재한다. 하나의 AZ의 서버는 1만개 정도. 100km 미만 거리에 AZ 구성되어 있음

서울 리전의 AZ는 2a, 2c. 최근 생성된 2b, 2d에서는 최신 서비스만 되는 경우도 있다.

 

글로벌 서비스, 리전별 서비스, AZ별 서비스로 나뉘어져 있다.

 

리전 영역: 데이터 센터의 위치

가용 영역: 데이터 센터의 묶음

로컬 영역: 사용자에서 가까이 빠르게 서비스를 제공하는 것. 10m/s 미만 속도로 데이터를 전송하는 것. 그런데 서울은 좁아서 무조건 10m/s 미만 전송이 가능. 그래서 한국에는 없다.

웨이브랭스 영역: 5G 이용하여 최단 거리 전송 가능(SKT 망을 타고 전송됨) 10m/s 미만 대기 시간으로 서비스 이용할 수 있음

 

한국은 서울 리전 1개

가용 영역 4개 (2a, 2c, 2b, 2d)

웨이브랭스 영역 2개 (SKT - 서울, 대전)

서울 리전은 2016년에 시작되었다.

 


 

AWS Console

AWS는 콘솔 매니지먼트에 들어가서, 콘솔에 들어가서. AWS 자원을 생성하고 삭제한다라고 함

굉장히 엔지니어적임.

Azure는 포탈이라고 함

 

그래서 콘솔이 뭔데?

보통 콘솔은 장비에 연결하여 관리할 수 있는 포트라고 한다.

 

AWS Management Console: AWS 자원을 관리하는 화면 정도로 생각하면 된다.

2024년도에는 CloudShell이라는 기능까지 포함되어 있다.

 

콘솔 접속

console.aws.amazon.com

리전이 올바르게 설정되어 있는지 확인해야 함!!!

나도 모르게 변경되어 있을 수도 있다... ^_^

 

더 많은 사용자 설정
기본 리전 설정

AWS에서도 리전이 계속 변경되는 것을 알고 있었는지 기본 리전을 선택하는 사용자 설정이 추가되었다.

 

클라우드쉘

AWS 안에 가상머신 넣은 거라고 생각하면 된다.

3~4GB 정도 쓸 수 있는 CloudShell

Cloudshell 실행

 

즐겨찾기 가능

 

AWS는 매년 1~2회씩 화면이 변경된다...

매번 바뀌는 AWS Console을 자주 다뤄보면서 익숙해져야 한다.

 


 

Computing Service

전세계에서 가장 많이 쓰는 서비스 3가지?

EC2 / S3 / Lambda

 

EC2 Instance

: 가상머신 서비스

 

EC2는 무엇인지? 

- 가상 서버(가상 머신)를 제공하는 서비스

 

Instance는?

- 각 가상머신 한 대

- 필요할 때 바로바로 꺼내 쓸 수 있다.

 

 

스케일 업 vs 스케일 아웃

스케일 업: cpu, 메모리 성능을 높임. CPU, 메모리 성능만 부족하다면 스케일 업을 하면 된다.

스케일 아웃: 서버를 늘림

 

EC2 인스턴스는 스케일 아웃이 가능하다. 스케일 업은 불가능.

스케일 아웃의 대표적인 기술: Auto Scaling

프라이빗 클라우드에서는 메모리나 CPU를 켜져 있는 상태에서 변경해도 사용이 가능하다. => 스케일 업 지원

퍼블릭 클라우드에서는 고장 및 오류의 위험이 생길 수도 있기 때문에(엔지니어적 관점) AWS 지원을 하지 않음. => 스케일 아웃 지원

실제로 작동되는 서버에 CPU나 메모리를 꼈다뺐다하면 굉장히 위험하기 때문!

 

EC2 인스턴스 유형 및 표기법

[인스턴스패밀리][인스턴스 세대].[인스턴스 크기]

ex) c4.large

 

*  제일 작은 인스턴스 패밀리 t < m < c

공부할 때 쓰는 건 t 타입.

실무에서는 지양한다. 왜?

t타입은 auto scaling이 가능. c. m는 일부 가능. 다른 타입은 거의 다 안 된다. 

t타입은 CPU 제약이 있음. CPU의 평균 5~10%만 사용할 수 있게 한다.

크레딧이라는 개념이 있는데 이 크레딧이 차감되면서 CPU 사용하게 되는데, 다 사용 시 멈추게 된다.

 

EC2의 하드 디스크 => EBS(Elastic Block Store)

진짜 서버에 연결되어 있는 하드 디스크: 인스턴스 스토어

네트워크에 연결되어 있을 경우: EBS 

 

- 인스턴스 스토어: 임시 저장소라고 생각하면 됨. EC2 정지 및 종료 시 데이터가 손실된다.

EBS: 종료되어도 데이터 유지 가능

 

* 하이퍼바이저: 서버 가상화 해준다.

 

EC2 생성할 때 필요한 것

- VPC, 보안 그룹, AMI, EBS 볼륨, 키 페어 등

 

AMI: 아마존 머신 이미지. 인스턴스 시작에 필요한 미리 설치 된 OS, 애플리케이션이 구성된 머신 이미지

ex. ubuntu, windows 등

 

이미지를 직접 만들 수도 있음 => Custom image

벤더, 마켓 플레이스 파트터에 의해 관리되고 유지되는 공개 이미지를 사용할 수 있는 커뮤니티도 존재한다. => Community AMIs AWS Marketplace

 

AMI 카탈로그

 

web server 이미지 등 필요한 이미지를 검색할 수도 있다.

 

* 이미지를 왜 직접 만들어서 이용할까?

- AWS가 제공하는 기능이 제한되어 있기 때문이다. 보통 기본 기능만 제공을 하기 때문에 직접 제작하거나 구매해서 사용

 

아무튼 이 AMI를 사용하는 이유는 무엇?

-> EC2 인스턴스를 생성하기 위해서.... 이미지가 없다면 EC2 인스턴스도 생성할 수가 없다!

 

EC2 대시보드에 가게 되면 아래와 같은 내용들을 생성할 수 있다는 것을 확인할 수 있다.

인스턴스를 생성하고 삭제했을 때, 함께 지워지지 않는 것들이 있다.

보안그룹, 탄력적 IP, 키 페어

default security grouop

디폴트 값이 존재하는데,

되도록이면 default는 사용하지 않도록 한다.

 

 인스턴스를 만들기 위해서는 '인스턴스 시작'을 누르면 되는데 여러 곳에서 생성할 수 있음

 

이름, 키페어 등록하면 인스턴스가 생성된다.

linux-01 인스턴스 생성
Windows-01 선택한 인스턴스 생성

 

 

Linux 계열 EC2는 root 계정 접근 X, 패스워드 입력 필요 X

AWS에서 맨 처음에 Administrator로 들어가게 된다.

 

linux 연결

 

 

근데 문제는?

접속을 계속 이런 식으로 해도 되는 건가?

매번 AWS 콘솔에서 EC2 인스턴스 연결을 눌러 써야하는 건가?

심지어 전부 영어이다.

 

date 명령어 사용

date 명령어를 사용하면 시간은 미국 시간을 띄워준다.

시간이 다르니 로그 파악하기도 굉장히 곤란!!!!!!!!!!!

 

 

마우스 클릭 딸깍딸깍 몇 번 했더니 서버는 바로 만들어졌다... 이런 걸 보면 참 좋아보이는데 생각해보면 문제가 많다.

그래서 우리는 기존에 있던 방식으로도 할 줄 알아야 한다.

기존에 내가 썼던 방식 => MobaXTerm 터미널 프로그램을 이용한 SSH 원격 접속

 

현재 접속한 ec2 인스턴스 서버는 프라이빗 아이피를 사용한다. => 외부 통신이 불가하여 나만 쓸 수 있다

그리고 aws에서는 방화벽이 기본으로 제공된다. => AWS에서의 방화벽은 보안 그룹!

 

linux는 ssh 원격 접속으로만 접속 가능하고,

windows는 rdp 접속으로만 가능하다.

 

 

현재 두 인스턴스느 가용 영역은 2a로 설정되었다.

 

* 인스턴스 생성 시 주의해야 할 점

자동으로 배치된 가용 영역 2a가 모두 다운되어버린다면, 두 인스턴스 모두 다 동작하지 않을 것이다.

그래서 우리는 가용 영역을 최소 2개로 나누어서 설정해주는 것이 Good => 권고 사항

*  가용 영역이 다를 경우 로드 밸런서를 생성해줘야 한다.

 

 

'인스턴스 종료' -> 서버 종료... 다 사라진다 전부전부 사라진다.

이 인스턴스는 사라질 것이다.

 

종료되었는데 삭제는 안 된다. 없어졌는데? 없어지지 않았다... 근데 아무튼 없어짐.

2~30분 뒤에는 완전히 삭제되어 내 눈에서도 안 보이게 될 것이다...

종료됨< 완전히 서버가 날라간다는 뜻!!!!! 주의해야 한다.

* GCP 같은 경우는 인스턴스 복구 기능이 있다.

 

종료 관련해서 많은 이슈가 있었기 때문에...? 종료 방지 기능이 들어가있다.

고급 세부 옵션 - 종료 방지, 중지 방지 설정

 

 

 

이건 스레드임

스레드란?

프로세스(Process) 내부에 위치한 일련의 작업 흐름.

프로세스란? 

컴퓨터에서 연속적으로 실행되고 있는 프로그램.

그럼 다시 스레드란?

컴퓨터에서 연속적으로 실행되고 있는 프로그램 내부에 위치한 일련의 작업 흐름.

 

 

 

Linux 인스턴스 접속 방식

<키 페어/인증서/IAM>

모든 접속 방식은 키 페어, 인증서 방식으로 이루어진다. 패스워드 XXX!!!!

IAM은 사용자를 생성하여 접속 권한을 부여할 수 있다.

 

EC2 인스턴스 키 페어 등록

키 페어란?

클라우드에 접속하기 위해 생성되는 암호화 파일.

보안 그룹(방화벽) 설정

 

보안 그룹을 생성하게 되면 이름이 launch-wizard-[숫자]로 자동 부여된다.

 

스토리지(하드웨어)

스토리지 설정

 

인스턴스 개수도 조정할 수 있다.

같은 사양의 인스턴스 10개 생성하기

 

 

 

생성된 인스턴스의 퍼블릭 아이피를 이용해 putty 접속

Amazon linux 사용자 이름은 'ec2-user'이다

어떤 리눅스를 사용하는지에 따라 사용자 이름이 전부 다르니 확인하고 접속해야 한다!

AMI 종류 사용자 이름
Amazon Linux ec2-user
Centos centos
Debian admin / root
Fedora ec2-user
RHEL ec2-user / root
SUSE ec2-user / root
Ubuntu ubuntu / root
Windows administrator

 

root 접속 불가능...

 

root로 접속하려고 할 때, 경고문구가 뜬다.

 

* 키 파일 형식

.pem: open SSH에서 사용되는 포멧

.ppk: putty에서 사용되는 포멧

 

!!! .pem 키는 프라이빗 키만 담겨있고, .ppk는 퍼블릭, 프라이빗 키 둘 다 담겨있다. !!!

 

PuTTYgen: 키 파일 형식 변환기

.pem <-> .ppk 변환이 가능해진다.

PuTTYgen으로 키 파일 형식 변환하기

 

 

키 파일 선택

 

private key.ppk 변환

 

 

.pem 확장자 .ppk로 변경

 

.ppk 프라이빗 키 등록하기

Connection > SSH > Auth > Credentials > Private key file authentication 파일 업로드

putty 접속 완료

 

키 페어를 가지고 들어오는 건 보기엔 굉장히 보안이 뛰어나보인다...

키 페어를 잃어버리거나 해킹당한다면 큰일난다........

 

키 페어 아주 잘 관리해야 하는데!!!

기존 키 페어를 쓰는 게 좋을까? 아니면 리눅스 인스턴스를 생성할 때마다 새로운 키 페어를 생성해야 할까...?

 

일단 AWS에서는 private key를 저장하지 않는다고는 한다. -> 믿을만 한가...? 사실 잘 모르겠음. 저장 안 한다고 해도 저장할 수도 있는 게 아닌지?

 

public key는 AWS 저장소에 저장됨

 

 

여러 대의 EC2가 있을 때

같은 키 페어를 쓸 때 관리는 편하지만, 탈취 당하면 끝장남

다른 키 페어 쓸 때는 보안은 뛰어나지만, 관리는 불편

 

Key를 그럼 어떻게 만들어야 하지?

각 부서별로 만들 것인지? 웹 서버/DB 서버 따로 만들 것인지?...

웹 서버의 목적대로 만들 것인지? 계정에 따라 만들 것인지???...

결론 : 상황에 따라 맞게 사용하면 된다.

 

AWS에서 private key는 따로 저장하지 않는다고 하니,  AWS 저장소에 있는 키는 Public key가 된다.

public key 저장소에 그대로 보관되어 있기 때문에 EC2를 삭제하더라도 public key의 정보는 남게 된다.

 

키 페어는 한 번 생성하면 이걸로 쭉 써도될까?

당연한 이야기지만 Key는 직접 관리하는 것이 좋다. 이거 잃어버리거나 해킹 당하면 같은 키 페어를 사용하는 서버 모두 통째로 사라지게 되는 것이다.

 

퍼블릭 키를 확인하는 것이 중요한 이유는? ->  public key를 삭제하면 ec2-user는 접속이 불가능하다.

주기적으로 키를 교체해야 하는 이유는? -> 아무래도 보안 상 최소 6개월~1년 마다 주기적으로 바꿔줘야 한다.

프라이빗 키페어를 분실했을 경우... 이걸 어떻게 해야할까?

키 페어 굉장히 중요

 

 

윈도우즈 접속 시 암호 해독을 통해 사용자의 패스워드를 확인할 수 있다.

매번 해독을 해야하는가? 아니면 패스워드를 바꿀 수 있나?

결론: 사용자가 직접 패스워드를 바꿀 수 있음.

 

근데? 이제 키 페어가 쓸모 없어짐.

왜? 이제 변경된 패스워드로 윈도우즈 접속이 가능해지기 때문에 첫 접속 때만 키 페어를 사용하게 된다.

 

두 번째 윈도우즈를 만들었을 때 같은 키 페어를 사용할 때, 이 패스워드는 같을까? 아니면 다를까?

-> 윈도우즈는 같은 키 페어를 사용한다 해도 다른 비밀번호를 사용해야 한다. 왜일까?

윈도우즈는 패스워드 형식이기 때문에 AWS에서 패스워드를 랜덤으로 부여함.

그래서 윈도우즈 패스워드를 처음 접속할 때만 키페어 암호 해독을 하여 랜덤 부여된 패스워드를 이용해 로그인 하고, 이후 패스워드를 변경하여 그 패스워드를 사용하면 됨.

 

결론은 여러 개의 윈도우즈 인스턴스를 가지고 있더라도, 각 윈도우즈 인스턴스에는 랜덤으로 부여된 패스워드가 주어진다.

 

왜 랜덤으로 부여되나? 윈도우즈는 패스워드 방식으로 로그인해야 되기 때문이다...

리눅스 접속을 위해 사용하는 키 페어 로그인 ->  보안 Good

그러나, 패스워드 로그인은 브루트포스(무차별대입) 공격을 통해 마구잡이로 입력하여 해킹할 수 있기 때문에, 아주 길고 어려운 패스워드로 생성이 되고, 사용자가 직접 패스워드를 변경해줘야 한다.

 

키 페어를 생성할 때 RSA로 생성해야 한다.

그럼 ED25519는 무엇? 암호화가 더 강력하고 속도도 더 빠름. 하지만, 기존 리눅스에서 지원을 하지 않는 것이 많음.

- 윈도우즈에서 ED25519는 아예 지원되지 않음.

 

 

 


 

 

리눅스 인스턴스에 접속해서 가장 먼저 해야 할 것.

1. 한국 시간으로 변경

- 현재 UTC로 시간이 찍힌다. -> 로그 확인이 굉장히 어려워짐!!! 변경 꼭 해야한다.

> sudo timedatectl set-timezone Asia/Seoul

시간 변경

 

2. 호스트 이름을 변경해야 한다.

3. 새로운 사용자도 만들어야 한다.

 

 

윈도우즈 인스턴스 접속 시

1. 시간 변경

2. 언어 변경

3. 팟 플레이어, 크롬, 반디집, 반디뷰, putty, winSCP 설치

4. 패스워드 변경

5. 숨김 폴더, 확장자 보이기

6. 배경화면 꾸미기

 

근데 윈도우즈 20개를 위와 같이 다 만들려고 하면 반복작업 해야한다... 너무 번거롭고 하기 싫다!

한 번 내 마음대로 꾸민 Windows 이미지를 AMI로 만들어서 사용

 

 

아니 내가 예쁘게 배경화면을 바꾸었는데 다시 원래대로 돌아가있다! 왜 이럴까?

windows가 인스턴스를 구성할 때 ec2 config라는 서비스 사용 (Windows Server 2022부터 EC2Config와 EC2Launch를 모두 대체하는 EC2Launch v2를 사용)

EC2Launch 란?

- 인스턴스가 부팅될 때, 즉, 처음 시작하거나 중지 후 재시작할 때 동작하는 서비스.

이 서비스에 인스턴스의 wallpaper를 설정하는 작업이 있다.

 

* 하드디스크가 부족해졌을 때

클라우드는 중단하지 않은 상태에서  C 드라이브 늘리는 것도 가능. 디스크 추가도 가능.

5기가를 더 사용해야 할 때, 20기가로 늘릴까? 100기가로 늘릴까?

 

과금 관련해서 알아야 할 부분

과금 방식은 2가지가 있다.

1. 프로비저닝만큼 과금

2. 사용한 만큼 과금(종량과금제)

EBS(하드 디스크)는 프로비저닝한 만큼 과금되고, ec2는 사용한 만큼 과금된다.

* 프로비저닝이란? 준비되어 있는 시스템 서비스를 제공받아 사용.

메모리를 늘릴 때는 내가 얼마나 더 사용할 건지에 대한 기준을 잘 잡고 설정해줘야지 쓸데 없는 과금이 발생하지 않는다.

 

과금 관련해서 문서를... 꼭 잘 읽어야 한다...

얘네 과금 초 단위 과금이라 적혀있는데 우리의 초 단위는 60초 기준이에요^^라고 적혀있다... 

윈도우즈는 60분 기준...... 2분 30초 써도 60분 사용했다며 과 금 된다...

과금 관련해서는 아주 작은 글씨로 써져있을 가능성이 크다...^_^ 무조건 기능 사용할 때 문서 꼼꼼하게 읽자