서비스 인프라

클라우드 컴퓨팅, 서버를 직접 두는 것과 무엇이 다른가

클라우드를 쓰면 하드웨어 고장과 전력, 회선은 제공자가 맡지만 운영체제 패치와 데이터, 권한 설정은 여전히 사용자 몫이다.
요금이 유리한지는 작업량이 시간에 따라 어떻게 오르내리는지에 달려 있다.

이 글의 목차클라우드 컴퓨팅이 가리키는 것5
  1. 클라우드 컴퓨팅이 가리키는 것
  2. 제공자가 맡는 것과 사용자에게 남는 것
  3. 컴퓨터를 나눠 쓰는 생각은 1960년대부터 있었다
  4. 작업의 모양에 맞는 요금 방식
  5. 처음 시작할 때 함께 정하는 것

웹 서비스를 만들어 인터넷에 올리려면 그 프로그램을 하루 종일 돌릴 컴퓨터가 필요하다.
요청을 받아 응답을 돌려주는 이 컴퓨터를 서버라고 한다.

서버를 마련하는 방법은 크게 둘이다.
서버를 직접 사서 전기와 회선이 들어오는 곳에 둘 수도 있고, AWS 같은 클라우드 제공자의 서버를 필요한 만큼 쓰고 쓴 만큼 낼 수도 있다.

AWS 튜토리얼은 처음부터 두 번째 방법을 전제로 시작한다.
그래도 클라우드로 오면 무엇이 직접 할 일에서 빠지고 무엇이 남는지, 요금은 왜 그렇게 매겨지는지 알고 시작해야 나중에 덜 헷갈린다.

클라우드 컴퓨팅이 가리키는 것

미국 국립표준기술연구소(NIST)⁠는 클라우드 컴퓨팅을 이렇게 정의한다.
여러 사용자가 함께 쓰는 서버, 저장소, 네트워크 같은 자원에 네트워크로 접근해서, 필요할 때 빠르게 할당받고 반납할 수 있게 하는 모델이다.

NIST가 꼽은 다섯 가지 특징 가운데 AWS를 처음 쓸 때 바로 느끼는 것은 세 가지다.
콘솔이나 API로 사람을 거치지 않고 자원을 직접 만들고, 필요에 따라 빠르게 늘리거나 줄인다.
쓴 양은 계량되어 사용자에게도 보인다.

제공자가 맡는 것과 사용자에게 남는 것

조달 방식에 따른 운영 책임 경계 직접 구매는 기반 설비까지 운영자가 맡고, 컴퓨트를 빌리면 기계와 시설의 책임이 제공자 쪽으로 이동한다. 개념 도해 조달 방식에 따른 운영 책임 경계 자원 준비와 실행 경로 직접 구매 ① 장비 준비 ② 시설·회선 ③ 프로그램 실행 운영자 책임 컴퓨트 대여 ① 기반 운영 ② 자원 제공 ③ 프로그램·설정 책임 인계 조달 방식별 책임 층 운영자 제공자 직접 구매 컴퓨트 대여 프로그램·설정 기계 교체 전기·냉방 회선·건물 프로그램·설정 기계 교체 전기·냉방 회선·건물 책임 경계 책임 경계 직접 구매는 기반 설비까지 운영자가 맡고, 컴퓨트를 빌리면 기계와 시설의 책임이 제공자 쪽으로 이동한다. SOSHIN · DEV NOTES
클라우드를 쓰면 고장과 전기, 회선 같은 아래층은 제공자 몫으로 넘어간다.

서버를 직접 두면 디스크가 고장 났을 때 부품을 갈고, 전력과 냉방을 챙기고, 회선을 끌어오는 일이 다 운영자 몫이다.
처음에 몇 대를 살지도 미리 정해야 한다.

클라우드에서는 이 아래층을 제공자가 맡는다.
AWS는 이 나눔을 공동 책임 모델이라고 부른다.
호스트 운영체제와 가상화 계층부터 데이터센터의 물리 보안까지는 AWS가 운영한다.

가상화는 물리 서버 한 대를 여러 대의 가상 서버로 나눠 쓰게 하는 기술이다.
EC2 인스턴스가 바로 이런 가상 서버다.

