Architektura mikrousługowa a analiza systemowa

mikrousługi.jpgAby jakoś zrównoważyć narzekania na korporacyjnego edżajla, drugi dzisiejszy wpis będzie bardziej inżynierski. Ostatnimi czasy mam okazję pracować nad systemami o architekturze mikrousługowej. Oczywiście jako analityk. I z tego analitycznego punktu widzenia, można powiedzieć, że architektura, jak architektura, za jednym wyjątkiem. Wydaje się bowiem, iż w przypadku tej konkretnej architektury, mniejszego znaczenia nabiera klasyk analizy, czyli analityczny model danych, rozumiany jako jednolita struktura opisująca dane, jakimi należy się posługiwać, aby można było zrealizować deklarowane funkcjonalności systemu.

Dlaczego? O tym będzie poniższy wpis.

Usługa

Mikrousługa, z analitycznego punktu widzenia, to usługa jak każda inna. Powinna mieć opisane zachowanie (jak realizuje kontrakt) oraz strukturę danych wejściowych (żądanie) i wyjściowych (odpowiedź). Koncepcyjnie (realizacja może wyglądać różnie w zależności od narzędzia do modelowania, metodyki i wynikających z niej standardów poziomu szczegółowości opisu), model usługi powinien zawierać powiązane ze sobą elementy przedstawione na rysunku poniżej.

Struktura opisu mikrousługi

Struktura opisu mikrousługi

Klient usługi

Załóżmy dla uproszczenia, że analityczną warstwą kliencką usługi będzie klasyczny przypadek użycia. Przebieg realizacji przypadku użycia, będzie zapewne opisany diagramem aktywności lub sekwencji (specyfika stosowanej metodyki). Bez względu na rodzaj diagramu, w momentach, w których zaistnieje zapotrzebowanie na dane, wymagane będzie odwołanie do usługi. Przykład takiej sytuacji prezentuje poniższy rysunek.

Wywołanie mikrousługi z przebiegu przypadku użycia

Wywołanie mikrousługi z przebiegu przypadku użycia

Moment wywołania usługi jest reprezentowany stosowną akcją, która w rożnych narzędziach do modelowania będzie troszkę inaczej wyglądała. Teoretycznie, na pinie wejściowym powinny się znaleźć dane zgodne co do typu z typem REQUEST z modelu opisu usługi. Pin wyjściowy jest zgodny, co do typu, z RESPONSE z modelu opisu usługi. Problem z pinem wejściowym zgodnym z teorią byłby taki, że należałoby albo dodać osobną akcję, która tworzy strukturę żądania na bazie dostępnych danych, albo transformację na przepływie danych, która dokonałaby przekształceń. W naszym podejściu stosujemy delikatne obejście – aby nie komplikować przejść i nie rozbudowywać diagramu o dodatkowe akcje, przypisanie danych pod cechy żądania opisujemy jako pre-condition w akcji wywołania usługi. W języku OCL przyjmuje to następującą postać.

pre:

let req: REQUEST.oclInNew() and
req.cecha1 = daneWejścioweAkcji.cechaA and 
...

Wynik wywołania usługi jest dostępny w pinie wyjściowym akcji. Tak pozyskane dane mogą być wykorzystywane w ramach przypadku użycia. Dostęp do nowych danych wymaga analogicznego wywołania kolejnej usługi.

Specyficzną cechą tego podejścia jest fakt, iż jeśli nawet w różnych usługach zwracamy logicznie te same dane, to faktycznie są one tylko takie same, gdyż znajdują się w różnych obiektach, czy strukturach danych. Specyfika ta powoduje, iż jeden logiczny model danych dla tego typu aplikacji aplikacji byłby tworem czysto abstrakcyjnym, którego zakresem zastosowań byłby jedynie model. Co więcej, odwoływanie się do niego w ramach przebiegów przypadków użycia byłoby okupione dużym wysiłkiem wynikającym z konieczności wiązania danych z mikrousług z jednolitym modelem danych.

Tego typu sytuacja nie ma zwykle miejsca w tradycyjnych, nazwijmy to, architekturach, w których aplikacja składa się z własnego frontendu i własnych danych. W takim kontekście, model danych służy zwykle jako punkt wyjścia dla konstrukcji modelu trwałego (najczęściej relacyjnej bazy danych), czy też, po konwersji do formatu XMI, jako wsad do tworzenia plików mapujących narzędzi OR-mapping. Z modelu logicznego można także generować skryptami MDA fragmenty docelowego kodu źródłowego, w szczególności deklaracje klas, konstruktory, destruktory oraz operacje trawersujące asocjacje.

