Gruntowna znajomosc serwera plikacji w przypadku Software Architekta

0

Witam,

mialbym pytanie.
Jesli w jakim projekcie uzywany jest jakis serwer aplikacji (np. JBoss AEP, WebLogic) to wiadomo ze zarowno developerzy jak i Software Architect musza posiadac podstawowa wiedze co do uzywania i konfiguracji tego serwera.

Ale co jesli chodzi o glebsza wiedze, Tuning w przypadku Software Architekta. Powinien on miec tez gleboka wiedze w konfigurowaniu, tuningu serwera aplikacji czy nie koniecznie i tym zajmuje sie DevOps albo jeszcze ktos inny?

Jak to wyglada w waszych projektach?

1

Software Architekt to powinien wiedzieć jak łatwo pozbyć się tego aplikacyjnego ustrojstwa :D

Jak już musisz w tym siedzieć - architekt to osoba, która wie wszystko. Potrafi wyjaśnić DLACZEGO używamy tego JBossa. Co on nam daje. Jakie są zyski. W dodatku powinien być dobrym developerem. W swojeje minimum 10 letniej karierze powinien tuningować praktycznie większość serwerów, ale niekoniecznie robić to już na produkcji osobiście.

1

Ogólnie architekt powinien się martwić o coś innego niż konfiguracja czy tuning serwera aplikacyjnego :) To są problemy związane z wdrażaniem oprogramowania. Z perspektywy architekta serwer aplikacyjny jest po prostu pudełkiem o określonej funkcjonalności i interfejsach, które umożliwiają interakcje z pudełkiem.

Architekt odpowiada za przygotowanie architektury, która ma umożliwiać rozwiązanie typowych zmartwień użytkowników tejże architektury: programistów, użytkowników bieznesowych, administratorów, "bezpieczników", ...

Zmartwienia te przekładają się na wymagania funkcjonalne i niefunkcjonalne i architektura ma umożliwiać ich spełnienie. Architekt powinien wiedzieć jak dane pudełko umożliwi realizację wymagań dotyczących skalowalności/redundancji/load balancingu/wysokiej wydajności, ...

Czy warto znać jak działają serwery aplikacyjne? Tak, bo można ocenić czy będą przydatne w rozwiązywaniu konkretnego problemu. To nie jest tak, ze serwer aplikacyjny zawsze jest doskonały do wszystkiego.

0
yarel napisał(a):

Ogólnie architekt powinien się martwić o coś innego niż konfiguracja czy tuning serwera aplikacyjnego :) To są problemy związane z wdrażaniem oprogramowania. Z perspektywy architekta serwer aplikacyjny jest po prostu pudełkiem o określonej funkcjonalności i interfejsach, które umożliwiają interakcje z pudełkiem.

Architekt odpowiada za przygotowanie architektury, która ma umożliwiać rozwiązanie typowych zmartwień użytkowników tejże architektury: programistów, użytkowników bieznesowych, administratorów, "bezpieczników", ...

Zmartwienia te przekładają się na wymagania funkcjonalne i niefunkcjonalne i architektura ma umożliwiać ich spełnienie. Architekt powinien wiedzieć jak dane pudełko umożliwi realizację wymagań dotyczących skalowalności/redundancji/load balancingu/wysokiej wydajności, ...

Czy warto znać jak działają serwery aplikacyjne? Tak, bo można ocenić czy będą przydatne w rozwiązywaniu konkretnego problemu. To nie jest tak, ze serwer aplikacyjny zawsze jest doskonały do wszystkiego.

Czyli, ja wielki architekt wymyślę, a wy babrajcie się w tym błocie.

Według Twojej definicji to siedzi sobie smutny człowieczek łączy kreskami prostokąty i beczki na diagramach, a później inni muszą z tym szlamem walczyć.
Jego wiedza to legendy, że serwery aplikacyjne są bezpieczne i skalowalne.
Jeżeli staruje projekt i jego wymaganiami są bezpieczeństwo / redundancja, a osoba od razu mówi, że robimy na WebLogicu to jest to smutne.
Tak "zaprojektowany system" nigdy nie pozwoli uwolnić się od tego WebLogica,

Architekt powinien projektować tak system, aby oddzielać wartość domenową od technologi. Odraczać decyzję czy wybieramy WebLogica czy Spring 5 jak się tylko da.

EDIT1: Oczywiście w systemach głębokich. W płytkich od razu PHP i goł goł goł. (Architekta nie potrzeba)

0
nie100sowny napisał(a):

Software Architekt to powinien wiedzieć jak łatwo pozbyć się tego aplikacyjnego ustrojstwa :D

Jak już musisz w tym siedzieć - architekt to osoba, która wie wszystko. Potrafi wyjaśnić DLACZEGO używamy tego JBossa. Co on nam daje. Jakie są zyski. W dodatku powinien być dobrym developerem. W swojeje minimum 10 letniej karierze powinien tuningować praktycznie większość serwerów, ale niekoniecznie robić to już na produkcji osobiście.

Zgadzam się z tym, z tą różnicą, że architekt powinien móc się poruszać po różnych technologiach i umieć stwierdzić gdzie zastosować JBossa a gdzie Fat Jar.
Gdzie potrzebny jest Oracle Enterprise + JEE a gdzie lepiej zastosować MongoDB + JS.
Powinien też umieć stwierdzić co jak się z czym powinno łączyć - wg jakich protokołów, jak często.
Może niekoniecznie powinien umieć optymalizować SQL-a czy JBossa, ale powinien wiedzieć jakie są ograniczenia takich technologii i w jakich dziedzinach żadna optymalizacja nie pomoże (albo będzie kulawa).

