2020.10.21

AWS 무료 서비스 계층을 최대한 활용하는 방법

Peter Wayner | InfoWorld
무료는 강력한 유인 요소다. 필자는 한 지방 대학에서 웹 프레임워크를 강의할 당시 과제를 내면서 모든 실험을 아마존 웹 서비스의 무료 서비스를 활용해 신속하게 수행할 수 있도록 했다. 학생들은 돈을 한 푼도 쓰지 않고 계정을 만들고 확장해서 10여 대의 서버를 사용할 수 있었다.
 
ⓒ Getty Images Bank

AWS를 비롯한 클라우드 서비스 업체가 각자의 제품을 경험할 수 있는 다양한 방법을 제공하는 이유는 명확하다. 개발자는 새로운 제품을 만들고 테스트하고 다듬어 나갈 수 있다. 개발자가 투자하는 시간 외의 다른 비용은 없다. 코드의 규모가 커지고 충분한 수익을 창출하기 시작하면, 이 개발자는 유료 고객으로 발전할 수 있다. 코드가 그렇게 성장하지 못하고 개발자가 유료 고객으로 전환하지 않는다 해도 최소한 개발자가 그 툴에 익숙해진 상태가 되므로 다음 프로젝트에서도 AWS를 선택할 가능성이 높아진다.

무료 계층은 돈이 궁한 학생들만 사용하는 것이 아니다. 회사에서 예산 요청서를 제출할 경우, 아무리 작은 금액이라 해도 수많은 질문과 회의에서 그 필요성을 설명해야 하는 피곤한 상황을 겪게 될 수 있다. 영리한 개발자들은 무료 머신에서 자신의 계획을 테스트한다. 실제로 가동하는 프로토타입을 제시하는 편이 파워포인트 슬라이드와 모형보다 훨씬 더 설득력있기 때문이다. 

아마존은 세 가지 종류의 무료 서비스를 제공한다. 하나는 새 서비스를 약 한 달 정도 시험해볼 수 있는 단기 샘플로, 새로운 제품을 탐색해보는 용도다. 두 번째는 AWS 계정에 가입한 신규 개발자를 환영하기 위한 후한 서비스로, 새 계정을 만들면 1년 동안은 비용 걱정 없이 사용할 수 있다. 

가장 아량이 큰 서비스는 계속 무료로 유지되는 “상시 무료” 상품이다. 일부 개발자는 이 무료 계층에 최대한 오래 머무는 데 초점을 두고 제품을 구축한다. 개발자에게는 일종의 게임이다. 처음에는 개발 리소스가 그다지 비싸지 않으므로 절약하는 비용도 크지는 않다. 그러나 이렇게 비용에 초점을 맞추고 개발하다 보면 최소한의 AWS 리소스만 사용하도록 간결하게 설계된 좋은 애플리케이션이 만들어진다. 나중에 규모가 커지더라도 청구 금액의 상승 속도를 억제할 수 있다.

AWS 스택을 활용하면서 최대한 무료 서비스를 활용해 비용을 최소화할 수 있는 10가지 방법을 소개한다.
 

1. 아껴쓰기

무료 계층의 AWS 서비스는 대부분 제한적이며 보통 월 단위로 실행된다. 일부 요소는 상당히 관대한데, 예를 들어 AWS 람다에는 100만 회의 함수 호출이 부여된다. 즐거운 마음으로 100만 개를 다 소진한 다음에는 가장 중요한 작업에 이러한 함수 호출 사용 예산을 책정하면 된다. 후하다고 해도 한도는 한도다. 주의하지 않으면 100만 개도 금방이다. 
 

2. 정적으로

무료 계층의 계산 옵션은 무척 제한적이므로 서버 측 계산을 최대한 줄여야 한다. 지킬(Jekyl), 개츠비(Gatsby)와 같은 정적 사이트는 동적 웹사이트의 데이터를 정적 웹 서버에 저장되는 HTML, 자바스크립트, CSS 파일로 바꿔준다. 아마존의 클라우드프론트(CloudFront)와 같은 CDN으로 옮길 수도 있고, 아마존 S3에서 바로 제공할 수도 있고, 그냥 사무실 어딘가에 있는 다른 서버의 구석에 저장해둘 수도 있다. 핵심은 웹 페이지를 동적으로 생성하는 계산 리소스를 절약해서 무료 계층 안에 머무는 것이다.
 

3. 서버리스로