Nie mając tego typu korzyści, wydaje się, że nie warto inwestować pracy w czysto abstrakcyjną warstwę opisu. Coś oczywiście tracimy, ale zyskujemy bezcenny czas.

 

 

Ilustracja: https://pl.freepik.com/darmowe-zdjecie/abstrakcyjne-geometrycznej-tła-z-futurystyczne-projektu_1104905.htm Designed by Kjpargeter


Licencja Creative Commons
Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa – Bez utworów zależnych 4.0 Międzynarodowe.

Edżajl 2018 (level Corpo, level hard)

agile2018mediumDługo nosiłem się z zamiarem powrotu do pisania. W końcu to nastąpiło, ale po raz kolejny sprawdziła się zasada, że rzecz raz odłożona dalej odkłada się już sama. Ostatecznie, zaniosłem się i idąc za ciosem postanowiłem kontynuować wątek zwinności. Dlaczego? Bo chyba nie da się go nie kontynuować, obserwując wszechobecne uzwinnianie się zespołów, metod pracy i całych organizacji. I ten ostatni poziom wydaje się być groźny. I o tym, w skali korporacyjnej, poniżej.

Co to jest ten Edżajl?

No właśnie. Na początku mojej przygody z tym trendem, było to nic innego jak sposób organizacji pracy w zespole projektowym. Kilka prostych zasad, proste narzędzie (stosowaliśmy ScrumDesk) i można było się w to pobawić. Fundamentalnych usprawnień nie odnotowaliśmy, ale miałem wrażenie, że w jakimś stopniu wzrosło poczucie świadomości stanu prac w zespole. Od strony inżynierskiej Scrum nie wpłynął na stosowane metody pracy. Tak było wiele lat temu.

Tymczasem mamy rok 2018. Mamy Edżajl. I tego Edżajla już nie rozumiem. Co oznacza, że nie rozumiem większości otaczającego mnie świata zawodowego.

Poziom IT

Co o nim wiem. Wiem, że Edżajl to klimat pracy. Ma być korzystny. O klimat troszczą się Edżajlkołczowie. Piękni dwudziestoletni, którzy są w stanie powiedzieć jakie metody pracy stosować, a jakie nie, bo się nie sprawdzają. Sprawdzają się metody proste albo nowe. Nie sprawdzają się metody kojarzone z Łoterfolem – siedliskiem zła, który kreatywnych ludzi wciskał w tryby biurokratycznej machiny i pozbawiał wpływu na cokolwiek.

Skąd to wiedzą? Wiedzą stąd, że spotykają się w swoim gronie pięknych dwudziestoletnich i dyskutują. Na tych spotkaniach panuje dobry klimat, skutkujący szczerą, otwartą rozmową, z której to powstają nowe pomysły. W sposób otwarty Edżajlkołczowie komunikują swoje przemyślenia zespołom edżajlowym. Ponieważ pracujemy w duchu akceptowania zmian i poprawek, nie przejmujemy się tym, że nowe pomysły często przeczą starym pomysłom. Refaktor idei, czyli pozytyw.

Edżajlkołczowie pracują ze swoimi zespołami. Zespoły mają ograniczoną liczebność, gdyż zespoły zbyt duże są nieefektywne. Przy większych przedsięwzięciach, powstaje wiele zespołów mających realizować wspólny cel. Ale zespoły są autonomiczne i nikt, ale to Nikt Spoza Zespołu, nie może czegokolwiek wrzucić do Baklogu. Tak więc zespoły muszą się ze sobą dogadywać. Customer collaboration over contract negotiation. Tako rzecze Manifest. Jak się uda, to się dogadają. Jak się nie uda, to zespół, który liczył ale się przeliczył, w swojej autonomiczności musi czekać na autonomię innego zespołu. Ale tym się nie martwimy, bo ważne, że klimat rozmów był korzystny. Kiedyś się dowiezie. Na razie zaślepimy, wdrożymy, i jakoś to będzie. Responding to change over following a plan. No przecież.