그 위는 여전히 사용자 몫이다.
EC2 인스턴스를 쓰면 그 안의 운영체제 업데이트와 보안 패치, 직접 설치한 소프트웨어, 보안 그룹 방화벽 설정이 고객 책임이다.
보안 그룹을 어떻게 여는지는 포트와 방화벽 글에서 다룬다.

S3나 DynamoDB처럼 더 추상화된 서비스로 가면 운영체제와 플랫폼까지 AWS가 운영한다.
그래도 데이터를 어떻게 다루고 암호화할지, 누구에게 어떤 권한을 줄지는 고객이 정한다.

추상화 정도에 따른 고객 책임 경계 서비스가 추상화될수록 AWS가 운영하는 층이 위로 늘어나도, 데이터와 권한 설정은 고객 몫으로 남는다. 개념 도해 추상화 정도에 따른 고객 책임 경계 서비스별 책임 층 고객 책임 AWS 운영 EC2 인스턴스 S3 · DynamoDB 권한 설정 데이터 · 암호화 설정 보안 그룹 설정 설치한 소프트웨어 운영체제 업데이트 · 보안 패치 호스트 운영체제 · 가상화 계층 데이터센터 물리 보안 권한 설정 데이터 · 암호화 설정 운영체제 · 플랫폼 호스트 운영체제 · 가상화 계층 데이터센터 물리 보안 책임 경계 추상화 정도 서비스가 추상화될수록 AWS가 운영하는 층이 위로 늘어나도, 데이터와 권한 설정은 고객 몫으로 남는다. SOSHIN · DEV NOTES
책임 경계가 EC2에서는 운영체제 패치 아래에 그어지고, S3와 DynamoDB에서는 데이터와 권한 설정 바로 아래까지 올라간다.

클라우드에 올리면 보안도 알아서 챙겨 줄 것이라고 기대하기 쉽다.
그러나 서버 안의 패치나 열어 둔 포트는 AWS가 대신 관리해 주지 않는다.

컴퓨터를 나눠 쓰는 생각은 1960년대부터 있었다

컴퓨터가 여러 사용자의 작업을 아주 짧은 시간씩 번갈아 처리해서, 각자 컴퓨터를 혼자 쓰는 것처럼 느끼게 하는 방식이 있다.
이것을 시분할(time-sharing)⁠이라고 한다.

1961년 MIT가 공개한 CTSS가 초기 시분할 시스템이었고, 1963년 시작된 Project MAC은 시분할을 누구나 어디서나 쓸 수 있게 하겠다는 구상을 세웠다.

지금 같은 형태는 2006년에 나왔다.
그해 8월 Amazon이 EC2를 제한된 베타로 열었는데, 가상 서버를 필요한 만큼 만들고 쓴 시간만큼 요금을 내는 방식이었다.

Amazon은 그때 사용량이 가장 많을 때에 맞춰 하드웨어를 갖추는 것은 경제적이지 않다고 짚었다.
너무 넉넉히 갖추면 장비가 놀고, 모자라게 갖추면 몰려든 사용자를 받지 못하기 때문이다.

용량 확보 방식에 따른 유휴 구간 최고점에 고정한 용량은 수요가 낮은 시간마다 유휴분을 남기지만, 조정 가능한 용량은 실제 사용량을 따라간다. 개념 도해 용량 확보 방식에 따른 유휴 구간 용량 결정 경로 ① 부하 변화 ② 최고점 기준 ② 사용량 추적 ③ 고정 용량 ③ 조정 용량 시간에 따른 사용량과 확보 용량 사 둔 용량 빌린 용량 실제 사용량 유휴 용량 최고점에 고정 유휴 구간 용량 시간 최고점에 고정한 용량은 수요가 낮은 시간마다 유휴분을 남기지만, 조정 가능한 용량은 실제 사용량을 따라간다. SOSHIN · DEV NOTES
가장 바쁜 때에 맞춰 장비를 갖추면, 한가한 시간의 여유분도 비용으로 남는다.

직접 산 서버는 가장 바쁜 때를 기준으로 대수를 정해야 한다.
그러면 한가한 시간에는 그만큼의 장비가 논다.
클라우드에서는 바쁠 때 늘리고 한가할 때 줄여서 사용량 곡선을 따라간다.

작업의 모양에 맞는 요금 방식

