Architecture Patterns for FAIR-Enabling Services
I’ve been trying to grok architecture patterns as presented by Percival and Gregory1 to support domain-driven design and event-driven microservices with Python. I hope you find the diagram below useful.
A microservices approach seems apt for FAIR-enabling services that need to be composed, flexibly, for any given research artifact’s digital lifecycle. Consider these services:
- minter2 (F)3
- binder2 (F)3
- resolver2 (F)3
- index4 (F)3
- object store5 (A)3
- transactor6 (I)3
- harmonizer7 (I)3
- tracker8 (R)3
Consider how you may want to swap one technology choice for a given FAIR-enabling service with another choice, at any time, as part of evolving FAIR infrastructure to which you connect in order to collaborate on and publish / share research artifacts.
References
H. J. W. Percival and R. G. Gregory, Architecture patterns with Python: enabling test-driven development, domain-driven design, and event-driven microservices, First edition. O’Reilly, 2020. (available online). ↩︎
Example: “Arklet - A basic ARK resolver.” Internet Archive, Oct. 14, 2022. Accessed: Oct. 17, 2022. [Online]. Available: https://github.com/internetarchive/arklet ↩︎ ↩︎ ↩︎
principle addressed: F — Findable, A — Accessible, I — interoperable, R — reusable. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Example: “Elasticsearch”. https://www.elastic.co/elasticsearch/ ↩︎
Example: “Amazon Simple Storage Service (Amazon S3)”. https://aws.amazon.com/s3/ ↩︎
Example: “Transactor | Datomic.” https://docs.datomic.com/on-prem/overview/transactor.html (accessed Oct. 17, 2022). https://docs.datomic.com/on-prem/overview/transactor.html ↩︎
Example: “DataHarmonizer.” Centre for Infectious Disease and One Health, Aug. 08, 2022. Accessed: Oct. 17, 2022. [Online]. Available: https://github.com/cidgoh/DataHarmonizer ↩︎
Example: “git - the stupid content tracker.” https://git-scm.com/docs/git (accessed Oct. 17, 2022). ↩︎