Krytykowałem nie raz pytanie „Czy to się skaluje?” za bycie matrą i wymówką raczej niż pytaniem. W swoim ostatnim artykule postanowiłem być bardziej proaktywny i napisałem poradnik na temat skalowania aplikacji używających Marten. Zawiera ogólne wyjaśnienie procesu myślowego, rozważania i praktyczne przykłady, jak i kiedy skalować Marten i nie tylko.
Strona głównaUżytkownik
oskar-at-net | użytkownik
Architektura poniedziałek, 31 lipca 2023 07:53:54 GMT 13 spam? źrodło rozwiń
Dzisiaj opublikowałem małą poradę o tym jak ustawiać zmienne globalne w testach przy pomocy XUnit. Może to być pomocne, jeśli przeprowadzasz testy integracji API dla aplikacji korzystającej z Marten. Dołączyłem również małą tyradę na temat frameworków testowych .NET.
Jestem regularnie pytany o "Jak zaimplementować Union Types w C#". Niestety nie jest to łatwe i musisz dokonać kompromisów; czasami może to skutkować przerostem formy nad treścią, ale... Jest to osiągalne i bywa użyteczne, zwłaszcza w modelowaniu logiki biznesowej. W najnowszym wpisie postarałem się podejść jak najgłębiej do tego tematu.
Sztuka programowania 846 dni, 23 godziny, 20 minut temu 324 źrodło rozwiń
Powiedzieć, że nie jestem fanem generowania kodu klienta na podstawie API, to jak nic nie powiedzieć. Uważam, że jest to jeden z pomysłów, który brzmi atrakcyjnie, ale kończy się koszmarem. To fajen marzenie, które nigdy się nie spełnia. Dlaczego? Czytaj więcej w artykule.
Architektura 874 dni, 23 godziny, 20 minut temu 167 źrodło rozwiń
Jakiś czas temu, zupełnie dla funu napisałem sobie sprytną biblioteczkę do testów w stylu BDD. Dzisiaj po chrzcie w ogniu (czytaj użyciu w moich samplach) wypuściłem wersję 0.1. Założenia: - pomóc w płynnym i czytelnym pisaniu testów, - usunąć boilerplate za pomocą zestawu pomocnych helperów, - nie zastępować frameworków testowych (działa ze wszystkimi, więc XUnit, NUnit, MSTests itp.) ani innych do asercji - zachować prostotę, ale zezwolić na kompozycje i rozszerzenia. Póki co służy do testów API, bo ...
Dzisiaj zajmiemy się konsumpcją! Oraz tym jak napisałem nową wersję biblioteki MediatR, no prawie. Opisuję jak można zrobić elastyczny pipeline, gdzie komponujemy zwykłe metody bez zbędnych interfejsów i magii refleksji.
Sztuka programowania 937 dni, 23 godziny, 5 minut temu 113 źrodło rozwiń
Mam coś dużego dla Was. Właśnie wydałem bezpłatnie pierwszą część zadań do warsztatu „Wprowadzenie do EventSourcing”. Przygotowanie ćwiczeń zajęło mi dwa tygodnie pełnego skupienia plus godziny, które spędziłem na Event Sourcing w ostatnich latach 🙂 Stworzyłem go na prywatny warsztat, ale jak zawsze zdecydowałem się udostępnić zadania jako open source. Możesz wykonać warsztaty jako zestaw do samodzielnego uczenia. Wiadomo, że to nie to samo co pełen warsztat, ale powinno dać Ci dobre podstawy do rozp...
Architektura 979 dni, 21 godzin, 59 minut temu 99 źrodło rozwiń
"Jak zapewnić wyjątkowość w Event Sourcing"? To jedno z najczęściej powtarzających się pytań. Najprostsza odpowiedź brzmi: „Czy naprawdę musisz?” Jeśli szukasz dokładniejszej, sprawdź mój nowy artykuł, opisałem ten problem w detalach.
Sztuka programowania 986 dni, 22 godziny, 21 minut temu 75 źrodło rozwiń
Moja wypowiedź na temat obecnej szalonej sytuacji na świecie i barbarzyńskiej wojnie, którą wypowiedziała Rosja, Ukrainie. Jest też sporo moich przemyśleń o naszej banieczce IT i tym, że "ja nie interesuje się polityką" już jest nieaktualne (o ile kiedykolwiek było). Jest też trochę linków popierających moje tezy.
"Immutable Value Objects" brzmi to poważnie i nieco strasznie. Jednakże, jest to prosty, praktyczny i bardzo przydatny koncept. Pomaga on w pisaniu mniej kodu, testów. Nasze klasy stają się bardziej przewidywalne. W swoim najnowszym artykule pokazałem na przykładzie, jak możesz skorzystać z tego konceptu.
Sztuka programowania 1006 dni, 21 godzin, 45 minut temu 150 źrodło rozwiń
Legacy Monolit to zwykle bestia. Rozmowy konferencyjne pchają nas do zmiany go w mikroserwisy, wydzielenia Bounded Contextów użycia Kubernetes itd. Są to często dobre rady, ale nie zawsze wykonalne. Są momenty, gdy musimy działać pragmatycznie. Migracja może być zbyt kosztowna i zbyt wymagająca czasowo. Jak przeskalować monolit, gdy kończy nam się czas? Przeczytaj w moim nowym artykule!
Architektura 1010 dni, 21 godzin, 58 minut temu 75 źrodło rozwiń
Testy na produkcji zwykle pojawiają się w niezbyt chlubnych, ale za to śmieszkowatych historiach. A to dziwne powiadomienie z banku, a to dzwoni do nas klient i pyta się co to jest za typ słownika "twoja stara ubiera się u Prady". Ja testowałem na produkcji i się tego nie wstydzę. Zobacz dlaczego.
Sztuka programowania 1021 dni, 19 godzin, 43 minuty temu 65 źrodło rozwiń
W ciągu ostatnich kilku dni kilka razy zostałem zapytany: „Jak używać silnie typowanych identyfikatorów w Marten?”. Postanowiłem napisać swoje przemyślenia na ten temat, bo trzeba znać kilka „sztuczek”, aby to zadziałało. Zobacz jak to zrobić w moim nowym artykule.
Sztuka programowania 1035 dni, 17 godzin, 48 minut temu 60 źrodło rozwiń
My programiści uwielbiamy pokazywać kreatywność w fantazyjnym formatowaniu, regułach stylistycznych, niezliczonych dyskusjach na temat wyższości spacji nad tabami. Dynamiczna składnia, czy mocno typowana? Tak czy śmak? Opisałem jak radzić sobie z tymi dyskusjami i efektywnie pracować z kodem i PRami.
Sztuka programowania 1042 dni, 22 godziny, 41 minut temu 82 źrodło rozwiń
„Nie, to się nigdy nie może wydarzyć!”. Czy znasz te zdanie? Założę się, że tak. Oprócz Dekalogu nie ma wiele zasad wyrytych w kamieniu. Systemy idealne to nie te, które są bezbłędne. Idealne systemy to takie, które odzwierciedlają proces biznesowy i są odporne na nasze błędy.
Sztuka programowania 1048 dni, 22 godziny, 23 minuty temu 89 źrodło rozwiń
Prosta implementacja Outbox'a w F#
Architektura 1056 dni, 22 godziny, 1 minutę temu 63 źrodło rozwiń
Jak zintegrować Martne z narzędziami typu Kafka czy nawet innymi bazami danych? Pomoże w tym funkcja zwana Async Daemon. W skrócie, jest to proces działający w tle, który zapewnia asynchroniczne przetwarzanie zdarzeń. Domyślnie używany jest do projekcji, ale może być używany jako baza do pub/sub.
Architektura 1056 dni, 22 godziny, 1 minutę temu 42 źrodło rozwiń
Snapshoty w Event Sourcing są przereklamowane. Nie powinny być używane jako domyślny wybór architektoniczny, ale raczej jako czysto techniczna optymalizacja. Czasami jednak może to być pragmatyczny wybór lub dobry kompromis. Napisałem, jak sobie z nimi radzić przy pomocy Marten.
Architektura 1063 dni, 21 godzin, 12 minut temu 65 źrodło rozwiń
.NET się zmienia. Staje się coraz lżejszy. Minimal API są tego przykładem. Pozwalają na szybkie zbudowanie API i uruchomienie nowego serwisu. W dobie mikroserwisów i Cloud jak znalazł. Przetestowałem, jak sprawdzą się z innym wzorcem promującym prosty podział kodu: CQRS. Czytaj dalej by zobaczyć jakie są moje wnioski.
Architektura 1070 dni, 22 godziny, 21 minut temu 281 źrodło rozwiń
Wersjonowanie zdarzeń dla osób uczących się Event Sourcing jest jak potwór, którym straszy się dzieci. To upiorna opowieść opowiedziana przy ognisku. Jest w tym trochę prawdy, bo migracje są zawsze wyzwaniem. W nowym artykule pokazałam proste, praktyczne wzory z próbkami, jak sobie z tym poradzić!
Architektura 1077 dni, 22 godziny, 12 minut temu 54 źrodło rozwiń