Skip to content

This repo is for demo and material for a work study group I host

License

Notifications You must be signed in to change notification settings

3schwartz/StudyGroup

Repository files navigation

Study Group

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.

Topics

Incremental Generator 🚀

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 😅.

Streaming

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.

APIs

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.

CICD

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.

Chaos

Investigation of Chaos engineering and how one can use Simmy to simulate chaos in our applications.

Outbox pattern

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.

Memory Allocation

Investigating memory allocation, stack vs. heap, service lifetime and memory leaks.

About

This repo is for demo and material for a work study group I host

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published