Skip to main content

Dukehoff Cloudhopper

Write once, run anywhere. Revisited.

Your functions don't know which cloud they run on. One provider got too expensive? Data has to stay in the EU? The customer wants it on-premise? Change the target in your build, not your code.

Targets: AWS Lambda, Azure Functions, Google Cloud Functions, and a Spring Boot service that runs on any server.

public class HelloFunction {

@Function(name = "hello")
@HttpTrigger(method = "GET", path = "/hello/{name}")
public String handleRequest(@PathParam String name) {
return "hello " + name;
}
}
# Same code, different provider:
mvn clean install -Paws-terraform
mvn clean install -Pazure-terraform
mvn clean install -Pgcp-terraform
mvn clean install -Pspringboot-http # on-premise
Version 1.0.1 is out and on Maven Central. The Quickstart takes you from an empty folder to a deployed function.

Too expensive? Switch.

The provider is a Maven profile. Build for another cloud, deploy, compare the bill. Your functions stay exactly as they are.

No cloud SDK in your code

Functions are plain Java methods with @Function and a trigger. Handler classes, Terraform and API descriptions are generated at compile time, so nothing in your code ties you to one vendor.

EU or on-premise, just another target

Deploy to an EU region of your cloud, or run the Spring Boot target on your own servers. Providers plug in through an SPI, and a European cloud provider is next.

Not every trigger exists on every target yet: the Spring Boot target serves HTTP functions, scheduled functions run on the three clouds. The provider overview lists the differences.

Open source, and the output is yours

Dukehoff Cloudhopper is licensed under the GNU General Public License, version 3, with the Classpath Exception and a Generator Output Exception. Everything it generates for your project, such as handler classes, Terraform and API descriptions, you may use, modify and distribute under terms of your choice.

Read the exceptions

Built by Dukehoff GmbH

Dukehoff Cloudhopper is developed by Dukehoff GmbH near Munich. If you want help moving Java services to serverless, between cloud providers or onto your own servers, talk to us.

Contact Dukehoff