An open-source Elixir framework for building API gateways that proxy, transform, and merge HTTP requests asynchronously.
Rackla is an open-source framework for building API gateways in Elixir. It enables developers to proxy, transform, and enhance HTTP communication between clients and servers by asynchronously executing multiple requests and applying functional transformations. This allows for creating new API endpoints that aggregate, filter, or convert data from existing services.
Elixir developers building scalable API gateways or middleware that need to aggregate, transform, or proxy multiple backend services efficiently. It's particularly suited for teams implementing microservices architectures or creating unified API layers.
Developers choose Rackla for its native integration with Elixir's concurrency model and functional programming paradigm, allowing them to build composable data pipelines with asynchronous request execution. Its unique selling point is treating API gateway logic as functional data pipelines using familiar operations like map, flat_map, and reduce, while leveraging Plug for seamless HTTP handling.
Open Source API Gateway in Elixir
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Elixir's BEAM VM to execute multiple HTTP requests concurrently, as shown in examples where images from Instagram are fetched simultaneously, improving throughput for IO-bound operations.
Uses Elixir's pipe operator and functions like map, flat_map, and reduce to create readable data transformation pipelines, ideal for aggregating and filtering API responses without imperative code.
Built on Plug, allowing easy endpoint definition in Elixir web applications and compatibility with servers like Cowboy, as demonstrated in the skeleton project for quick setup.
Automatically handles gzip response compression (with client checks) and JSON encoding with appropriate headers, reducing boilerplate for common API gateway tasks.
Requires proficiency in Elixir and its toolchain, making it inaccessible for teams using other languages or new to functional programming, with no support for polyglot environments.
Lacks built-in support for rate limiting, caching, or monitoring—common in production API gateways—forcing developers to implement these manually, increasing complexity.
Error handling in pipelines is explicit and verbose, as seen in examples where each response must be pattern-matched for success or failure, leading to repetitive code.