AWS 람다는 1년이 지난 뒤에도 무료로 유지되는 유일한 옵션이다. 또한 수천, 수백만 또는 수십억 개의 요청을 처리하도록 매끄럽게 확장이 가능한 서비스를 위한 최상의 옵션이라고도 할 수 있다. 처음부터 람다를 선택하면 향후 애플리케이션의 성공에 미리 대비할 수 있다.
 

4. NoSQL로

아마존은 20GB의 저장 공간을 상시 무료로 제공하면서 다이나모DB(DynamoDB)를 사용하도록 권장한다. 다이나모DB는 관계형 데이터베이스 애호가들이 오래 전에 채택한 고급 인덱싱이나 정규화 옵션은 제공하지 않지만, NoSQL은 진화하는 프로토타입과 큰 변화가 잦은 신생 기업에 특히 후한, 여전히 지능적이고 유연한 아키텍처 선택안이다.
 

5. 여러 AJAX 호출을 결합

인터랙티브 사이트를 만들어야 하는 경우가 있다. 이때 최선의 방법은 웹 서버에 대한 호출을 가능한 최소한의 트랜잭션으로 묶는 것이다. 예를 들어 아마존 API 게이트웨이(Amazon API Gateway) 무료 계층에는 100만 회의 API 호출과 100만 회의 HTTP 호출이 포함된다. 모든 데이터를 하나의 호출로 묶으면 충실하게 즉시즉시 호출하는 방식에 비해 더 오래 한도 내에서 머물 수 있다. 가장 간단한 방법은 문서나 사용자를 위한 양식 데이터의 저장을 줄이는 것이다. 물론 이렇게 하면 서비스의 견고함과 충돌 내성이 약간 낮아지지만 무료로 사용하는 대가라고 생각하면 된다.
 

6. 클라이언트에 힘 부여

쿠키, 그리고 웹 스토리지 API 등 쿠키에 비해 덜 알려진 그 사촌격 요소들은 보통 기업이 사람들을 추적하는 데 사용되는 것으로 잘 알려져 있지만, 역으로 사용자에게 로컬 데이터 저장을 통해 프라이버시를 지킬 수 있는 기회도 부여한다. 또한 클라이언트 데이터를 클라이언트 자체 머신에 저장하는 데 따르는 비용 부담을 덜어준다는 면에서 무료 계층 웹 애플리케이션을 만드는 데도 더 유리하다. 사용자의 머신이 데이터를 저장하므로 개발자는 저장할 필요가 없다!

프라이버시는 강화되고 중앙의 처리 비용은 줄어든다. 전화기 분실, 로컬 디스크, 고장을 비롯해 그 외의 수많은 장애만 아니라면 완벽한 솔루션이 될 것이다. 따라서 이 방법은 업무 핵심 정보가 아닌 가벼운 일반 데이터에 사용하는 편이 좋다.
 

7. 불필요한 장식 피하기

어떤 웹사이트에는 자동 완성과 같이 현란한 기능이 있다. 재미있고 관심을 끌 수 있겠지만, 이런 각각의 기능에는 일반적으로 클라우드에 대한 또 다른 요청이 필요하고, 이것은 곧 한도를 갉아먹는 요소가 된다. 불필요하게 움직이는 부분이 없도록 하는 것은 컴퓨팅 리소스를 아끼는 가장 간편한 방법이다.
 

8. 데이터베이스 운영

마이SQL, 포스트그레SQL과 같이 아마존이 관리하는 관계형 데이터베이스 서비스는 앱의 정보를 저장하기 위한 데이터베이스를 가동해 유지하는 좋은 툴이지만, 무료 계층은 둘 중 하나만 제공하고 기한도 최초 12개월로 한정된다. 마찬가지로 첫 12개월 동안 제공되는 무료 EC2 인스턴스 중 하나에서 자체 데이터베이스를 실행하지 못할 이유가 없다. 물론 직접 설치하고 구성해야 하지만 이렇게 하면 데이터베이스 선택 옵션을 두 배로 늘릴 수 있다.
 

9. 로그에 주의

AWS의 모든 무료 스토리지에는 한도가 적용된다. 유능한 개발자는 문제를 디버깅하고 장애를 포착하기 위해 유용한 로그 파일을 생성하지만, 대부분 로그 파일은 사용되는 일 없이 방치된다. 로그를 자주 비워주면 스토리지 한도를 지키기가 한결 더 수월하다. 성향에 따라 그냥 지우거나 데스크톱 디스크에 다운로드해도 된다.
 

10. 클라우드 이외의 옵션 사용

