Тёмный

Modularny Monolit praktycznie 

DevMentors
Подписаться 7 тыс.
Просмотров 4,8 тыс.
50% 1

Jak praktycznie podejść do implementacji modularnego monolitu? Jak zaplanować architekturę solucji oraz cały proces konfiguracji i inicjalizacji aplikacji podzielonej na moduły? Jakie wzorce możemy wykorzystać w celu udostępnienia publicznego API do komunikacji międzymodułowej? Czy warto współdzielić wybrane abstrakcje oraz komponenty pomiędzy niezależnymi modułami? To tylko niektóre z przykładowych tematów omówionych w tym materiale.
Rozbudowane kursy:
devmentors.io/courses/modular...
devmentors.io/courses/modular...
Repozytoria:
github.com/devmentors/NPay
github.com/devmentors/Inflow
github.com/devmentors/Confab
github.com/devmentors/modular...
Timecodes:
00:00:00 - Intro
00:00:58 - Przegląd dostępnych repozytoriów z kodem
00:02:22 - Przykładowa solucja NPay (prostsza architektura)
00:08:34 - Logiczny podział bazy danych (schemat per moduł)
00:11:12 - Integracja przez zdarzenia
00:11:48 - Współdzielenie publicznego API modułów
00:14:35 - Przykładowa solucja Inflow (bardziej złożona architektura)
00:15:32 - Współdzielone abstrakcje oraz komponenty
00:17:10 - Inicjalizacja modułów, oparta na własnej konwencji
00:18:43 - Dedykowane ustawienia per moduł (appsettings)
00:20:45 - Kontekst bazy danych per moduł (DbContext)
00:22:16 - Integracja przez zdarzenia (lokalne kontrakty, bez współdzielonych projektów)
00:26:12 - Komponent IModuleClient (komunikacja międzymodułowa)
00:30:10 - Outro
Zapraszamy również na:
⚡️ Discord: devmentors.io/discord-pl
⚡️ Twitter: / dev_mentors_pl
⚡️ Instagram: / devmentors_pl

Опубликовано:

 

