본문 바로가기
연구소👨‍💻/CS연구소

[AWS] 책 AWS 구조와 서비스 읽기 : Chapter 3 - 1

by 신그자체김상범 2024. 6. 7.

지난번 2장에서 이어지는 내용으로 3장에서는 AWS의 서버들을 다룬다 

서버하면 일반적으로 EC2를 떠올리게되는데 해당 책에선 그것 뿐만 아니라 Lambda같은 다른 서버들의 이야기도 나온다. 일단 나는 이 책을 EC2와 나머지 챕터로 나눠서 이번에는 EC2의 내용을 다뤄보고자한다.

EC2를 이해하기 위한 서버 기초지식

서버는 컴퓨터다.

서버라는건 듣기엔 굉장히 어려워보이지만 사실 요청을 처리할 자원이있는 컴퓨터 이상 이하도 아니다. 책에 나온 말을 그대로 인용하면

 

네트워크에서 데이터나 서비스를 제공하는 컴퓨터를 서버, 그 서비스를 이용하는 프로그램을 클라이언트라고 한다. 웹 사이트와 웹 브라우저가 대표적인 예다. 웹 사이트 서비스를 제공하는 컴퓨터가 서버고 웹 브라우저가 클라이언트다.

 

그리고 서버도 대단한 분류가 있는 것이 아니라 어떤 서비스를 이용하는 지에 따라서 다음과 같이 분류할 수 있다.

메일 서버 : 메일 전송 요청 등

DB서버 : 데이터 보존, 백업, 관리

웹서버 : HTML, CSS, 이미지파일 등이 저장된 서버.

 

서버의 종류중 가장 중요한게 웹서번데 웹서버는 사용자의 브라우저가 클라이언트가 되고 웹서버를 서버로 지정해서 통신한다.

서버에는 OS가 중요하다, 대부분의 경우에선 리눅스 OS가 사용되는데. 서버 가상화를 하면 한개의 기기에 여러 OS가 동작할 수 있다.

EC2란 : 엄청 큰 AWS서버에서 가상화를 진행한 작은 서버이다.

가상화된 용도에 따라서 종류, OS, CPU, 메모리 크기 바뀐다.

EC2의 장점은 여기서 나온다

온프레미스 방식으로 서버를 짠다고 가정하면 총 6단계를 걸쳐야한다

  1. 응용프로그램
  2. 확장성 / 가용성 관리
  3. OS 설정
  4. OS 설치
  5. 서버 하드웨어
  6. 데이터 센터, 전원, 네트워크

그런데 EC2를 쓰면 그럴 필요가 없다.

  1. 응용 프로그램
  2. 확장성 및 가용성
  3. OS 설정

3가지만 관리해주면 된다. 관리해야할 것이 반토막나니 편할 수 밖에. 그리고 이후에도 CPU나 메모리를 자유롭게 조절할 수 있다.

EC2에서 준비해야하는 것

이미지 AMI

OS와 소프트웨어가 설정된 이미지를 의미한다. 흔히 MacOS, ubuntu등을 여기서 볼 수 있다.

t2.micro 이게 뭐야? 인스턴스 유형

위의 얘기를 들어보면 EC2에서는 메모리 CPU, GPU등등이 자유롭게 바뀔 수 있다고 했다. 그렇다면 AWS 콘솔에서 보이는 이 어마어마한 창들은 그 분할의 일종이라는걸 알 수 있다.

 

이 단어들이 처음 aws를 사용하는 유저들에게 가장 높은 진입장벽이라고 할 수 있는데 각각의 단어들을 절약하면 다음과 같다.

[ 패밀리 네임 ] [ 세대 ] [ 추가 기능 ] . [ 크기 ]

패밀리 문자는 말그대로 대분류다.

우리가 많이 보는 T와 M은 범용 인스턴스 유형이라는 것을 알 수 있고 CPU의 수나 메모리의 수가 많은 C, R모델이 있다.

또한 고속 컴퓨팅이 되는 인스턴스는 P, 스토리지 기능이 좋은 인스턴스는 P 태그이다.

3번째 칸 추가기능 / 속성

3번째 칸에서 나오는건 인스턴스의 속성이다. 내 AWS 속성에 맞게

z : 고주파

e : 추가 스토리지

d : 블록 스토리지

n : 네트워크 최적화

g : AWS Graviton CPU

a : AMD 프로세서

등등의 성질을 가진다

블록 스토리지란 들어오는 데이터들을 블록으로 쪼개고 나누어서 저장하는 기능이다.

 

세대와 크기는 직관적으로 정비례한다.

말그대로 세대, mini, xlarge같은 크기는 그 자원의 수, 성능과 관련이 있고 더 높은 값일 수록 더 비싸고 성능이 좋다고 이해하면 된다.

