Practice application for managing a distributed log of software assets
- streamline heartbeat and multicast
- test
- inform failure
- send missing member message to shortlist
- these then first probe (heartbeat) the perceived failed member (node)
- Create OCI Image
- Hadolint
- Seccom Profiles
- Carvel Package?
- use dev version of
kctrl
- use dev version of
- setup minimal CI
- TektonCD
- Syft for SBOM
- hadolint
- Deploy as DaemonSet or Deployment
- deployment via FluxCD?
- consensus protocol
- https://www.hashicorp.com/resources/raft-consul-consensus-protocol-explained
- https://thesecretlivesofdata.com/raft/
- discovery: multi modes (kubernetes, via client?)
- internal clock for agreeing on message ordering
- leadership election
- distributed log
- lampart clock
- store application identity
- certificates
- tags to use
- map application identity to (S)BOM
- Syft (docker bom)
- SPDX
- should (S)BOM be Timeseries?
- look at Grafana's Mimix?
- log where application is running/encountered?
- maybe a Spring Native with a Database with JOOQ and so on?
- work with Backstage?
- can run as standalone process: Linux AMD64, Linux ARM64, Windows AMD64
- can run as container: Linux AMD64, Linux ARM64
- can run as Kubernetes StatefulSet
- GitHub actions pipeline(s) with linting, security scan
- Tekton pipeline, based on Continous Delivery with Kubernetes book
helm repo add jaegertracing https://jaegertracing.github.io/helm-chartshelm install jaeger jaegertracing/jaeger --namespace jaeger --As described here: https://www.jaegertracing.io/docs/1.37/getting-started/
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-e COLLECTOR_OTLP_ENABLED=true \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
-p 14250:14250 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 \
jaegertracing/all-in-one:1.37open http://localhost:16686- https://www.digitalocean.com/community/tutorials/how-to-use-contexts-in-go
- https://www.digitalocean.com/community/tutorials/understanding-maps-in-go
- https://medium.com/@leonardo5621_66451/how-to-shutdown-a-golang-application-in-a-cleaner-way-e9307b0ea505
- https://opentelemetry.io/docs/instrumentation/go/getting-started/
- https://github.com/open-telemetry/opentelemetry-go/blob/main/example/jaeger/main.go
- https://www.jaegertracing.io/docs/1.37/getting-started/
- https://www.coursera.org/learn/cloud-computing/home/week/2
- https://www.serf.io/docs/internals/gossip.html#lifeguard
- https://www.hashicorp.com/blog/making-gossip-more-robust-with-lifeguard
- https://github.com/hashicorp/memberlist
- https://martinfowler.com/articles/patterns-of-distributed-systems/gossip-dissemination.html
- https://martinfowler.com/articles/patterns-of-distributed-systems/lamport-clock.html
- https://www.serf.io/docs/internals/simulator.html
- https://www.brianstorti.com/swim/