最近注目のキーワードがサーバレスアーキテクチャです。AWS LambdaやAzure Functionなどを使って決して多機能ではない、シンプルなシステムを構築します。それらを組み合わせて一つの大きなシステムとしていく開発技術になります。 今回はそんなサーバレスアーキテクチャによる開発を手軽に体感できるServerless Traveling Ruby Starterkitを紹介します。利用している言語はRubyです。

Serverless Traveling Ruby Starterkitの使い方

コードの例です。環境変数を出力したり、ライブラリを利用しています。

$ cat app/app.rb 
#!/usr/bin/env ruby
puts "event: #{ARGV[0]}"
puts "context: #{ARGV[1]}"

puts "To: Lambda,"
puts "From: Ruby!"

require 'nokogiri'
puts Nokogiri

実行結果です。標準出力に返ってきています。HTTPも出力されています。

$ sls run -f hello
Starting process: ./wrapper.sh
stdout:
event: {
  "key3": "value3",
  "key2": "value2",
  "key1": "value1"
}
context: {
  "awsRequestId": "id",
  "invokeid": "id",
  "logGroupName": "/aws/lambda/hello",
  "logStreamName": "2015/09/22/[HEAD]13370a84ca4ed8b77c427af260",
  "functionVersion": "HEAD",
  "isDefaultFunctionVersion": true,
  "functionName": "hello",
  "memoryLimitInMB": "1024"
}
To: Lambda,
From: Ruby!
Nokogiri

Process completed: ./wrapper.sh
Serverless: -----------------
Serverless: Success! - This Response Was Returned:
Serverless: {
    "statusCode": 200,
    "body": "{\"message\":\"Go Serverless v1.0! Your function executed successfully!\",\"input\":{\"key3\":\"value3\",\"key2\":\"value2\",\"key1\":\"value1\"}}"
}

Serverless Traveling Ruby StarterkitをベースにすればAWS Lambda上でRubyを使ってマイクロサービスを開発するのが簡単になるでしょう。コードを書くのは簡単なのですが、Lambda上にセットアップしたり、コードを更新したりするのは意外と面倒なので、Serverless Traveling Ruby Starterkitのようなツールを使ってその仕組みに沿って進めるのがオススメです。 Serverless Traveling Ruby Starterkitはnode/JavaScript製のオープンソース・ソフトウェア(MIT License)です。

hoshinotsuyoshi/serverless-traveling-ruby-starterkit: ruby on lambda powered by traveling-ruby and serverless framework