자신의 책상 위에서 자체 서버를 돌리는 것을 무료 계층을 최대한 활용하는 방법으로 소개하는 것은 엄밀히 말해 썩 적합하진 않다. 그러나 AWS 서비스 이외의 요소를 잘 골라서 사용하면 클라우드에서 할 수 있는 일을 훨씬 더 늘릴 수 있다. 예를 들어 데이터베이스 백업은 사용 중인 데스크톱으로 가져올 수 있다. 어차피 데스크톱에는 빈 공간이 몇 테라바이트씩 놀고 있는 경우가 많다. 또한 프로젝트를 클라우드 외부의 어딘가에 백업해 두는 것이 바람직하기도 하다. 클라우드의 즉각적인 응답과 지속적인 업타임이 필요 없는 모든 서비스 또는 데이터가 이전 대상이다. 
 

11. 제한을 인지할 것

무료 계층은 AWS를 탐색하는 좋은 방법이고, 모든 불필요한 기능을 제거해서 청구 금액을 0원으로 만드는 과정 자체가 재미있기도 하다. 그러나 결국 AWS도 기업이고 무료 계층은 자선 서비스가 아니라 잘 만들어진 마케팅 툴일 뿐이다. 새 이메일 주소를 사용해 새 계정을 만들어 12개월 무료 기간을 반복해 이어가는 사람들도 있다. 이 방법은 휘발성 프로젝트에는 통할 수 있지만, 다수의 사용자를 확보한 프로젝트에는 적합하지 않다. 계정을 바꿀 경우 다 날아가기 때문이다.

자신의 창작물이 사용자를 모으게 된다면 요금을 낼 방법을 찾아야 할 시점이다. 좋은 소식은 무료 계층을 사용하면서 습득한 모든 지식을 활용해 청구 비용을 계속해서 훨씬 더 낮출 수 있다는 것이다. 예를 들어 API 게이트웨이의 비용은 호출 100만 회당 1달러에 불과하다. 무료 계층을 성공적으로 운영해왔다면, 이후에도 월 몇 달러 수준으로 유지할 수 있다.

물론 이런 이야기는 서비스가 엄청나게 인기를 끌어 크게 성공하게 된다면 다 부질없다. AWS 청구서는 걱정거리 축에 끼지도 못할 것이다. editor@itworld.co.kr


2020.10.21

AWS 무료 서비스 계층을 최대한 활용하는 방법

Peter Wayner | InfoWorld
무료는 강력한 유인 요소다. 필자는 한 지방 대학에서 웹 프레임워크를 강의할 당시 과제를 내면서 모든 실험을 아마존 웹 서비스의 무료 서비스를 활용해 신속하게 수행할 수 있도록 했다. 학생들은 돈을 한 푼도 쓰지 않고 계정을 만들고 확장해서 10여 대의 서버를 사용할 수 있었다.
 
ⓒ Getty Images Bank

AWS를 비롯한 클라우드 서비스 업체가 각자의 제품을 경험할 수 있는 다양한 방법을 제공하는 이유는 명확하다. 개발자는 새로운 제품을 만들고 테스트하고 다듬어 나갈 수 있다. 개발자가 투자하는 시간 외의 다른 비용은 없다. 코드의 규모가 커지고 충분한 수익을 창출하기 시작하면, 이 개발자는 유료 고객으로 발전할 수 있다. 코드가 그렇게 성장하지 못하고 개발자가 유료 고객으로 전환하지 않는다 해도 최소한 개발자가 그 툴에 익숙해진 상태가 되므로 다음 프로젝트에서도 AWS를 선택할 가능성이 높아진다.

무료 계층은 돈이 궁한 학생들만 사용하는 것이 아니다. 회사에서 예산 요청서를 제출할 경우, 아무리 작은 금액이라 해도 수많은 질문과 회의에서 그 필요성을 설명해야 하는 피곤한 상황을 겪게 될 수 있다. 영리한 개발자들은 무료 머신에서 자신의 계획을 테스트한다. 실제로 가동하는 프로토타입을 제시하는 편이 파워포인트 슬라이드와 모형보다 훨씬 더 설득력있기 때문이다. 

아마존은 세 가지 종류의 무료 서비스를 제공한다. 하나는 새 서비스를 약 한 달 정도 시험해볼 수 있는 단기 샘플로, 새로운 제품을 탐색해보는 용도다. 두 번째는 AWS 계정에 가입한 신규 개발자를 환영하기 위한 후한 서비스로, 새 계정을 만들면 1년 동안은 비용 걱정 없이 사용할 수 있다. 

