W 2020 wydalismy kurs Mikroserwisy .NET, ktory pomogl tysiacom programistow poznac te architekture.
Od tamtej pory pracowalismy z wieloma systemami rozproszonymi - rozwijalismy je, naprawialismy, wyciagalismy z dlugu technicznego. Widzielismy co dziala, a co prowadzi donikad.
Dzis nie uczymy juz tylko "jak zaczac z mikroserwisami". Pokazujemy jak nie utonac, gdy system rosnie, zespol sie powieksza, a zlozonosc wymyka sie spod kontroli. Jak rozwijac architekture, ktora juz istnieje - bez rewolucji i przepisywania od zera.
Z samym kursem mozesz zapoznac sie na: https://mikroserwisy-revisited.pl
Ticketflow to rozproszony system ticketowy, w którym w prosty sposób zespół anglojezyczny jest w stanie obsługiwać zgłoszenia klientów z całego świata. Dodatkowo, by utrzymać SLA wynikające z umów podpisanych z klientami, system (poza wspieraniem procesu obsługi ticketow) wspiera agentów service desk w postaci przypomnień, alertowania czy prezentowania metryk na żywo.
Dla osób zaznajomionych z naszą twórczością, z punktu "domenowego" jest to rozwinięcie rozważań nad aplikacją znaną z innego kursu: Messaging:Pragmatycznie
| Warstwa | Technologie |
|---|---|
| Backend | .NET 10, ASP.NET Core, Entity Framework Core |
| Frontend | React 18, shadcn/ui, CopilotKit |
| Messaging | RabbitMQ |
| Baza danych | PostgreSQL |
| Obserwowalnosc | OpenTelemetry, Jaeger, Prometheus, Grafana, Langfuse |
| Infrastruktura | Docker, Kubernetes |
| AI | Ollama, Microsoft.Extensions.AI, MCP, A2A |
Wymagania:
Uruchamiamy cala infrastrukture i wszystkie serwisy jednym poleceniem:
./run_ticketflow.sh
- Uruchamiamy infrastrukture (RabbitMQ, PostgreSQL, Jaeger, Prometheus, Grafana):
./run_infra.sh
- Uruchamiamy wybrane serwisy backendowe, np.:
dotnet run --project src/Services/Tickets/TicketFlow.Services.Tickets.Api
- Uruchamiamy frontend:
cd src_frontend/tickets && npm install && npm run dev
Alternatywnie, system mozna uruchomic na Kubernetesie:
./k8s/build-images.sh
./k8s/start_services.shRepozytorium obejmuje material z 9 modulow tematycznych:
- Wprowadzenie - setup projektu TicketFlow
- Kiedy mikroserwisy? - kryteria wyboru architektury
- Komunikacja wewnetrzna - sync, async, orkiestracja vs. choreografia, PACELC
- Dane w systemach rozproszonych - zarzadzanie danymi miedzy serwisami
- Infrastruktura - projektowanie infrastruktury i izolacja zasobow
- API zewnetrzne - komunikacja zewnetrzna i wersjonowanie
- Governance - metryki, dokumentacja, katalog serwisow
- AI - integracja z AI (MCP, agenci)