그래서 클라우드가 싼지 비싼지는 작업이 시간에 따라 어떻게 오르내리느냐에 달려 있다.
하루 종일 비슷하게 도는 작업이라면 쓴 만큼 내는 방식이 꼭 유리하지는 않다.

AWS의 요금 방식도 이 모양에 맞춰 나뉘어 있다.
EC2만 봐도 약정 없이 시간이나 초 단위로 내는 온디맨드, 사용량을 약정하고 할인받는 Savings Plans, 남는 용량을 싸게 쓰는 스팟 인스턴스가 있다.

스팟 인스턴스는 할인 폭이 큰 대신, AWS가 그 용량이 필요해지면 회수해 갈 수 있다.
중간에 멈춰도 이어서 처리하면 되는 작업에 맞는다.

이어서 처리하려면 일을 작은 묶음으로 나누고, 묶음이 끝날 때마다 결과를 S3처럼 인스턴스가 사라져도 남는 곳에 저장한다.

용량이 회수되면 작업은 어디서 다시 시작할까

묶음 6개로 나눈 일괄 작업이 스팟 인스턴스에서 4번 묶음을 처리하던 중에 용량이 회수된다. 결과를 언제 저장하느냐에 따라 새 인스턴스가 시작하는 자리가 달라진다.

일괄 작업의 묶음 6개

1번
저장
2번
저장
3번
저장
4번
진행
5번
대기
6번
대기

스팟 인스턴스

실행 중

4번 묶음 처리 중

인스턴스 밖에 저장된 결과

1~3번 묶음

묶음이 끝날 때마다 저장

묶음이 끝날 때마다 결과를 인스턴스 밖에 저장하면, 회수된 뒤 새 인스턴스가 끊긴 4번 묶음부터 이어서 처리한다. 마지막에 한 번만 저장하는 작업은 그때까지의 결과를 잃고 1번 묶음부터 다시 시작한다.

중단 동작은 인스턴스 종료로 두었고, 저장 위치는 S3처럼 인스턴스가 사라져도 남는 곳이다. 묶음 수와 회수 시점은 예시이며, 회수 2분 전 알림과 새 인스턴스를 띄우는 방법은 다루지 않는다.

요청이 들어올 때만 코드를 실행하는 AWS Lambda는 요청 수와 실행 시간으로 요금을 매긴다.

작업의 모양맞는 요금 방식반대로 고르면
하루 종일 비슷하게 돈다약정 할인(Savings Plans 등)할인 없는 온디맨드 요금을 계속 낸다
평소에는 한가하다 가끔 크게 튄다온디맨드로 필요할 때 늘린다최고점에 맞춘 약정이 한가한 시간에 남는다
짧고 드물게 돈다요청 단위 과금(Lambda 등)켜 둔 서버 요금이 실제로 쓴 양보다 커진다

처음 시작할 때 함께 정하는 것

서버를 둘 위치도 정해야 한다.
AWS는 데이터센터를 지역 단위로 묶어 운영하는데, 이 단위를 리전이라고 한다.
사용자 대부분과 가까운 리전을 고르면 네트워크 지연을 줄일 수 있고, 서울에도 리전(ap-northeast-2)⁠이 있다.

데이터 전송 요금도 따로 있다.
인터넷에서 AWS로 들어오는 전송은 무료지만, AWS에서 인터넷으로 나가는 전송에는 요금이 붙는다.
이미지나 영상처럼 내려받는 양이 많은 서비스라면 이 요금을 서버 요금과 함께 계산에 넣는다.

처음 연습할 때는 AWS 프리 티어부터 확인한다.
새 AWS 계정은 가입할 때 100달러 크레딧을 받고, 정해진 활동을 마치면 최대 100달러를 더 받을 수 있다.
무료 플랜은 6개월이 지나거나 크레딧을 다 쓰면 끝난다.

유료 플랜으로 넘어갈 때는 AWS Budgets로 예산 알림부터 걸어 둔다.
요금이 예상보다 빨리 늘어도 청구서가 나오기 전에 알 수 있다.

소신을 상징하는 까마귀 목판화 일러스트
작성자소신 · Soshin

웹과 서버를 만들고, 개발하며 배운 것들을 글로 남깁니다.

좌우로 움직여 보세요