5. PRESENTED BY
Serverless Software Development
platform for Ruby & Crystal
Components:
• faastRuby Local - A local emulator
to develop & test Ruby and Crystal
Serverless Apps
• faastRuby FaaS - Cloud or
Self-Hosted FaaS solution
6. PRESENTED BY
Develop
• Develop and test on your local
machine from your favorite code
editor
• Optionally synchronize your local
code changes to cloud-based
staging environments instantly
Run
• When you invoke your functions
via an HTTP request, the code is
executed in a self-contained,
isolated sandbox inside of an
always-warm Runner
Workflow
Deploy
• Deploy your functions to a workspace
in the cloud.
• Workspaces are groups of functions
that can be used to mimic
environments and compose a set of
routes for a distributed app built with
functions.
8. PRESENTED BY
* Redis and storage scalability, as well as overall
security, are out of the scope of this presentation.
From inception to first release
Requirements
● Fast
● Scalable*
● Secure*
● Triggered via HTTP
● Multiple Environments
13. PRESENTED BY
Function Metadata
Fields
● ID
2938
● Name
my_function
● Runtime
ruby:2.5
● Disk path
[workspace_path]/my_function
Key
● w:[workspace_name]:my_function
20. PRESENTED BY
Request / Response
{
"function_metadata": (disk path, workspace_name, etc),
"event": (body, query, headers, etc),
"response_queue": "042b42aa-f274-4ba1-a2b8-ec883697ff51"
}
HTTP Server pushes job to input queue and listens on volatile queue with name
042b42aa-f274-4ba1-a2b8-ec883697ff51
21. PRESENTED BY
● We used Redis as main database for the platform
● We used the Reliable Queue Pattern to distribute the execution
between Runners
Recap