1 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 29   
@Dragonet17
@Dragonet17 Год назад
Super materiał
@smieciusmiec9816
@smieciusmiec9816 10 месяцев назад
Super, dzięki wielkie za film
@mateuszbienkowski2365
@mateuszbienkowski2365 Год назад
czegoś takiego szukałem, dzięki :)
@DanielŚmigiela
@DanielŚmigiela Год назад
świetnie omówione! dzięki :)
@michastachyra8892
@michastachyra8892 Год назад
Super materiał. A co najlepsze sam w swojej karierze programisty doszedłem do podobnych wniosków i stanu gdzie tego typu monolit nie jest taki straszny. Polecam również kanał codeopinion.
@raygan3
@raygan3 2 года назад
Super materiał! Czy kurs modular monolith pokazuje implementację production-ready authentykacji i autoryzacji uzytkownikow?
@DevMentorsPL
@DevMentorsPL 2 года назад
Dzięki! W modularnym monolicie używamy już gotowych komponentów (oczywiście dostępnych w kodzie) do obsługi AuthN/AuthZ, natomiast troszkę dokładniej (od podstaw) omawiamy to w kursie SOLID Web API. Niemniej jednak jest to raczej podstawowe wykorzystanie JWT i dostępnego middleware - jeżeli kogoś interesują zaawansowane tematy jak OAuth etc. to jest to ogromny materiał na osobny kurs :)
@mateuszlasota3226
@mateuszlasota3226 2 года назад
29:40 w czym robione grafiki z projektu githuba? polecasz jakiś wybrany program do data diagram flow itd?
@DevMentorsPL
@DevMentorsPL 2 года назад
Excalidraw :) A cała reszta to głównie Canva.
@adrian_franczak
@adrian_franczak 2 года назад
13:40 nie powinno się unikać jednak takiej komunikacji i trzymać tylko niezbędne dane w swoim serwisie na podstawie eventow?
@Hagalazz
@Hagalazz Год назад
jakie jest wasze podejście do i18n? od razu przychodzi do głowy osobny shareowalny moduł, ale mam tu na myśli przypadek modułu z tabelą z ogromna liczbą rekordów, którą trzeba poddać sortowaniu na poziomie bazy z przetłumaczonymi już wartościami. Jak byście to zrobili bez joina i dostępu do tabeli z innej schemy wiedząc, że wszystkie słowniki powinny być edytowane z 1 miejsca?
@DevMentorsPL
@DevMentorsPL Год назад
Bez szczegółów ciężko zaproponować "gotowca" ale nie widzę powodu dla którego mielibyśmy korelować "jedno miejsce" w UI z jednym miejscem w systemie. Każdy modul może mieć swoje lokalne tlumaczenia, a UI wie po dyskryminatorze do którego obszaru ma uderzac po konkrety. Druga opcja to single source of truth a w samych modulach jakas lokalna projekcja uzupełniana async. Oczywiście tu należałoby zderzyć to z "oplacalnoscia" danego podejścia. :) - Michau
@Pan_Policjant
@Pan_Policjant Год назад
mam pytanko czy junior powinien to umieć czy jest to dla juniora już z Jakis doświadczeniem?
@raygan3
@raygan3 2 года назад
Czy planujecie w ramach kursu stworzenie aplikacji typu SaaS z obsługą subskrypcji, płatności np stripe oraz obsługi limitowania uzytkownikow tzn w danym planie subskrypcyjnym uzytkownik może użyć x razy daną funkcję aplikacji. Nie mogłem znaleźć w internecie takich kursów ani żadnego sensownego projektu open source na którym można by się wzorować
@DevMentorsPL
@DevMentorsPL 2 года назад
Modularny monolit jako pełnoprawny kurs już został dawno wydany, natomiast to o czym piszesz, może uda się kiedyś zrealizować w ramach przykładowego wideo na kanale albo chociażby samodzielnego projektu w publicznym repozytorium :)
@p.t.8312
@p.t.8312 2 года назад
@@DevMentorsPL ja również chętnie bym to zobaczył
@sergiq2
@sergiq2 Год назад
Czy jest jakaś specjalna opcja do wykrywania kontrolerów API w .NET 7 ? Sugerowałem się dosyć mocno NPay tworząc własne rozwiązanie i nie widzę różnic pomiędzy moim Program.cs a Twoim, natomiast ani swagger ani /docs nie wykrywa mi kontrolerów które mam zdefiniowane w module .Api Różnica jest taka, że ja to tworzyłem przy wykorzystaniu najnowszego .NET (7) i zastanawiam się czy coś w międzyczasie się nie zmieniło.
@DevMentorsPL
@DevMentorsPL Год назад
Czy Twoje kontrolery są publiczne, czy z zakresem widoczności internal? Jeśli to drugie, to musisz nadpisać komponent odpowiedzialny za wykrywanie kontrolerów, żeby wyłapywał również klasy typu internal.
@sergiq2
@sergiq2 Год назад
@@DevMentorsPL kurcze, aż wstyd się przyznać, że zrobiłem tak lamerski błąd :D Dzięki za wskazówkę.
@DevMentorsPL
@DevMentorsPL Год назад
@@sergiq2 to jeden z tych mniej oczywistych błędów, łatwo to przeoczyć :D
@piotrkowalski3460
@piotrkowalski3460 2 года назад
kurs MM w języku angielskim różni się czymś poza projektem bazowym od tego po polsku?
@DevMentorsPL
@DevMentorsPL 2 года назад
nie ;)
@grisza878
@grisza878 2 года назад
@@DevMentorsPL może jakiś kod promocyjny dla osób posiadających wersję polską na zapoznanie się z wersją angielską po cenie odzwierciedlającej tę różnicę?
@adrian_franczak
@adrian_franczak 2 года назад
Z tym Use w każdym module to się zastanawiam jak to działa skoro kolejnosc ma znaczenie a pipeline jest jeden(?)
@DevMentorsPL
@DevMentorsPL 2 года назад
W ramach middleware można stosować również rozgałęzienia poprzez Map() lub MapWhen(), więc można tutaj wypracować pewną konwencję dotyczącą dedykowanego pipeline per moduł.
@aksel3925
@aksel3925 2 года назад
O kurde, tyle mięsa na początek tygodnia...
@DevMentorsPL
@DevMentorsPL 2 года назад
jest czas na przetrawienie :D
@adrian_franczak
@adrian_franczak 2 года назад
14:30 o error - nie ma problemu XD
@DevMentorsPL
@DevMentorsPL 2 года назад
Podpięty wolumen do kontenera Redisa, który działał w tle - bez znaczenia w tym kontekście XD