Hadn’t looked at Darp for a couple of years, and it turns out it has stabilized and actively evolved in that time.

For those unfamiliar, Darp is a ready-made application layer in the form of sidecar containers. It allows teams to avoid writing the application layer and use ready components, paying with the need for training and a small overhead (5-10% cpu, 5-10 Mb of memory, and 5-10 ms of gRPC latency).

Implements APIs:

  • Service Invocation: Direct, secure service-to-service calls (HTTP/gRPC)
  • Publish & Subscribe Messaging: Asynchronous events between services via brokers (> 10 broker options)
  • Workflow: Long-running orchestrations and sagas between microservices
  • State Management: Storing/querying key-value state with TTL and transactions (> 20 storage options)
  • Bindings: Receiving/sending data to/from external systems via events
  • Actors: Virtual actors model (active object state)
  • Secrets Management: Secure retrieval of secrets from external stores
  • Configuration: Reading and live subscription to application configuration changes
  • Distributed Lock: Mutual exclusion access to resources with a lease mechanism
  • Cryptography: Cryptographic operations (KMS, signing, encryption) without exposing keys
  • Jobs: Scheduling and orchestration of background/periodic tasks
  • Workflow: Long-running orchestrations and sagas between microservices
  • State Management: Storing/querying key-value state with TTL and transactions
  • Bindings: Receiving/sending data to/from external systems via events
  • Actors: Virtual actors model (active object state)
  • Secrets Management: Secure retrieval of secrets from external stores
  • Configuration: Reading and live subscription to application configuration changes
  • Distributed Lock: Mutual exclusion access to resources with a lease mechanism
  • Cryptography: Cryptographic operations (KMS, signing, encryption) without exposing keys
  • Jobs: Scheduling and orchestration of background/periodic tasks
  • Conversation: Abstraction for prompt-based interaction with LLM providers