가장 아량이 큰 서비스는 계속 무료로 유지되는 “상시 무료” 상품이다. 일부 개발자는 이 무료 계층에 최대한 오래 머무는 데 초점을 두고 제품을 구축한다. 개발자에게는 일종의 게임이다. 처음에는 개발 리소스가 그다지 비싸지 않으므로 절약하는 비용도 크지는 않다. 그러나 이렇게 비용에 초점을 맞추고 개발하다 보면 최소한의 AWS 리소스만 사용하도록 간결하게 설계된 좋은 애플리케이션이 만들어진다. 나중에 규모가 커지더라도 청구 금액의 상승 속도를 억제할 수 있다.

AWS 스택을 활용하면서 최대한 무료 서비스를 활용해 비용을 최소화할 수 있는 10가지 방법을 소개한다.
 

1. 아껴쓰기

무료 계층의 AWS 서비스는 대부분 제한적이며 보통 월 단위로 실행된다. 일부 요소는 상당히 관대한데, 예를 들어 AWS 람다에는 100만 회의 함수 호출이 부여된다. 즐거운 마음으로 100만 개를 다 소진한 다음에는 가장 중요한 작업에 이러한 함수 호출 사용 예산을 책정하면 된다. 후하다고 해도 한도는 한도다. 주의하지 않으면 100만 개도 금방이다. 
 

2. 정적으로

무료 계층의 계산 옵션은 무척 제한적이므로 서버 측 계산을 최대한 줄여야 한다. 지킬(Jekyl), 개츠비(Gatsby)와 같은 정적 사이트는 동적 웹사이트의 데이터를 정적 웹 서버에 저장되는 HTML, 자바스크립트, CSS 파일로 바꿔준다. 아마존의 클라우드프론트(CloudFront)와 같은 CDN으로 옮길 수도 있고, 아마존 S3에서 바로 제공할 수도 있고, 그냥 사무실 어딘가에 있는 다른 서버의 구석에 저장해둘 수도 있다. 핵심은 웹 페이지를 동적으로 생성하는 계산 리소스를 절약해서 무료 계층 안에 머무는 것이다.
 

3. 서버리스로

AWS 람다는 1년이 지난 뒤에도 무료로 유지되는 유일한 옵션이다. 또한 수천, 수백만 또는 수십억 개의 요청을 처리하도록 매끄럽게 확장이 가능한 서비스를 위한 최상의 옵션이라고도 할 수 있다. 처음부터 람다를 선택하면 향후 애플리케이션의 성공에 미리 대비할 수 있다.
 

4. NoSQL로

아마존은 20GB의 저장 공간을 상시 무료로 제공하면서 다이나모DB(DynamoDB)를 사용하도록 권장한다. 다이나모DB는 관계형 데이터베이스 애호가들이 오래 전에 채택한 고급 인덱싱이나 정규화 옵션은 제공하지 않지만, NoSQL은 진화하는 프로토타입과 큰 변화가 잦은 신생 기업에 특히 후한, 여전히 지능적이고 유연한 아키텍처 선택안이다.
 

5. 여러 AJAX 호출을 결합

인터랙티브 사이트를 만들어야 하는 경우가 있다. 이때 최선의 방법은 웹 서버에 대한 호출을 가능한 최소한의 트랜잭션으로 묶는 것이다. 예를 들어 아마존 API 게이트웨이(Amazon API Gateway) 무료 계층에는 100만 회의 API 호출과 100만 회의 HTTP 호출이 포함된다. 모든 데이터를 하나의 호출로 묶으면 충실하게 즉시즉시 호출하는 방식에 비해 더 오래 한도 내에서 머물 수 있다. 가장 간단한 방법은 문서나 사용자를 위한 양식 데이터의 저장을 줄이는 것이다. 물론 이렇게 하면 서비스의 견고함과 충돌 내성이 약간 낮아지지만 무료로 사용하는 대가라고 생각하면 된다.
 

6. 클라이언트에 힘 부여

쿠키, 그리고 웹 스토리지 API 등 쿠키에 비해 덜 알려진 그 사촌격 요소들은 보통 기업이 사람들을 추적하는 데 사용되는 것으로 잘 알려져 있지만, 역으로 사용자에게 로컬 데이터 저장을 통해 프라이버시를 지킬 수 있는 기회도 부여한다. 또한 클라이언트 데이터를 클라이언트 자체 머신에 저장하는 데 따르는 비용 부담을 덜어준다는 면에서 무료 계층 웹 애플리케이션을 만드는 데도 더 유리하다. 사용자의 머신이 데이터를 저장하므로 개발자는 저장할 필요가 없다!

