본문 바로가기
Ruby on Jets

ruby로 서버리스 개발하기 aws lambda - ruby on jets 1. 설치하기

by 혜리루 2020. 2. 3.

1.서론

서버리스가 뭔지 모르는 개발자는 있어도 한번도 안들어본 개발자는 없을 것입니다.

저도 지금까지 서버리스 서버리스 듣기만 했지 제대로 사용해 본적이 없어서 사실 별로 감이 없었는데요, 이번에 회사에서 푸시 시스템을 서버리스로 개발하면서 처음으로 사용을 해봤습니다. 저희 회사는 기본적으로 api를 ruby로 개발중이라 ruby on jets를 serverless 프레임워크로 선택했습니다. jets는 rails와 유사한 점이 굉장히 많아서 jets를 잘 몰라도 개발하기가 어렵지는 않았지만 복습도 할겸 내용을 정리해가며 ruby on jets로 간단한 토이프로젝트를 개발하는 포스팅을 해보려고 합니다.

 

2. 서버리스란

서버리스는 클라우드 컴퓨팅의 일종으로 단어 뜻 그대로 서버를 사용하지 않는 컴퓨팅 모델을 말합니다. 물론 물리적인 서버는 있지만 서버 관리는 개발자가 아니라 클라우드 회사에서 관리해주기 때문에 개발자는 대부분의 인프라는 무시하고 코드 개발에만 집중할 수 있습니다! 또 전통적인 방법처럼 서버를 상시로 돌리는게 아니라 실제로 컴퓨팅한 시간에 대해서만 비용을 지불하기 때문에 잘 이용한다면 경제적으로 운영이 가능합니다.

 

3.lambda란

lambda는 aws에서 제공하는 서버리스 플랫폼입니다. aws 공식 홈페이지를 참조하자면  "AWS Lambda는 필요 시에만 코드를 실행하며, 하루에 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다. 사용한 컴퓨팅 시간에 대해서만 요금을 지불하면 되고 코드가 실행되지 않을 때는 요금이 부과되지 않습니다. AWS Lambda에서는 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있습니다. .. " 등등 여러가지 장점이 나와있는데요, 저희 푸시 시스템같은 경우에는 완전관리형 시스템을 지향했기 때문에 모든 요소를 aws의 서비스를 사용했습니다. lambda는 SQS나 SNS, S3, cloud watch등의 서비스와 함께 활용하기가 아주 쉽고 간단했습니다. google이나 azure의 serverless는 사용해보지 않아서 비교하기는 어렵지만 이렇게 aws의 다른 서비스를 함께 이용한다면 lambda를 쓰는 편이 효율적일 것 같습니다. 이 내용은 다른 글에서 자세히 정리해보도록 하겠습니다.

 

4. Jets 란

jets는 ruby진영의 서버리스 프레임워크입니다. aws lambda에 배포가 가능하며 다른 aws의 서비스나 리소스들을 이용해 함수 작성이 가능합니다. rails와 유사한 점이 많아서 기존의 rails 개발자라면 무리없이 개발이 가능합니다.

 

5. (드디어) Jets 설치하기

ruby는 설치되어있다고 가정하겠습니다.

그렇지않다면 rbenv나 rvm등 루비 버전관리 툴을 사용해서 ruby를 설치해주세요.

 

db를 사용한다면 본인이 사용할 db가 local에 설치되어 있는지 확인해주세요.

 

그리고나서 아래 요소들을 하나씩 설치해 줍니다.

1) nvm(node js를 설치하기 위해 필요함)

> curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

2) nodejs(yarn을 사용하기 위해 필요함)

> nvm install 8.10.0 # please check AWS Lambda for the latest node runtime
> nvm alias default node # sets the default version

3) yarn (webpacker를 사용하기 위해 필요함)

> npm install -g yarn

 

설치할 게 참 많네요.. 그리고나서 드디어 jets를 설치합니다.

❯ gem install jets
❯ jets new jets_tutorial

jets gem 설치 후  jets new 커맨드로 새 프로젝트를 만들어 줍니다.

 

jets new 커맨드는 디폴트로 mysql2 gem을 설치합니다. mysql 이외의 db를 사용하고 싶다면 --database 옵션을 합께 입력합니다.

> jets new --database=postgresql jets_tutorial 

 

만약 db가 필요 없는 프로젝트라면 --no-database 옵션을 입력합니다.

jets new --no-database jest_tutorial

 

끝입니다! 얏호 너무 쉽네요

 

Congrats 🎉 You have successfully created a Jets project.

Cd into the project directory:
  cd jets_tutorial

To start a server and test locally:
  jets server # localhost:8888 should have the Jets welcome page

이런 메시지가 뜨면 성공입니다. 

기본 port번호는 8888입니다. jets server 커맨드로 jets가 제공하는 테스트용 서버를 실행시킬 수 있습니다.

❯ jets server

server 실행을 성공하면 심플한 성공 화면이 뜹니다.

 

출처:

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/welcome.html

https://rubyonjets.com/docs/

 

 

댓글