Komunikacja osmotyczna = wzorzec publish/ subscribe?

Poprzedni wpis dotyczący komunikacji osmotycznej został skomentowany na innym blogu („Komunikacja osmotyczna czyli po Brzytwie przypadków użycia” na it-consulting.pl/blog), ze wskazaniem, że „komunikacja osmotyczna” to inna nazwa dla wzorca „publish/subscribe”. Muszę przyznać, że nie do końca się mogę zgodzić.

Należy zwrócić uwagę na pojęcie „Subscriber” – oznacza ono, że odbiorca podłączył się do huba, rozdzielnika, czy tematu. „Publisher” określa kto i do czego może się „subscriber” podłączyć. Komunikacja jest jednokierunkowa i wskazuje na pewne rozdzielenie „publikującego” oraz „subskrybującego”, o czym można poczytać na stronach MSDN.

W przypadku komunikacji osmotycznej jest mowa bardziej o dynamicznych rozwiązaniach, gdzie „odbiorcy” nie subskrybowali danej informacji, a jedynie reagują na nią bądź nie. Komunikacja jest w takiej sytuacji dwukierunkowa i nie ma określenia kto, czym może się zainteresować i czy może się wypowiedzieć. Reakcja odbiorcy może spowodować dalszą reakcję innych osób. O ile dobrze rozumiem w przypadku modelu „publish/subscribe” odbiorca komunikatu musiałby określić ponownie swoich „subscriber’ów”.

Moim zdaniem Alistair Cockbourn spojrzał z wyższego poziomu abstrakcji i nie skupił się na rozwiązaniu systemowym. Rozwiązanie z wzorcem „publish/subscribe” umiejscawia rozważania na poziomie rozwiązań informatycznych, wspierane przez odpowiednie modele, narzędzia, opisy wymagań. Jednakże nie zawsze o to chodzi.

Dlatego też, brzytwa Ockhama raczej nie znajduje tutaj zastosowania – trudno mówić o powieleniu bytów. Jednakże zaznaczam, że jest to moja opinia. Mogę się jedynie zgodzić, że od komunikacji osmotycznej możemy przejść do wskazanego wzorca, choć można by spróbować także poszukać innych rozwiązań „biznesowych” wspominanych przy metodach zwinnych.

Reklama

Komunikacja osmotyczna a proces

Załóżmy, że w pewnej jednostce ma miejsce proces składający się z 4 kroków.  W celu zaspokojenia potrzeby inicjatora procesu należy zawsze wykonać wszystkie 4 kroki. Każdy z kroków realizowany jest w osobnym 4 osobowym zespole. Taką sytuację obrazuje poniższy diagram:W trakcie procesu, wykonawca kroku 2, po jego podjęciu z wewnętrznej kolejki zadań, zwraca się do pozostałych członków zespołu z pytaniem. Elipsa umiejscowiona wokół wykonawcy obrazuje potencjalnych odbiorców zadanego pytania. Jedni z nich zareagują na pytanie, a inni nie. Najprawdopodobniej odpowiedź padnie od członków zespołu, jednakże może także wywołać reakcję członka zespołu odpowiedzialnego za krok 3. Może to być prosty komunikat o czym nie można zapomnieć albo na co zwrócić uwagę podczas realizacji zadania.

Jest to specyficzne dla tzw. komunikacji osmotycznej, która może pozytywnie wpłynąć na realizację procesu. Słyszenie o problemie lub poznanie go z wyprzedzeniem może ułatwić rozwiązanie postanowionego problemu.

Alistair Cockburn przytacza na swojej stronie definicję stwierdzającą, że „komunikacja osmotyczna oznacza, że informacja przepływa w tle słyszana przez członków zespołu, dzięki czemu mogą zapoznać się z informacją jakby przez osmozę. Zwykle jest to realizowane przez zespół siedzący w jednym pomieszczeniu. W momencie, gdy jedna osoba zadaje pytanie, inni w pomieszczeniu mogą albo zareagować lub zignorować pytanie, zaangażować się w dyskusję lub kontynuować swoją pracę.”