overview/adr-c4k/project-section.md
2021-05-31 20:40:57 +02:00

1.7 KiB

How is the c4k-project section?

Status

accepted

Context

We need some place to collect common used code for our Convention4Kubernetes modules.

Discussion about project-section in general

  • Value
    • Smaller modules make it easier to cope with systems complexity
      • test code seperately
      • fewer people work on the same repo -> less merging
    • Increase consistency by reusing code instead of creating redundancy
    • enforces clearer architectur (decisions)
    • separation of code along the different development velocities border.
    • enforces architectural section
  • Cost
    • increase of systems complexity
      • Dependency Hell / transitive dependencies
      • Section requires good documentation
      • more artifacts
    • Worse Developer Experience
      • Refactoring across multiple modules is hard to handle
      • Debugging of seperate modules my be time-consuming (multiple layers)
      • some coding tools (e.g. jump to definition) do not work over multiple repositories
      • slower development roundtrip (e.g. when using repl)
    • less awarness of what co-workes are commiting/working on
    • Danger of naive projcet section

Decision

project-section-artifact.png

  1. We move common used code (predicates for spec, config handling with aero, gopass resolution, yaml serialization and encoding) to c4k-common project.
  2. For cli & web frontend code we accept redundancy till we've a clearer picture on how to extract commons
  3. For postgres deployments we accept redundancy till we've a clearer picture on how to extract commons

Consequences

  1. We can use described code in common.
  2. After more experience we will decide about a changed section.