W dużych organizacjach systemów jest dużo. Najczęściej zmiana pociąga za sobą zmianę w więcej niż jednym systemie. Autonomiczny zespół musi więc posiadać u siebie specjalistów, którzy będą w stanie dokonać zmian w każdym z systemów. Ale nie zawsze się da. Bo jeśli zmiana dotyka kilkunastu systemów, to posiadanie choćby jednego specjalisty u siebie spowodowałoby przekroczenie maksymalnej liczby osób w zespole. Co więcej, może się także nie udać z racji tego, że system jest z gatunku centralnych i z założenia ma być dobrem wspólnym. A jeśli dobro wspólne, to nie prywatne. I na przykład sposób specyfikowania wymagań dla takiego dobra wspólnego może się różnić od tego, który wypracował zespół autonomiczny. Co więcej, zespół systemu centralnego może mieć całkiem rozbieżne z zespołem edżajlowym priorytety. I znowu trzeba czekać. I zaślepiać.

Manifest rzecze także  Working software over comprehensive documentation. Każdy przedszkolak, nie mówiąc o Edżajlkołczach, wie, że do produkcji softu potrzeba epików, storysów i tasków. Można też kanwasy, łajefrejmy i inne persony. Komunikacja, komunikacja, lekkość, zwinność. Tego nam potrzeba. Życie takiego bytu jest tak burzliwe, jak krótkie. Dyskusja, spory, poprawki, dyskusja, poprawki, zaimplementowane, DOD spełnione, poszło! A po roku jakiś inny, Obcy zespół musi sięgnąć do koncepcji rozwiązania. I męczy, i dręczy, i nawet próbuje się wbić do Baklogu autonomicznego systemu, ale ten ma przecież swoje, autonomiczne priorytety. Się uda, się wbije. Się nie uda, to powstanie kopia, łata, cokolwiek, co pozwoli Obcemu zrealizować swoje, autonomiczne plany. Że to niepotrzebne? Że to nadmiarowe? Kozioł ofiarny, by móc pracować w dobrym klimacie.

W bardzo dużych organizacjach, systemów i zespołów potrafi być bardzo dużo. Wprawdzie każdy jest zmotywowany, skoncentrowany na celu, ale jakaś kontrola – pardon, liderszip – być musi. Ktoś komuś jakiś raport na biurko czasami musi wrzucić. Najlepiej jakby z terminami, kosztami. Oczywiście wszystko edżajlowo, ale tak gdzieś pod spodem, jakby jakiegoś Ganta? Tylko, żeby nikt nie widział.

Poziom organizacji

No ale jak to zrobić? Ha! Proste! Tu do akcji wkraczają piękni trzydziestoletni – mistrzowie fechtunku słowem i pałerpojntem. Ci, którzy karierę pięknych dwudziestoletnich mają za sobą i doradzają. Oni mają wiedzę Świata, gdyż w takich organizacjach pracują, co to taką wiedzą dysponują. I oni wiedzą, że taka jedna firma, to kiedyś, podzieliła się na Trajby, Składy, Czaptery. I oni wiedzą, że tak trzeba postąpić, aby duch edżajla spłynął na całą organizację, a nie tylko na ajti. Wprawdzie piękni dwudziestoletni nie ogarnęli jeszcze zagadnienia współpracy w skali mikro, ale nie przeszkadza to we wdrażaniu zmiany w skali makro.

BPRRolnictwo w Polsce ma długą historię. I co, jak co, ale orki nikt nie musi nas uczyć. Zaorajmy więc dotychczasowe struktury i wdrażajmy podejścia autonomiczne na poziomie biznesu. Piękni trzydziestoletni nie pamiętają jednak, że tego typu radykalne zmiany historia zarządzania zna i ma za sobą. Jedną z najbardziej zbliżonych do Rewolucji Edżajl jest teoria Business Process Reingeenering, opisana przez Hammera i Champy’ego w latach dziewięćdziesiątych w książce Reengineering the Corporation: A Manifesto for Business Revolution. Doświadczenia z  wdrażania tej metody dały w efekcie łagodniejsze podejścia typu Business Process Improvement. Ale to było dawno, a teraz jest Edżajl. Będzie Pan zadowolony.

