Lista zamówień: czas odpowiedzi 8,2 s
Na produkcji jest 50 razy więcej danych niż na środowisku testowym. Na testach wszystko działało.
Szkolenie online dla programistów · prowadzi Kazimierz Szpin, CTO FindSolution.pl
Nauczysz się projektować systemy, które wytrzymują ruch, i bronić swoich decyzji liczbami: w pracy i na rozmowie na seniora. Ćwiczysz na działającym sklepie w .NET 10 i na systemach, jakie naprawdę powstają w firmach: CRM-ach, systemach rezerwacji, SaaS-ach.
Osoby z listy dowiedzą się o otwarciu zapisów pierwsze. Wypiszesz się jednym kliknięciem.
albo najpierw zobacz programUŻYTKOWNIKÓW DZIENNIE
Znasz to?
Lista zamówień: czas odpowiedzi 8,2 s
Na produkcji jest 50 razy więcej danych niż na środowisku testowym. Na testach wszystko działało.
„Black Friday za sześć tygodni. Wytrzymamy?”
Powinno…Odpowiadasz tak, bo nie masz jak tego policzyć.
„Zaprojektuj system powiadomień.”
Rysujesz trzy prostokąty i nie wiesz, co dalej. Zostało 40 minut rozmowy.
„Może rozbijmy to na mikroserwisy?”
Czujesz, że to przesada, ale nie umiesz tego uzasadnić.
Takie pytania dotyczą całego systemu: z czego się składa, gdzie ma słabe punkty i jak podejmować decyzje, których nie da się łatwo cofnąć. Tego uczy Szkoła System Design.
Przed i po
W dniu największej sprzedaży lista zamówień ładuje się 8 sekund.
Konkretny plan, który szef może zaakceptować albo odrzucić.
Podejście
Po angielsku jest sporo dobrych książek i kanałów o system design. Większość przygotowuje jednak do rozmowy w dużej firmie technologicznej: miliard użytkowników, sharding od pierwszego dnia, dziesięć osobnych usług.
W typowym projekcie to przerost formy, który kosztuje miesiące pracy i rachunki za chmurę. Tutaj zaczynamy od systemu, który masz dziś, i dokładamy elementy dopiero wtedy, gdy wymuszają to liczby.
Każdą decyzję zaczynamy od policzenia ruchu, danych i kosztu.
Kolejny element dodajesz, gdy wiesz, co go wymusza.
Sklepy, CRM-y, rezerwacje i SaaS od 1 000 do 200 000 użytkowników, a nie Netflix.
Podstawą są diagramy i obliczenia. Cache, kolejkę i ponawianie zobaczysz też w C#, w kodzie, który uruchamiasz u siebie.
Laboratoria
Przez cały kurs przygotowujesz na Black Friday sklep internetowy Dioda: 20 000 użytkowników dziennie, lista zamówień ładuje się 8 sekund, a szef pyta „Wytrzymamy?”. Firma jest fikcyjna, ale kod działa. Dostajesz go jako ZIP z repozytorium git i uruchamiasz na swoim komputerze.
W siedmiu laboratoriach pracujesz na działającym sklepie i mierzysz go w k6, a w czterech z nich zmieniasz kod i mierzysz jeszcze raz. Każde laboratorium zaczynasz od gotowego stanu w repozytorium, więc powtórzysz je, kiedy chcesz.
>k6 run -e CEL=900 k6/black-friday.js
| Pomiar | przed kursem | po kursie |
|---|---|---|
| Błędy | 10,3–10,9% | 0,03% |
| Złożenie zamówienia, p95 | 3,4 s | 319 ms |
| Sprzedane konsole przy 500 na stanie | 554–565 | 500 |
| Zamówienia bez błędu serwera przy awarii bramki SMS | 44–45% | 100% |
Sklep ze 150 000 zamówień rusza jednym poleceniem. Lista zamówień w panelu ładuje się kilka sekund — jak na produkcji.
Test obciążenia w k6 ze stałym tempem żądań: przy ilu żądaniach na sekundę p95 przekracza próg i co jest przyczyną.
Poprawione zapytanie EF Core, indeks z planu wykonania i paginacja po kluczu — każdy krok z pomiarem.
HybridCache i Garnet na dwóch instancjach. Zmiana ceny na żywo i awaria cache, po której sklep działa dalej.
Mail, SMS i faktura idą do outboxa, a worker wysyła je z ponawianiem i dead-letter.
Efekt domina na Twoim komputerze. Potem płatność poza transakcją, limity czasu i circuit breaker.
Ten sam test na obu wersjach sklepu. Wynik u mnie jest w tabeli wyżej.
Windows 10 albo 11, zalecane 16 GB RAM i 4 rdzenie. Wszystkie narzędzia są za darmo, a instalację krok po kroku opisuje PDF do lekcji 0.4. Do instalacji potrzebne są uprawnienia administratora — na służbowym komputerze zapytaj dział IT.
W kodzie sklepu
Sklep Dioda startuje z tymi problemami. Większość nie wychodzi na testach, tylko pod ruchem, na pełnych danych albo na drugim serwerze. Cztery naprawiasz w laboratoriach, resztę pokazują lekcje i kolejne stany repozytorium.
8,2 s na produkcji, 0,3 s na testach, gdzie danych jest 50 razy mniej.
Osobne zapytanie do bazy dla każdego zamówienia klienta.
Promocja na 500 konsol sprzedaje ich więcej.
IMemoryCachePrzy dwóch instancjach koszyk znika co drugie żądanie.
Druga instancja nie widzi nowych zdjęć.
Przy dwóch serwerach klient traci logowanie.
BackgroundService na każdej instancjiAnulowanie nieopłaconych zamówień wykonuje się dwa razy.
.ResultPod obciążeniem serwer stoi przy niskim zużyciu procesora.
Baza obciążona odczytami danych, które prawie się nie zmieniają.
Zamówienie trwa ok. 3 s, a awaria bramki SMS blokuje zakupy.
Wolna bramka zabiera połączenia do bazy i staje cały sklep, także katalog.
Database.Migrate() przy starcieNieudana migracja wyłącza wszystkie instancje naraz.
Zadania z kursu
Po każdym module projektujesz system. Sprawdzasz się checklistą, a tydzień później oglądasz moje omówienie z przykładowym rozwiązaniem. Masz pytania do swojego rozwiązania? Piszesz do mnie — odpowiadam osobiście.
Aplikacja do zamawiania lunchu w 30 biurowcach: 7 200 zamówień między 9:00 a 10:30, połowa w ostatnich 20 minutach. Ile ruchu, danych i serwerów?
Efekt: jedna strona obliczeń: założenia, szczyt z zapasem, dane na trzy lata i liczba serwerów z uzasadnieniem.
CRM dla 300 firm na trzech instancjach. Zaprojektuj cache uprawnień, po którym zwolniony pracownik traci dostęp najpóźniej w minutę — na każdej instancji.
Efekt: schemat cache, najgorszy przypadek w sekundach, awaria Redisa i przypadki brzegowe.
Faktury firmowe muszą trafić do KSeF — każda dokładnie raz, nawet gdy API ma przerwę albo odpowiada 429. Zamówienie nigdy nie czeka na KSeF.
Efekt: diagram przepływu, tabela stanów faktury i tempo wysyłki wobec limitu API.
Zespół chce wydzielić płatności do osobnej usługi. Oceń, czy to się opłaca.
Efekt: decyzja zapisana w ADR, z kosztami obu wariantów i warunkami jej zmiany.
5 000 miejsc na koncert, 50 000 chętnych o 10:00, boty i wolna bramka płatności. Zaprojektuj sprzedaż, w której żadne miejsce nie pójdzie dwa razy.
Efekt: dokument projektowy na najwyżej dwie strony, z diagramem i liczbami.
Zaprojektuj system powiadomień w 45 minut, tak jak na rozmowie rekrutacyjnej.
Efekt: diagram, notatki z tablicy i podsumowanie w pięciu zdaniach — potem porównanie z omówieniem.
Program
Ok. 8 h 25 min wideo: 55 lekcji i 11 omówień zadań. Lekcje pokazują diagramy, które rosną krok po kroku, obliczenia i kod C#, a kod sklepu pochodzi prosto z jego repozytorium. Siedem laboratoriów to nagrania ekranu krok po kroku na działającym sklepie. Po każdym module od 1 do 11 robisz zadanie projektowe, a tydzień później oglądasz jego omówienie.
Poznajesz sklep Dioda, który przez cały kurs przygotowujesz na Black Friday, i uruchamiasz go na swoim komputerze — bez Dockera.
Zamieniasz „ma działać szybko” w liczby: czas odpowiedzi z percentylem, przepustowość i dostępność w minutach awarii. Poznajesz metodę w sześciu krokach, której używasz do końca kursu i na rozmowie.
Liczysz w pięć minut ruch, dane, połączenia i serwery, a potem mierzysz w k6, ile naprawdę wytrzymuje Twój serwer. Wiesz, dlaczego wolna baza wyczerpuje pulę połączeń i kładzie całą aplikację.
Znajdujesz wąskie gardło, zanim dołożysz serwer. Dowiadujesz się, co psuje się w aplikacji ASP.NET Core po dodaniu drugiej instancji i dlaczego serwer stoi przy procesorze na 5%.
Naprawiasz zapytanie, które na produkcji trwa 8 sekund, a na testach 0,3 s: plan wykonania, indeksy, typowe błędy EF Core. Zabezpieczasz ostatnią sztukę towaru przed dwoma kupującymi i wiesz, kiedy repliki, sharding i NoSQL mają sens.
Zdejmujesz z bazy większość odczytów: warstwy cache, HybridCache, Redis i Output Cache w .NET. Unieważniasz dane na wielu instancjach i chronisz bazę przed lawiną zapytań, gdy cache wygaśnie w złym momencie.
Wyciągasz z żądania to, co nie musi wydarzyć się od razu: kolejka w bazie albo broker, idempotencja, ponawianie, dead-letter i wzorzec outbox. W laboratorium bramka SMS pada, a zamówienia dalej przechodzą.
Sprawiasz, że awaria płatności, poczty albo zewnętrznego API nie wyłącza całego systemu: timeouty, ponawianie, circuit breaker w .NET, rate limiting, wyłączanie funkcji i kopie zapasowe, które da się odtworzyć.
Liczysz koszt mikroserwisów, zanim je zbudujesz. Projektujesz monolit modularny w .NET z twardymi granicami, sagi zamiast rozproszonych transakcji i zapisujesz decyzje w ADR.
Widzisz, co dzieje się w systemie o trzeciej w nocy: logi, metryki, ślady w OpenTelemetry i alerty, które mają sens. Wdrażasz bez przestoju, migrujesz bazę bez ryzyka i liczysz, ile kosztuje Twoja architektura.
Składasz wszystko w plan na Black Friday i dokument dla szefa, a potem sprawdzasz go testem na sklepie „przed” i „po”. Projektujesz od zera system rezerwacji, SaaS dla wielu firm i aplikację z modelem językowym.
Prowadzisz rozmowę system design według planu na 45 minut, wiesz, co ocenia rekruter i jakie błędy oblewają kandydatów. Oglądasz całą rozmowę próbną krok po kroku i ćwiczysz na zadaniu z omówieniem.
Jak wygląda nauka
Diagram rośnie krok po kroku, obok obliczenia i kod C#. Kod Diody pochodzi prosto z repozytorium.
Uruchamiasz sklep, zmieniasz kod z gotowych plików i mierzysz w k6, co się zmieniło.
Po module dostajesz zadanie „zaprojektuj…” na konkretnym przykładzie z liczbami.
Pięć pytań tak/nie od razu, a tydzień później omówienie wideo z przykładowym rozwiązaniem.
Najwyżej trzy do zadania. Odpowiadam osobiście.
Od razu po zakupie dostajesz moduły 0–3, potem co tydzień kolejne — cały kurs w cztery tygodnie. Omówienie zadania odblokowuje się tydzień po module.
Dla kogo
Opinie
Opinie dotyczą moich wcześniejszych szkoleń, bo Szkoła System Design rusza w pierwszej edycji. Zadania działają tu inaczej: checklista, omówienie z przykładowym rozwiązaniem i pytania mailem (jak to wygląda).
„Kupiłam kurs po 5–6 latach pracy, aby usystematyzować sobie wiedzę — i usystematyzowałam. Używam go do przypomnień przed rozmowami rekrutacyjnymi (…)”
Angelika Maria Piątkowskaprogramistka, uczestniczka „Zostań Programistą .NET”„(…) Prace domowe sprawdzane są bardzo szybko i dokładnie. Sam zdecydowałem się na zakup kolejnych szkoleń.”
Maciej Szafrańskiuczestnik szkoleń ModestProgrammer„(…) Kazimierz sprawdza zadania szybko i daje wyczerpujący feedback z cennymi wskazówkami.”
Michał Rekiećuczestnik „Zostań Programistą .NET”Porównanie
| Kryterium | Szkoła System Design | Książki i kanały po angielsku | Szkolenie stacjonarne |
|---|---|---|---|
| Koszt | 1497 zł, raz | 0–200 zł i dużo własnego czasu | zwykle kilka tysięcy zł za 2–3 dni |
| Skala przykładów | systemy, jakie powstają w typowych firmach | głównie wielkie firmy technologiczne | zależy od trenera |
| Laboratoria na działającym systemie | 7 laboratoriów na sklepie w .NET 10, który uruchamiasz u siebie | rzadko | zależy od trenera |
| Informacja zwrotna do Twoich projektów | po każdym module checklista i omówienie z przykładowym rozwiązaniem, pytania mailem | nie | ćwiczenia w grupie, w trakcie zajęć |
| Przygotowanie do rozmowy | cały moduł 11 | często główny cel | rzadko |
| Dostęp po zakończeniu | dożywotni, z aktualizacjami | tak | zwykle tylko materiały |
| Po polsku | tak | nie | tak |
Przesuń tabelę w bok, żeby zobaczyć pozostałe kolumny.
Cena i zapisy
Zapisy otwieram na tydzień. Osoby z listy dowiedzą się o nich pierwsze.
Od razu po zakupie dostajesz moduły 0–3, potem co tydzień kolejne — cały kurs w cztery tygodnie. Omówienie zadania odblokowuje się tydzień po module.
W 14 dni zobaczysz moduły 0–5, w tym cztery laboratoria. Jeśli uznasz, że to nie dla Ciebie, napisz jedno zdanie na kazimierz.szpin@modestprogrammer.pl i oddam 100% wpłaty. Także przy zakupie na raty.
Kupujesz z budżetu szkoleniowego firmy? Faktura VAT na firmę przychodzi automatycznie po zakupie.
Temat: Szkolenie z projektowania systemów Cześć [imię], chcę zapisać się na Szkołę System Design (1497 zł brutto, faktura VAT na firmę). To 12 modułów o wymaganiach i szacowaniu ruchu, skalowaniu aplikacji, bazie danych pod obciążeniem, cache, kolejkach, odporności na awarie, architekturze i utrzymaniu systemu na produkcji. W kursie jest 7 laboratoriów na działającym sklepie w .NET 10 i 11 zadań projektowych z omówieniami i przykładowymi rozwiązaniami. Ostatni moduł dotyczy rozmowy system design: jak ją prowadzić i co ocenia rekruter. W naszym projekcie przyda się to przy [np. przygotowaniu systemu na większy ruch albo decyzji o architekturze nowego modułu]. Po szkoleniu przygotuję dla zespołu krótkie podsumowanie i checklistę gotowości systemu na większy ruch. Program szkolenia: [link do tej strony] Dzięki!
Pytania
Od razu po zakupie dostajesz moduły 0–3, potem co tydzień kolejne — cały kurs w cztery tygodnie. Omówienie każdego zadania odblokowuje się tydzień po jego module.
Ponad 20 godzin nauki w cztery tygodnie: ok. 8 h 25 min wideo plus laboratoria i zadania projektowe. Tygodniowo to ok. 2 h wideo i 3–4 h na laboratoria i zadania, a omówienie ostatniego zadania przychodzi tydzień później. Dostęp jest dożywotni, więc możesz iść wolniej.
Laboratoria wymagają Windows 10 albo 11, bo baza działa na SQL Server LocalDB, a lekcje i zadania projektowe zrobisz na każdym systemie.
Nie. Repozytorium sklepu dostajesz jako ZIP i uruchamiasz na Windows bez Dockera: SQL Server LocalDB, Aspire, Garnet jako cache zgodny z Redisem i kolejka w tabeli SQL Server. Wszystkie narzędzia są za darmo, a instalację krok po kroku opisuje PDF do lekcji 0.4.
Na SQL Server: T-SQL i EF Core. Zasady są te same w PostgreSQL i MySQL, a przy indeksach i rezerwacjach pokazuję, czym te bazy się różnią.
Nie. Zasady nie zależą od języka. Kod pokazuję w C#, bo w nim pracuję, ale zrozumiesz go, jeśli piszesz w Javie czy TypeScripcie. Laboratoria są w .NET 10, a kod wklejasz z gotowych plików, więc przejdziesz je także bez codziennej pracy w C#.
Każde zadanie kończy checklista „Sprawdź się”: pięć pytań tak/nie. Tydzień po module odblokowuje się omówienie wideo (ok. 5 minut) i PDF z przykładowym rozwiązaniem i najczęstszymi błędami. Masz pytania do swojego rozwiązania? Wysyłasz je mailem, najwyżej trzy do zadania, a ja odpowiadam osobiście.
Nie robię pełnej recenzji każdej pracy. Dlatego omówienie pokazuje całe rozwiązanie krok po kroku.
Po przejściu kursu. Piszesz maila z imieniem i nazwiskiem, które mają być na certyfikacie, a certyfikat w PDF wraca na Twój adres. Zadania projektowe nie są warunkiem.
Jeśli pracujesz komercyjnie od około roku, tak. Jeśli dopiero uczysz się programować, na razie za wcześnie.
Moduł 11 jest w całości o rozmowie system design: plan na 45 minut, co ocenia rekruter, cała rozmowa próbna krok po kroku i zadanie z omówieniem. Case studies z modułu 10 to typowe zadania z takich rozmów.
Tak, cały moduł 8, razem z tym, kiedy ich nie robić. Konfiguracji Kubernetesa nie ma, to temat na osobne szkolenie.
Nie. Pokazuję koncepcje niezależnie od dostawcy, a koszty liczymy na prostych przykładach. Wystarczy, że wiesz, jak działa aplikacja webowa z bazą danych.
Bardziej niż wcześniej. AI coraz lepiej pisze kod, ale nie zdecyduje za Ciebie, czy system potrzebuje kolejki, ile będzie kosztował i co się stanie przy dziesięciokrotnie większym ruchu. Te decyzje zostają po stronie programisty i o nie pytają na rozmowach.
Tam budujesz jedną aplikację od pierwszej linijki kodu. Tu projektujesz całe systemy: z czego mają się składać, co się stanie przy większym ruchu i ile to będzie kosztować.
Tak. Faktura VAT przychodzi automatycznie po zakupie, raty wybierasz w koszyku (Przelewy24). Gwarancja obowiązuje także przy ratach.
Masz inne pytanie? Napisz: kazimierz.szpin@modestprogrammer.pl