프라이버시는 강화되고 중앙의 처리 비용은 줄어든다. 전화기 분실, 로컬 디스크, 고장을 비롯해 그 외의 수많은 장애만 아니라면 완벽한 솔루션이 될 것이다. 따라서 이 방법은 업무 핵심 정보가 아닌 가벼운 일반 데이터에 사용하는 편이 좋다.
 

7. 불필요한 장식 피하기

어떤 웹사이트에는 자동 완성과 같이 현란한 기능이 있다. 재미있고 관심을 끌 수 있겠지만, 이런 각각의 기능에는 일반적으로 클라우드에 대한 또 다른 요청이 필요하고, 이것은 곧 한도를 갉아먹는 요소가 된다. 불필요하게 움직이는 부분이 없도록 하는 것은 컴퓨팅 리소스를 아끼는 가장 간편한 방법이다.
 

8. 데이터베이스 운영

마이SQL, 포스트그레SQL과 같이 아마존이 관리하는 관계형 데이터베이스 서비스는 앱의 정보를 저장하기 위한 데이터베이스를 가동해 유지하는 좋은 툴이지만, 무료 계층은 둘 중 하나만 제공하고 기한도 최초 12개월로 한정된다. 마찬가지로 첫 12개월 동안 제공되는 무료 EC2 인스턴스 중 하나에서 자체 데이터베이스를 실행하지 못할 이유가 없다. 물론 직접 설치하고 구성해야 하지만 이렇게 하면 데이터베이스 선택 옵션을 두 배로 늘릴 수 있다.
 

9. 로그에 주의

AWS의 모든 무료 스토리지에는 한도가 적용된다. 유능한 개발자는 문제를 디버깅하고 장애를 포착하기 위해 유용한 로그 파일을 생성하지만, 대부분 로그 파일은 사용되는 일 없이 방치된다. 로그를 자주 비워주면 스토리지 한도를 지키기가 한결 더 수월하다. 성향에 따라 그냥 지우거나 데스크톱 디스크에 다운로드해도 된다.
 

10. 클라우드 이외의 옵션 사용

자신의 책상 위에서 자체 서버를 돌리는 것을 무료 계층을 최대한 활용하는 방법으로 소개하는 것은 엄밀히 말해 썩 적합하진 않다. 그러나 AWS 서비스 이외의 요소를 잘 골라서 사용하면 클라우드에서 할 수 있는 일을 훨씬 더 늘릴 수 있다. 예를 들어 데이터베이스 백업은 사용 중인 데스크톱으로 가져올 수 있다. 어차피 데스크톱에는 빈 공간이 몇 테라바이트씩 놀고 있는 경우가 많다. 또한 프로젝트를 클라우드 외부의 어딘가에 백업해 두는 것이 바람직하기도 하다. 클라우드의 즉각적인 응답과 지속적인 업타임이 필요 없는 모든 서비스 또는 데이터가 이전 대상이다. 
 

11. 제한을 인지할 것

무료 계층은 AWS를 탐색하는 좋은 방법이고, 모든 불필요한 기능을 제거해서 청구 금액을 0원으로 만드는 과정 자체가 재미있기도 하다. 그러나 결국 AWS도 기업이고 무료 계층은 자선 서비스가 아니라 잘 만들어진 마케팅 툴일 뿐이다. 새 이메일 주소를 사용해 새 계정을 만들어 12개월 무료 기간을 반복해 이어가는 사람들도 있다. 이 방법은 휘발성 프로젝트에는 통할 수 있지만, 다수의 사용자를 확보한 프로젝트에는 적합하지 않다. 계정을 바꿀 경우 다 날아가기 때문이다.

자신의 창작물이 사용자를 모으게 된다면 요금을 낼 방법을 찾아야 할 시점이다. 좋은 소식은 무료 계층을 사용하면서 습득한 모든 지식을 활용해 청구 비용을 계속해서 훨씬 더 낮출 수 있다는 것이다. 예를 들어 API 게이트웨이의 비용은 호출 100만 회당 1달러에 불과하다. 무료 계층을 성공적으로 운영해왔다면, 이후에도 월 몇 달러 수준으로 유지할 수 있다.

물론 이런 이야기는 서비스가 엄청나게 인기를 끌어 크게 성공하게 된다면 다 부질없다. AWS 청구서는 걱정거리 축에 끼지도 못할 것이다. editor@itworld.co.kr


X