http4kbox - http4k app deployed in multiple modes
September 18, 2024 ยท View on GitHub
This is a simple Dropbox clone built with http4k which uses S3 as a backing store, implemented in ~50 lines of code (when imports are excluded). It is designed to demo that http4k apps run identically in the following modes:
- As a Kotlin function with SunHttp dev server for tests - see app
- In a deployed local Undertow server + Apache HTTP client - see local
- To Heroku as a cloud-based Helidon server (with Helidon client) deployed through a fully CD pipeline run on GitHubActions - see heroku
- Into a Kubernetes cluster - see k8s
- As a pure Kotlin function deployed in a Serverless environment (AWS Lambda) - see serverless
- As a native Apache server binary running in GraalVM - see native
Apart from the switchable server backen ds and clients, the core app uses the following http4k modules and features:
http4k-core<-- main HTTP libraryhttp4k-config<-- for 12-factor configuration via environmental propertieshttp4k-connect-amazon-s3<-- replaces the Java AWS SDK with a lightweight http4k clienthttp4k-template-rocker<-- for templatinghttp4k-multipart<-- multipart form uploadshttp4k-testing-hamkrest<-- for test assertions
In action:
