45 lines
1.3 KiB
Org Mode
45 lines
1.3 KiB
Org Mode
#+TITLE: Service Oriented Programming
|
|
#+Author: Yann Esposito
|
|
#+Date: [2021-06-06]
|
|
|
|
- tags :: [[file:2020-06-03--19-49-30Z--programming.org][programming]] [[file:2021-03-20--17-27-46Z--architecture.org][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.
|
|
|
|
#+begin_src
|
|
foo-service-methods
|
|
foo-do-a
|
|
foo-do-b
|
|
foo-do-c
|
|
|
|
def foo-service
|
|
create-service( config-service, bar-service, baz-service)
|
|
#+end_src
|