deft/journal/2021-06-06--13-43-12Z--service_oriented_programming.org
Yann Esposito (Yogsototh) be5a93ebbb
tracker.org
2021-06-07 09:58:41 +02:00

1.3 KiB

Service Oriented Programming

tags
programming architecture
source

This is a presentation of a design pattern to architecture a big code source. As most programming architecture, the goal is to optimize modularity.

First, this focus on functions. There will be no global variable. There are two kind of functions in programming, pure and impure functions.

From a high level perspective:

  • lib/ contain pure functions
  • services/ contain all services

The services directory will contain "sub-project"/"modules". Every service should have the following structure:

  • src/

    • service the service declaration
    • core the implementation of the function in the service, should contain pure functions
    • schemas/types the metas structures (data format mostly)
    • routes if you service is a web service, routes declarations
  • test/

    • service_test the service test
    • core_test the tests for pure functions

A service should be considered as a function returning a record of functions.

foo-service-methods
  foo-do-a
  foo-do-b
  foo-do-c

def foo-service
  create-service( config-service, bar-service, baz-service)