The lowest-cost Serverless platform on the planet Built for Microservices and event-based applications
The real cloud. No Servers. Just Code.
Spotinst Functions utilizes compute from anywhere in the world, from the largest cloud providers to regional bare metal offerings. Functions can be tied to primary data sources, cost savings or both. Spotinst takes care of optimizing deployment and execution.
A fully managed Serverless compute platform that allows running code without thinking about cloud providers. Built to reduce compute & networking costs and application latency by leveraging cloud vendors’ excess compute capacity & network rates.
Spotinst Functions not only lets you avoid dealing with underlying infrastructure but also lets you avoid the pain of managing multiple cloud providers. You can always balance and shift your code to and from any provider at any time.
Getting started is as easy as running a container. No process changes in deployment or languages.
Deploy Your First Function Under 30 Seconds
$ sls create --template-url https://github.com/spotinst/spotinst-functions-examples/tree/master/node-spotinst-api-getGroups
Code Examples
/*
*
* Implement your function here.
* The function will get the request as a parameter with query/body properties:
* var queryparams = event.query;
* var body = event.body;
* var uri = event.uri;
*/
module.exports.main = (event, context, callback) => {
callback(null, {
statusCode: 200,
body: '{"hello":"from NodeJS8.3 function"}',
headers: {"Content-Type": "application/json"}
});
};
# Implement your function here.
# The function will get the event as the first parameter with query/body properties:
# The function should return an Hash
def main(event, context)
queryparams = event["query"]
body = event["body"]
{
:statusCode => 200,
:body => '{"hello":"from Ruby2.4.1 function"}'
}
end
# Implement your function here.
# The function will get the event as the first parameter with query/body properties:
# The function should return a Dictionary
def main(event, context):
queryparams = event.get("query", {})
body = event.get("body", {})
return {
'statusCode': 200,
'body': '{"hello":"from Python2.7 function"}',
'headers': {"Content-Type": "application/json"}
}
import com.google.gson.JsonObject;
import com.spotinst.functions.runtime.Context;
import com.spotinst.functions.runtime.GenericResponse;
import com.spotinst.functions.runtime.RequestHandler;
import java.util.HashMap;
import java.util.Map;
/**
* Please make sure your class implements the "RequestHandler" interface * The return value should be of type "GenericResponse"**/
public class Java8Template implements RequestHandler {
@Override
public GenericResponse handleRequest(JsonObject event, Context context) {
JsonObject query = new JsonObject();
String body = "";
//Your function arguments will be available in args.query/args.body;
if (event.has("query") && event.get("query").isJsonObject()) {
query = event.getAsJsonObject("query");
}
if (event.has("body") && event.get("body").isJsonPrimitive()) {
body = event.getAsJsonPrimitive("body").getAsString();
}
//Build response object
GenericResponse response = new GenericResponse(200, "{\"hello\":\"from your java8 function\"}");
//Build response headers
Map headers = new HashMap<>();
headers.put("Content-Type", "application/json");
response.setHeaders(headers);
return response;
}
}
Top Features
Improving SLA and High Availability
We don’t depend on a single specific cloud provider as we aim to abstract it for you. Hence, we can always find the best combination of performance, reliability, and resistance to failure.Avoid single vendor lock-in
Getting the cheapest and fastest compute resource across all the major cloud providers.Better compute rates
By leveraging Cloud providers’ excess compute capacity, we can always get a better price per compute unit. We have been doing it for years.Better network rates
By working with multiple cloud providers in multiple locations, we can always get a better network rate (data-transfer out) ranging from $0.08 per GB - $0.009(!) per GB.Any Cloud
Run your code on your desired infrastructure provider. You can always choose only one cloud provider, many or just all of them.Any Geo Location
Once deployed Spotinst Functions exposes function URLs that speak HTTP protocol. Traffic is only served over secure HTTP/2 connections.Advanced Analytics
Spotinst Functions exposes every single thing as a time-series metric. These metrics can be filtered and viewed per individual version of your Function.Vast Runtime Support
Spotinst Functions supports a wide variety of Runtimes: Node (4, 6, & 8.3), Java 8, Python 2.7, Ruby, Go. And very soon – you’ll be able to ship your Container as Function. (Just specify a docker image to bundle a Function)Resources
Getting Started
- Spotinst Github Repository – Examples to get started
- Getting Started – Function Template
- Getting Started – How to Zip Your Function
- Getting Started – Setting Up Your First Function
Documentation and APIs
Try It Now
$ serverless create --template-url https://github.com/spotinst/spotinst-functions-examples/tree/master/node-spotinst-api-getGroups