Tak więc, mamy nowe struktury organizacji edżajlowej. Wywiedzione wprost z koncepcji budowy oprogramowania, metody edżajl zaczynają rządzić biznesem. Edżajl to prostota, wobec czego wraz z nowymi strukturami dekretowane są redukcje (czytaj, uproszczenia) ról i stanowisk. Wprawdzie pracę trzeba wykonać, ale będzie jakoś prościej, bo stanowisk i ról mniej. Poza tym, edżajl to wymienność, więc zawsze można komuś obok coś wrzucić – niech czuje, że ma Edżajla. Czyli prościej i w dobrym klimacie. Nowe struktury są autonomiczne. Nie troszczą się szczególnie o inne, wszystko hermetyzują u siebie i dla siebie. Oczywiście za wyjątkiem tych obszarów, których ukryć się nie da. Ale tutaj jakoś trzeba się dogadać.

Każda zmiana ma jakieś skutki uboczne. To oczywiste. Wśród lekko zdezorientowanych skutków ubocznych stoją ramię w ramię osoby zajmujące się procesami biznesowymi, architekci biznesowi, architekci IT. Pojawia się bowiem zasadnicze pytanie – co ma być optymalizowane – praca Trajbów, czy praca całej organizacji? Co, jeśli te cele nie są zbieżne? Idąc dalej, jak tworzyć architekturę biznesową (choćby pojęcia) – dla Trajbu czy organizacji? Mamy architektury IT dla Trajbów czy dla organizacji? Jak wdrażać jednolite standardy w konstelacji autonomicznych jednostek? Senioredżajlkołczowie to wiedzą. Proponują jednostki wskrośtrajbowe. Ale to oznacza, że Trajb nie jest już tak autonomiczny, jak to obiecywali. Ale kto jest ważniejszy – ten od Wskroś, czy ten w Pionie? Pozostaje się dogadać.

I różne takie

Mylnym byłby wniosek, że tak fundamentalne problemy dotyczą jedynie poziomu organizacji. Na poziomach zespołów także mamy dylematy z gatunku dawno rozwiązanych ale w Edżajl fundamentalnych. Czy analiza powinna być elementem sprintów, czy też wyciągnąć ja poza sprinty, gdyż jest trudna do oszacowania. Wyciągnięcie jej poza sprint skutkuje rozpoczynaniem prac ze stabilnymi wymaganiami. Ale w takim razie w ramach czego powinna być prowadzona analiza? Jeśli zaś jest prowadzona w sprincie, opóźnienia stają się nagminne. Czy user story to wymaganie, czy coś innego? Jak się mają te wymagania do innych metod ich specyfikowania. Jak połączyć repozytorium user story z repozytoriami na przykład narzędzi do opisu wymagań technikami inżynierskimi (UML, BPMN, SysML). Czy elementem zmiany jest też poziom organizacji? Jeśli tak, jaki zespół powinien to robić? Ciężko sobie wyobrazić nieduży zespół posiadający w swoim składzie architektów, analityków biznesowych, analityków systemowych, specjalistów od usprawniania procesów, kontroli procesów, itd. Różne zespoły? To jaki produkt jest prezentowany Prodaktołnerom? Diagram? Jakby wbrew fundamentalnym obietnicom Edżajl.

To co to jest ten Edżajl?

No właśnie. Minął rok i dalej nie wiem. Intuicja podpowiada mi, że to prosta droga ku porażce. Że to już było. Że obietnice aż kłują populizmem w oczy. To, że ja nie rozumiem, co to Edżajl, to jeszcze nie problem. Problemem jest to, że wdrażający Edżajl, mam wrażenie, także nie wiedzą, co to tak do końca jest.

Ale kilkudziesięcioletnie doświadczenie mówi też, poczekajmy. Zobaczymy co z tego wyjdzie.  Idąc tym tokiem myślenia, mam wrażenie, że  Edżaj  zakończy swój dynamiczny żywot tak jak inne koncepcje, które miały zrewolucjonizować świat, a ostatecznie stały się małą częścią czegoś większego, dużo bardziej skomplikowanego. Pytanie oczywiście o koszty tej nauki. Ale to już inna bajka.

Ilustracja: https://pl.freepik.com/darmowe-wektory/ręcznie-rysowane-eleganckie-baleriny_849800.htm Designed by Freepik

 


Licencja Creative Commons
Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa – Bez utworów zależnych 4.0 Międzynarodowe.