Node.js를 위한 PaaS, awsbox: 최근 업데이트 사항

이 글은 Andrew Chilton과Robert Nyman의 awsbox, a PaaS layer for Node.js: An Update on Latest Developments의 한국어 번역본입니다.

 

이번 글은 모질라 Hacks 블로그에서 awsbox에 대해 적는 두번째 글입니다. 첫번째는 Node.js Holiday Season 연재글 중 하나였던 a quick introduction to awsbox에서 소개해드린적이 있습니다. 이번 글에서는 최근에 awsbox에 새로 추가된 몇가지 특징들에 대해 알려드리려고 합니다.

간단히 되짚어보자면, awsbox는 Amazon EC2 의 상단에 구축되는 Node.js 어플리케이션을 위한 가장 단순한 PaaS 계층입니다. 이 도구는 DIY 솔루션으로 여러분은 이 도구를 가지고 인스턴스를 생성하고 DNS 설정, 어플리케이션 서버 구동, 새로운 코드 삽입 기능과 더불어 금방이라도 인스턴스를 제거할 수도 있습니다.

awsbox가 처음 만들어진 이후로 사용률이 꾸준히 늘어서 지금은 매달 3000건 이상의 npm 다운로드가 이루어지고 있습니다. 이 수치는 초기의 기대치를 훨씬 뛰어넘어서 아마도 저희가 ‘서비스 인프라’와 ‘플랫폼’ 서비스간의 연결고리를 메웠다고 생각합니다.

awsbox의 목표

awsbox의 목표는 사용하기 쉬우면서도 여러분만의 PaaS 솔루션을 구축하기 위해서 Amazon API의 상단의 기능들에 대해 조작이 가능하도록 만드는 것입니다. 하지만 여러분은 PaaS 서비스가 제공해주는 작업보다 더 많은 것들을 할 수 있습니다 – 여러분이 원하신다면.

이 목표를 마음에 품고 저희는 최근에 많은 기능들을 추가했습니다. 이 기능들로 여러분은 더 많은 작업을 다룰 수 있을 것입니다. 일반적으로 저희는 ‘최종 디플로이’보다 개발 과정을 빠르게 하는 데 도움을 줄 수 있도록 빠른 개발 환경 구축을 목표로 하고 있습니다(하지만 이것이 awsbox가 견고하지 못하다는 것을 의미하는 것은 아닙니다).

새로운 특징들

여러분의 어플리케이션에 리버스 프록시로 Nginx를 사용할 수 있습니다. 여러분의 웹서버가 박스에서 관리권한이 없는 사용자에 의해 돌아가고 있다면 우리는 80 또는 443 포트로 받아서 여러분의 어플리케이션에 프록시로 요청할 방법이 필요합니다. 이 작업은 과거 http-proxy(npm에 있는)를 통해 관리자 권한으로 해결했지만 저희는 Nginx로 현재와 더불어 앞으로 더욱더 awsbox를 보완하기로 결정했습니다. config 파일을 Nginx에 포함시킴으로써 우리는 다중 웹서버나 다중 어플리케이션, 다중 서브도메인으로에 대한 요청같은 더 많은 기능들을 추가할 수 있을 것입니다.

또 다른 새로운 특징은 Route53을 사용하는 여러분의 인스턴스에  대해 자동으로 서브도메인을 지정하는 기능입니다. 분리된 서비스가 아니라 또다른 AWS 서비스로 한데 모으면서 우리는 오직 여러분의 환경에서 자격에 대해 한 세트만 관리하면 됩니다. 서브도메인을 생성하고 삭제하는 것은 여러분이 awsbox를 사용하여 인스턴스를 생성할때면 언제든지 자동으로 동작하며 일련의 작업들을 명확하게 도와줄 것입니다.

저희 팀중 몇몇은 북아메리카 뿐만 아니라 유럽에서 작업에 참여하고 있으며 몇몇은 세계 반대편에서 참여하고 있습니다. 우리는 세상의 반을 돌아오는 요청들을 우리의 인스턴스로 받는 대신에 인스턴스를 우리에게 가져오기로 결심했습니다. 오직 ‘us-east-1’ 지역에서만 가능했던 우리의 기본 AMI가 이제는 모든 AWS 지역에서도 이용 가능하며 유럽 파견단을 위한 ‘eu-west-1’과 ‘ap-southeast-2’도 마찬가지로 포함합니다. 시드니에서도 인스턴스를 생성할 수 있다는 사실에 저는 매우 기쁩니다. 🙂

