Czysta architektura w Pythonie

utworzone przez | 23/08/2019 | architektura

Od wielu lat szukam lepszych rozwiązań i praktyk programistycznych. Robię co w mojej mocy, żeby mój kod był czytelny, prosty oraz, co najważniejsze, żeby inni mogli go rozwijać bez wyrzucania z siebie tony przekleństw. Nie jest to łatwe zadanie, zawsze mi czegoś brakuje, coś mogłoby wyglądać lepiej lub być inaczej zorganizowane. 

Przez większość czasu skupiałem się na nazewnictwie, dobrej strukturze kodu, trzymaniu się podstawowych wzorców projektowych. To dawało systematyczny, lecz powolny wzrost jakości mojego kodu. Co gorsza, nie czułem, żeby to była najlepsza droga, jednak tylko taką znałem.

Dużo zmieniło się w chwili gdy “zaprzyjaźniłem się” z dwójką Panów, Robertem C. Martinem, zwanym wujkiem Bobem, oraz Kevlinem Henney’em. Obaj wprowadzili mnie do świata czystej architektury i to był ogromny skok. Znalazłem paliwo rakietowe, którego od dawna szukałem 😉

Czysta architektura nie jest zbyt popularna w środowisku Pythona. Wiele tutoriali, samo Django i ogólnie dostępne materiały, raczej korzystają z tradycyjnego podejścia żądanie-odpowiedź. Na początek, ba nawet na dłuższą metę, takie podejście wystarcza. 

Jednak Python staje się coraz bardziej popularny w środowisku enterprise i nie mówię tu o Star Treku 🚀, tylko o bardzo zaawansowanych systemach. Takie aplikacje są rozwijane i utrzymywane latami. Tradycyjne podejście nie wystarcza i stwarza wiele wyzwań. Jedno z ciekawszych, to aktualizacja technologii. Gdy korzystasz z czystej architektury, nawet osoba bez większego doświadczenia może nie tylko zaktualizować, ale i całkowicie wymienić dowolny z twoich frameworków 🙀

Mini projekt

Celem serii “CA w Pythonie” będzie stworzenie krok po kroku mini projektu. Nie będzie to jednak projekt prezentujący jakąś technologię czy framework. Będzie to zestaw połączonych narzędzi, które tworzą spójną całość. 

Najważniejsze w tym projekcie będzie bazowanie na prawdziwej, złożonej aplikacji, gdzie te rozwiązania się dobrze sprawdzają. Będę opisywać dużo pobocznych rzeczy, nie związanych bezpośrednio z czystą architekturą, ale potrzebnych do zbudowania SOLID-nego kodu. Omówimy np takie świeżynki jak typowanie czy dataclasses.

Plan podróży

W czasie naszej podróży 🌎 będziemy dużo kodować. To według mnie najlepszy sposób na prezentacje tego tematu. Słowa można różnie interpretować, ale kodu już nie.

Domena aplikacji

Zaczniemy od najważniejszej rzeczy w naszym mini projekcie, czyli domeny aplikacji. Opiszemy dane na których będziemy pracować oraz jakie operacje będziemy chcieli wykonywać – zaimplementujemy czystą logikę biznesową.

Testy jednostkowe w czystej architekturze

Nauczymy się jak powinny wyglądać testy jednostkowe w czystej architekturze. Takich testów pozazdrości ci każdy programista! 😎 To powinna być największa zachęta do dalszej nauki!

Nie zaczynaj od bazy danych 🙈

Przygotowanie czystej architektury bez bazy danych. Wujek Bob zbudował swój system trzymając wszystkie dane w zwykłych plikach tekstowych. Moja propozycja jest trochę inna, ale bazuje na jego pomyśle.

Pierwsza zależność – wystawianie API

Tak, będziemy budować API. Do tego będziemy musieli skorzystać z jakiejś biblioteki, frameworka webowego. Czy to ważne jakiego? Nie 🙂

Zabezpieczenie domeny – wyznaczanie granic 👮

Ostatnim kluczowym elementem czystej architektury jest zabezpieczenie naszej domeny. Tak jak wszystkie ważne elementy naszego projektu, także granice należy w jakiś sposób zabezpieczyć.

10, 9, 8 …

Odliczanie się zaczęło! Za dwa tygodnie omówimy domenę aplikacji i jak możemy ją zbudować w naszym ulubionym języku – Pythonie  🐍👋

O autorze

O autorze

Grzegorz Kocjan

8 lat z Pythonem to wspaniała przygoda, nieważne czy musiałem naprawić błąd na wczoraj, czy zaprojektować zaawansowany i wydajny system, Python nigdy mnie nie zawiódł! 🐍

Czysta architektura okiem ekipy migawka.it

Jakie problemy napotkaliśmy na początku? W czym nam pomogła? Kiedy na pewno z niej nie skorzystamy?