Wracam po dłużej przerwie do kodowania swojego schroniska. Ostatnio nie za bardzo miałem czas i chęć do jego rozwoju. Jednak nabyłem nowej perspektywy i postanowiłem ją wypróbować właśnie na tym projekcie. Zobaczymy co przyniesie nam taka aktualizacja podejścia.

Nie chodzi tutaj tylko o zmianę w architekturze, ale również o część mentalną. Często miałem problem z chęcią pisania zbyt “czystego” kodu przez co utykałem już na samym początku. Nawet paradoksalnie łapał mnie paraliż przed napisaniem jednej z linijki, bo przecież “wszystko musi być cacane”. Dlatego kod do każdego artykułu, który do tej pory przedstawiałem w tej serii, przychodził mi w wielkich bólach i mękach.

Jest to kontynuacja serii wpisów na temat przepisywania mojego starego projektu AnimalShelter. Jeśli jesteś zainteresowany/a jego początkiem to zapraszam do pierwszego artykułu.

Koniec z klepaniem się po pleckach…

Dobra… trzeba skończyć się z użalaniem się nad sobą i zacząć działać efektywnie. Naszła mnie refleksja, aby rozdzielić model akceptacji zwierząt. Po prostu zrobi się “smutnego” CRUDa do zapisu danych o zwierzętach. Będzie on natomiast emitował zdarzenie o utworzeniu nowego wniosku dotyczącego akceptacji danego pupila. Jeśli będziemy np. edytować jego dane to skupimy się tylko i wyłącznie na tym. Domena wniosków w ogóle się o tym nie dowie.

Przykład rozdzielenia CRUD od domeny
Przykład rozdzielenia CRUD od domeny

Jak widać przyda się tutaj podejście z dwoma bazami danych, które było poruszane w jednym z poprzednich wpisów. Daje to nam elastyczność w przypadku, gdybyśmy chcieli przejść na mikroserwisy o których pisałem już wcześniej. Mam nadzieję, że to podejście będzie proste przez co nie wypali mnie od razu. Jednak chciałbym pójść w tą stronę, aby nauczyć się rozbijać modularne monolity na mikroserwisy.

Tworzenie frontu

Mam świadomość, że pobieranie danych na frontend będzie problematyczne. Trzeba będzie dorobić dodatkową warstwę abstrakcji, która będzie łączyła dane z dwóch modułów. Załóżmy, że chciałbym wyświetlać użytkownikom tylko aktualnie dostępne zwierzęta w schronisku. Będzie, więc konieczne pobranie zaakceptowanych wniosków i na ich podstawie dociąganie danych pupilów. Jestem naprawdę ciekaw jak to wyjdzie w praktyce.

Przykład działania frontendu
Przykład działania frontendu

Podsumowanie

Mam nadzieję, że świeże siły tak szybko nie opadną. Będę starał się szybciej dowozić wartość, aby nie stracić zapału. Oczywiście każdy krok pojawi się w tej serii. Niedawno uświadomiłem sobie też, że moje wpisy naśladują pomysł z konkursu Daj się poznać Maćka Aniserowicza. Tam ochotnicy popełniali artykuły na temat aplikacji, którą tworzyli. Czyli faktycznie to samo co ja teraz robię. Szkoda, że ta inicjatywa nie jest dalej kontynuowana. No, ale nic. Działam dalej i mam nadzieję, że już niedługo będę mógł się pochwalić rezultatem swoich prac.