Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tristancacqueray/backend-environment-zoo
Architecture decision record for a runtime system
https://github.com/tristancacqueray/backend-environment-zoo
adr
Last synced: 14 days ago
JSON representation
Architecture decision record for a runtime system
- Host: GitHub
- URL: https://github.com/tristancacqueray/backend-environment-zoo
- Owner: TristanCacqueray
- Created: 2021-11-07T23:04:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2021-11-07T23:15:54.000Z (almost 3 years ago)
- Last Synced: 2024-10-11T01:41:47.740Z (27 days ago)
- Topics: adr
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Backend Runtime Environment Zoo
The goal of this project is to evaluate different runtime environments for a backend system.
## Context and Problem Statement
The goal of the system is to collect the build logs of a CI service in order to enable full text search on the log files.
### Tasks
Here are the different tasks:
- Retrieve the build result from a HTTP JSON api featuring skip&limit pagination.
- For each build retrieve the log files.
- For each log files, process the log lines.The choice of database is not evaluated, and the system will push the build data into elasticsearch using the bulk api.
### Challenges
Here are the challenges to solve:
- Error recovering: in case of failure, the system should be able to safely restart without losing or duplicating build.
- Throughput monitoring: the system should monitor the performance to indicate the available capacity.
- Parallel streaming API: each tasks should be represented as an uniform stream of events.### Evaluation
Here are the evaluation criterias:
- Observability. For example, how to check the system health?
- Expression: code writability. For example, how to re-use the stream in a different context?
- Reliability: system stability. For example, how can the system misbehave?
- Environment: language ecosystem. For example, how can the code be tested? How to update a dependency?
- Distribution. For example, how to update a running instance?## Considered Options
- Haskell (GHC): https://haskell.org
- Rust: https://rust-lang.org
- Elixir (BEAM): https://elixir-lang.org
- <insert your options>## Decision Outcome