AWS EC2 요금제

EC2는 비용과 관련해선 3가지 방식이 존재한다. AWS의 불친절한 설명으로 인하여 실제 사이트에서는 각각의 내용들을 구분하기가 난해한데 먼저 이름부터 확인해보자.

  1. 온디맨드 인스턴스
  2. 예약 인스턴스
  3. 절감형 플랜
  4. 스팟 인스턴스

온디맨드 인스턴스

우리가 가장 흔히 사용하는 요금제일 온디맨드 인스턴스는 인스턴스의 이용 시간과, 유형에 따라서 주기적으로 요금이 발생하는 서비스다. 말그대로 서버를 킨 시간만큼 내는 요금제다.

예약형 플랜, 절약형 플랜.

온디맨드와는 다르게 최대 몇 달동안 서비스를 미리 이용한다는 약정을 잡고 할인된 가격에 서버를 이용하는 방식이다. 책에 따르면 최대 72% 할인이 가능하다고한다. 내가 얼마동안 서버를 운영할지가 정해져있는 상황이라면 고려해볼만한 플랜이다.

스팟 인스턴스

약간의 재고처리 느낌으로 AWS에서 현재 남는 자원이 있을 때 최대 90% 할인된 가격으로 서비스를 사용할 수 있는 모델이다. 대신 그 공간이 사용될 예정이거나 용량을 반환해야할 때 갑작스럽게 서버가 정지될 수도 있다. 딱히 인스턴스. 서비스를 계속해서 유지할 필요가 없는 토이프로젝트에서 사용할만해 보인다.

이외에도 네트워크 외부로의 통신, 데이터 스토리지 사용을 통해서 비용은 발생할 수 있다.

서버를 외부에 공개하는법

서버는 서비스를 사용할 사람들에게 공개됨으로써 그 가치를 가진다. 인터넷 웹 서비스 같은경우엔 모든 사람에게 서비스가 제동되어야한다. 그렇기 때문에 EC2는 외부로의 공개설정을 해놓아야한다.

책에 따르면 EC2를 외부에 공개할 때 3가지 조건을 필요로 한다고한다.

  1. EC2를 퍼블릭 서브넷에 배치
  2. EC2에 퍼블릭 IP주소를 부여
  3. 보안 그룹에서 외부로의 접근을 허가

여기서 우리가 직접 관리하는 부분은 3번이다. 우리가 직접 하는부분은 보안그룹을 통해서 외부 IP의 접근에 대한 특정 포트를 열고 닫는 일을 해줘야한다.

외부 입력은 크게 두가지가 있다.

  1. 서비스를 운영하는 주체의 접근
  2. 서비스를 사용하는 사용자의 접근

서비스를 운영하는 주체의 접근

ssh -i [액세스키 파일] ubuntu@[아이디]

AWS를 사용해봤다면 이런 코드를 봤을 수 있다. 이 코드는 ssh라는 도구를 이용해서 AWS EC2에 접근하는 것과 같다. 이때 사용되는 포트는 22포트이다.

서비스를 사용하는 사용자의 접근

사용자는 보통 http, https 프로토콜을 통해 서버에 접근한다. 각각의 포트는 80, 443 포트로 해당 인스턴스에 들어오는 접속을 허용할 수 있다.

인바운드와 아웃바운드

또 인바운드, 아웃바운드라는 내용이 있는데 인바운드는 밖에서 안으로 아웃바운드는 안에서 밖으로 통하는 통신의 설정을 의미한다 .

또한 외부 IP뿐만 아니라 다른 보안그룹의 접근을 허용할 수도 있다. 이럴 때는 다른 EC2 보안그룹의 그룹 ID를 적으면 된다.

Auto Scaling 부하에 따라 EC2 수를 조절

여태까지 글에서 확인했듯이 EC2는 가상화된 서버의 한 단위에 불과하다. 그 말인 즉슨 실제 서비스를 위해 여러개의 EC2를 사용할 수 있다는 것이기도 하다.

그런데 EC2한개가 비용이다보니 서버의 최대 트래픽만 고려해서 많은 서버를 사놓는 것은 비용손실이다. 그렇기 때문에 AWS에서는 CPU 사용률에 따라서 서버를 추가하거나 줄일 수 있다. 부하의 기준은 CPU 뿐만 아니라 사용자수, 요일등등으로도 설정해 놓을 수 있다.

Auto Scaling의 또다른 장점은 장애가 발생하여도 자동으로 새로운 인스턴스르 만들어주는 곳에 있다고한다.

또 서버의 수요를 예측하는 예측 스케일링, 버전관리 등등이 존재한다.