This repository contains projects and exercises which I have made for study groups sessions I have hosted - all with the goal to share my passing for exciting topics and hope to encourage others
Topics for sessions hosted are described in below sections and exercises can be found in their respective folders.
Diving into Incremental Generator the new and updated version of the former source generator.
Generators allow you to add code at compile time to the compilation. One can implement functionality in higher level of library abstraction and then mark through attributes, interfaces, file extension etc. that this file needs to have code generated from it.
Really cool feature and in many cases one can avoid the usage of reflection and avoid the performance penalty gained by using this 🎉
As a usage case the example take you through how one can keep domain boundaries in you code, keep you libraries loosely coupled with dependency in the correct direction and avoid the usage of reflection 💥.
This is a really cool topic - but don't dick into this late at night since it really is a steep learning curve 😅.
Three different frameworks which can be used for streaming are covered: GraphQL, gRPC and SignalR.
When discussing these frameworks some interesting topics are the community contribution, schema alignment between server and clients and of course performance.
Covering three different backends APIs developed using REST, OData and GraphQL.
Discussion of versioning, changes needed in client at changes from backend, batching functionality, and general pros- and cons.
Investigation of CI pipelines like Azure pipelines and Github Actions and exercises around building these.
Covering CD with the perspective of using the fantastic tool from Argo CD in a Kubernetes cluster.
Investigation of Chaos engineering and how one can use Simmy to simulate chaos in our applications.
Investigating Outbox pattern hence how one can ensure delivery of messages to both a database and message bus.
Examples of different designs with pull, fetch reactive pattern and Kafka Connect is given and tested using BenchmarkDotNet.
Observability is also discussed how one can use tracing and Jaeger to observe message flow.
Investigating memory allocation, stack vs. heap, service lifetime and memory leaks.