The 0BS stack is a starting point for building Elixir and Phoenix applications, presented as an Elixir metapackage. It includes the following features:
- Featureflags (via fun_with_flags)
- Prometheus metrics (via telemetry)
- HTTP Client (Using Tesla with included telemetry reporting)
- Featureflags UI and Prometheus metrics on own port for easier securing
- Load shedding via feature flags per controller action ("Drop 50% of all requests to PageController#index")
- MQTT subscriber (with instrumentation)
- Rate limiting per route/user
The package can be installed
by adding zerobs_stack
to your list of dependencies in mix.exs
:
def deps do
[
{:zerobs_stack, "~> 0.1.0"}
]
end
Run mix copy_featureflags_migrations
to add the needed Ecto migrations to your priv/repo/migrations
folder.
Add plug ZerobsSTack.LoadShedPlug
to the end of the def controller do
block in your ApplicationWeb
module.
To enable load shedding open your FunWithFlags GUI and add a flag named like elixir_stackerweb_pagecontroller_index_disabled
. This would drop Traffic for Elixir.StackerWeb.PageController#index
(We downcase the whole module name and replace .
with _
.)