Zresztą, wg mnie architekci powinni być na różnym poziomie - od całego IT do poziomu jednej aplikacji. To niekoniecznie musi być jeden omnibus.

0

Dzieki wielkie wszystkim za odpowiedzi.
Napiszcie mi jeszcze prosze czy u was Software Architekt tez programuje? Czy generalnie Software Architekt powinien tez programowac.
Moim zdanie zdecydowanie tak, szczegolnie Software Architect powinien najbardzie ze tak powiem strategiczne i kluczowe rzeczy.
Ale pyteam bo slyszalem ze nie jest tak wszedzie.

2

Nie ma dobrej - jednej definicji Software Architecta. Nie wiadomo co powinien robić ani na czym się znać.
W wiekszości firm Software Architekt to po prostu gość, który wie jak zrobić dobrze system, który zrypał pięć lat temu

0

Zadaniem architekta jest zmniejszenie kosztów operacyjnych działu IT:)

1

@RobertVox1977: "A kto zajmuje sie tuningiem i wdrazaniem? DevOps czy czy Administratorzy?"

DevOps/Administratorzy to tylko role w ramach organizacji/projektów. Obowiązki danej roli wynikają już z tego jak konkretna organizacja, czy projekt do tego podchodzi. W praktyce zakres prac i odpowiedzialność definiuje umowa między stronami.

Zamawiający ma wymagania co do oczekiwanej wydajności, ale w języku biznesowym (słusznie, bo nie musi mieć wiedzy technicznej
i nie obchodzą go inserty, webservisy czy zapytania do LDAP ), np. :

  • równoczesna praca N użytkowników,
  • czas odpowiedzi na akcje użytkownika < Y sekund
  • czas generowania raportu max. 1h
  • ...
    Dostawca na podstawie wymagań wydajnościowych i znajomości swojego systemu (albo braku ;-)) proponuje sprzęt, na którym oprogramowanie dostawcy będzie działać.
    Teraz tuning, który wg mnie jest reakcją na niespełnienie wymagań wydajnościowych, bo po co robić tuning czegoś co spełnia wymagania wydajnościowe i pracuje na sprzęcie, który dostawca wskazał? Z perspektywy zamawiającego prosta piłka "nie działa, wbrew zapewnieniom z umowy" i teraz tak, jeśli jesteśmy:
  • przed akceptacją rozwiązania (na etapie testów akceptacyjnych/wydajnościowych) -> dostawca musi naprawić (bo nie będzie akceptacji i kasy, a może będą kary umowne)
  • po akceptacji, w grę wchodzą zapisy o świadczeniu wsparcia i poziomach tego wsparcia (tzw. Service Level Agreements)

W praktyce kończy się tak, ze ktoś musi znaleźć ziomka, który przeanalizuje sytuację i ją poprawi. Jak sobie tego ziomka nazwie, DevOps ("zrobimy to"), czy Admin ("nasz admin od Linuxa zrobi tuning") to już jego wola.

Osobiście bardzo lubię zagadnienia perfromance tuning/capacity planning/analizę sytuacji, które miały miejsce, a już nie występują. Niestety nie udało mi się znaleźć kogoś kto chciałby płacić tylko i wyłącznie za takie rzeczy ;-)

0
nie100sowny napisał(a):

Czyli, ja wielki architekt wymyślę, a wy babrajcie się w tym błocie.
Według Twojej definicji to siedzi sobie smutny człowieczek łączy kreskami prostokąty i beczki na diagramach, a później inni muszą z tym szlamem walczyć.

To już Twoje postrzeganie roli architekta. Jak dla mnie efektem/produktem pracy architekta jest architektura, nic do rzeczy mają przymioty/wady architekta.
W jaki sposób powinna być dokumentowana, żeby była zrozumiałą przez innych to inna historia. Standardy wydają się właściwym podejściem ;)

Jego wiedza to legendy, że serwery aplikacyjne są bezpieczne i skalowalne.
Jeżeli staruje projekt i jego wymaganiami są bezpieczeństwo / redundancja, a osoba od razu mówi, że robimy na WebLogicu to jest to smutne.
Tak "zaprojektowany system" nigdy nie pozwoli uwolnić się od tego WebLogica,
Architekt powinien projektować tak system, aby oddzielać wartość domenową od technologi. Odraczać decyzję czy wybieramy WebLogica czy Spring 5 jak się tylko da.
EDIT1: Oczywiście w systemach głębokich. W płytkich od razu PHP i goł goł goł. (Architekta nie potrzeba)

Nie można oceniać, że WebLogic jest dobrym/złym wyborem, bez znajomości wymagań/kryteriów. Architekt oprogramowania jedyne co mógł zrobić, to na pewnym etapie wybrać technologię, np. będziemy robić zgodnie ze specyfikacją JEE6, albo nie miał odpowiedniej wiedzy i przygotował architekturę, które jest bardziej elastyczna jak guma w majtkach (ale za to mniej wydajna, bo wydobywanie informacji z generycznego modelu będzie zasobożerne).

Jak to w życiu są słabi architekci/developerzy/project managerzy/.../lekarze/prawnicy/itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1