정말 많은 사람들이 지속적으로 인스턴스들을 생성하고 재사용하고 제거하고 있는 것을 보면서 어떤 기준으로든 인스턴스를 검색할 수 있는 것이 좋겠다고 저희는 생각했습니다. 모든 가상 머신을 정렬할 수도 있고 IP 주소, AMI, 인스턴스 Id, 이름, 태그 등 12가지의 기준으로 인스턴스들을 검색할 수 있습니다. 이 기능으로 여러분이 원하는 인스턴스를 찾는 일이 엄청나게 쉬워질 것입니다.

그리고 마지막으로 … 자신이 원하는 만큼 이상의 돈을 지불하는 것을 좋아할 사람은 없을 것입니다. 그래서 저희는 어느 인스턴스를 누가 생성했는지 확인할 수 있는 기능을 추가했습니다(그래서 우리는 그 인스턴스를 종료해도 되는지 물어볼 수 있습니다!). AWS_EMAIL 환경 변수는 인스턴스 생성시 태그로 추가되며 우리는 청구 요금을 줄이고 싶을 때 누구에게 물어봐야하는지 금방 알 수 있습니다.

새로운 명령어

이러한 새로운 구조적인 변화를 반영하기 위해 저희는 여러분이 인스턴스와 DNS를 관리할 수 있또록 몇가지 추가적인 명령어를 만들었습니다. 여러 지역을 지원하는 기능에 대한 몇가지 새로운 명령어 들입니다:

# lists all AWS regions for EC2
$ awsbox.js regions

# lists all regions and their availability zones
$ awsbox.js zones

또한 우리는 레코드가 어느 IP 주소를 가리키고 있는지 검색할 수 있고 모든 도메인과 서브도메인을 정렬할 수도 있습니다:

# lists all domains in Route53
$ awsbox.js listdomains

# lists all resource records in this zone
$ awsbox.js listhosts example.com

# find which subdomains/domains point to an ip address
$ awsbox.js findbyip 1.2.3.4

# delete this subdomain
$ awsbox.js deleterecord sub.example.com

AMI 관리를 도울 수 있는 새로운 명령어 들입니다. 여러분은 현재 가지고 있는 인스턴스로부터 AMI를 생성하거나 말끔히 정렬할 수도 있고 AMI를 생성해서 다른 모든 이용 가능한 지역으로 복사할 수 있습니다:

# create an ami and copy to all regions
$ awsbox.js createami ami-adac0de1

그리고 마지막으로 어느 인스턴스를 누가 가지고 있는지 설정하는 몇가지 명령어들입니다:

# search instance metadata for some text
$ awsbox.js search 1.2.3.4
$ awsbox.js search ami-adac0de1
$ awsbox.js search persona

# show meta info related to an instance
$ awsbox.js describe i-1cec001

# claim an instance as your own
$ awsbox.js claim i-b10cfa11

# list all unclaimed instances
$ awsbox.js unclaimed

이미 존재하는 명령어와 함께 모두 총 21개의 여러분의 개발 관리를 도울 수 있는 명령어들입니다.

나중에는

최근 새로운 기능들을 가다듬는 많은 사람들과 함께 awsbox 개발에 있어 작은 르네상스 시기였습니다. awsbox는 보다 빠른 속도로 인스턴스들을 세울 수도 있고 형식적으로든 비형식적으로든 검색도 가능하며 인스턴스를 생성했을 때만큼 빠르게(더 빠르지 않는한) 제거하는 일도 가능하기 때문에 페르소나 팀에게 awsbox는 매우 가치있는 도구입니다! 그리고 요즘에는 요청을 통해 서버를 획득하는 일은 IaaS로서 보통 당연한 일이기 때문에 괜히 죄의식을 느낄 필요도 없습니다.

우리는 또한 AWS 자체 내에서 더욱 많은 서비스를 사용하면서 모였습니다. 백엔드 AWS API 라이브러리를 AwsSum로 옮김으로써 우리는 이제 전보다 AWS 서비스에 대해 더 많은 것들을 이야기 나눌 수 있으며 또한 ‘개발 디플로이’ 작업을 더욱 빠르고 더욱 쉽게 만들 수 있습니다.

하지만 저희는 awsbox가 여전히 더 발전할 수 있을거라고 생각합니다. 몇가지 아이디어들이 있지만 저희는 언제나 여러분들의 아이디어나 코드를 환영하고 있습니다. 자유롭게 문서와 이슈들을 둘러보시고 댓글을 달아주세요. 여러분들의 아이디어를 멋지게 실현한 코드를 가지고 계시면 무엇보다 기쁘게 pull request를 리뷰해보겠습니다 – 무엇보다 awsbox는 오픈소스입니다.

작성자: Hoony Chang

Web Programmer

Hoony Chang가 작성한 문서들…


댓글이 없습니다.

댓글 쓰기