Skip to content

Latest commit

 

History

History
25 lines (22 loc) · 1.09 KB

motivation.md

File metadata and controls

25 lines (22 loc) · 1.09 KB

Motivation

  • Dependency hell: regenerate the code and check it in, no shared code, very limited dependency base
  • Marshalling: all transport code is generated, just write your business logic as if services were libraries
  • Unsafe API versioning: we can analyse service definitions over time and ensure breaking changes do not happen accidentally
  • Client libraries: generated for free
  • REST services: don't write them anymore, just write business logic

Our requirements are also pretty limited:

  • All our services are Haskell or Purescript
  • Any other language ecosystems would be a significant and intentional investment on our part, so we'd be able to write codegen
  • We don't care about concise message formats (we use ad-hoc JSON now)
  • We don't care about asynchronous RPC
  • We don't care about streaming

The aim here is to get to where we want to be as fast as possible. Corba thus has a much smaller scope than off-the-shelf service definition frameworks like Swagger and gRPC. We may choose to migrate to such frameworks in the future, but for now it is much faster to roll ourselves.