Duckula: Type Safe Backend Services with Clojure, HTTP & Avro
summary
Duckula wires Avro-based validation into Clojure HTTP services so requests and messages share Avro schema validation and generated API docs (Swagger via an unstable artifact). It runs as data-driven configs (simple greeter example), serializes over RabbitMQ with adapters instead of codegen, and models business operations as RPC-style endpoints. Schedulers use Postgres advisory locks but keep work under 500ms and push jobs to RabbitMQ; this design runs in production and avoids long-held locks.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 1:56Duckula demo repository
- 2:16Why choose Avro
- 6:05RPC vs REST APIs
- 10:59GraphQL thoughts
- 12:42Data-driven Clojure APIs
- 16:14Managing shared libraries
- 21:49Monorepo strategy
- 26:23Distributed locking with Logjar
- 29:51Q&A wrap-up
related talks
36mGrudging Monkeys and Microservices
44mFrom REST to CQRS with Clojure, Kafka, & Datomic
57mLessons in Building a System that Processes More than 70 Billion Events Daily
41mDecouple all the things: Asynchronous messaging keeps it simple
47mServerless Microservices
38mEffective Data Synchronization between Rails Microservices
47mMicroservices Architecture and Data Consistency: So How Do We Do It for Real?
50mOperating Clojure Microservices
