29. června 2012

SOA governance, lehký úvod

Vzal jsem si na projektu na starost SOA governance a s tím související nalezení nějakého vhodného nástroje, který by ji podpořil. Protože to budu muset v brzké (a nejspíš i pozdější) době prezentovat, chci si tady k tomu sepsat pár bodů, o čem to vlastně je. Co to je SOA ví každé malé dítě ;-) takže se tím nebudeme zdržovat a jdeme rovnou na věc.

3 P

Tři P můžou znamenat cokoliv, v tomto případě jsou to: lidé (people), procesy a politiky a v těchto kategoriích si můžeme klást následující otázky:

People:
  • Kdo je business vlastníkem služeb?
  • Kdo používá naše služby?
  • Kdo je za služby techn(olog)icky zodpovědný?
Procesy:
  • Které procesy definují politiky?
  • Jaké business procesy závisí na našich službách?
  • Je zde proces pro životní cyklus služeb?
Politiky
  • Jaké politiky jsou pro naše služby definované?
  • Jak jsou politiky aplikované během design a runtime fáze?

Tyto otázky bychom měli mít do určité míry zodpovězené. S jejich tvorbou a udržováním by nám měl  pomoci vhodný nástroj.

3 části politiky

Politika se skládá ze tří částí:
  • tvrzení (policy assertion),
  • vlastníka (policy owner)
  • a prosazení/vynucení (policy enforcement).

Tvrzení známe i z jiných IT domén, např. unit testy. Tvrzení by mělo být měřitelné a mělo by mít disjunktní odpověď pravdivé/nepravdivé (true/false). Vlastník politiky je jasný - je za politiku zodpovědný, udržuje ji atd.

Prosazování politiky může probíhat dvěma způsoby. Buď technologicky, nějakým automatizovaným nástrojem, nebo pomocí review. Obojí opět známe odjinud, např. automatizovaná statická analýza zdrojového kódu vs. "ruční" review.

3 oblasti podpory SOA governance

Nástroj pro SOA governance by nám měl pomoci ve třech oblastech:
  • Vytváření a správa politik.
  • Aplikování těchto politik v design fázi.
  • Aplikování těchto politik v runtime fázi.

V případě prvních dvou bodů pomůže repository, kde se dají politiky a služby zaregistrovat. V případě služeb (design fáze) bude ještě potřeba o nich udržovat metadata. Pro runtime fázi bude potřeba nějaký monitorovací nástroj, v SOA se běžně používají řešení, která spadají do kategorie Business Activity Monitor (BAM).

Příklady politik

Aby jsme si pod politikami představili něco konkrétního, uvedu pár příkladů.

Design-time politiky:
  • Nevytváříme duplicitní služby. Tohle bývá těžký, nápomocná může být impact analýza. Služba se většinou v čase mění, přibývají nové funkčnosti a využití a tak časem může dojít i k rozštěpení služby na dvě. Při změnách v čase je potřeba mít neustále na paměti zpětnou kompatibilitu kontraktu služby.
  • Technologická standardizace. Velkou část za nás řeší zvolená SOA platforma, ale některé věci je potřeba definovat politikou. Např. interní služby používají REST, externí služby jedou přes WS-*.
  • Validace zpráv. Celkem jasný. Problém bývá validaci vůbec zapnout.

Runtime politiky:
  • Dostupnout služby 24x7. Služba buď běží, nebo neběží. Tohle souvisí se Service Level Agreement (SLA).
  • Služby používají zabezpečený kanál. HTTPS atd.
  • Služby jsou "sebe-popisné" (self-describing). Tohle může být i součástí design fáze. V runtime je to myšleno tak, že po deploymentu je služba použitelná i bez dodatečné dokumentace.

Co dál?

Tak. To je momentálně asi všechno, co k tomu můžu obecně napsat, aniž bych zmiňoval konkrétní nástroj. Jestli se nám nějaký podaří na projektu rozjet, tak nějaký článeček určitě přibude.

26. června 2012

Perforce, ignorování souborů a adresářů ve streamu

Jak se nám tak rozrůstá aktuální projekt (a postupuje k nasazování na další prostředí), vyvstala nám potřeba branchovat zdrojový kód. V Perforce (P4) se dá jednak klasicky branchovat, nebo se dají používat streamy. Protože streamy poskytují pro správu kódu daleko větší komfort, vybrali jsme si právě tento způsob.

Pro používání streamů je potřeba mít vytvořený streamovaný depot. Ten jsme vytvořili, naimportovali data a ... bylo ještě potřeba nastavit ignore list, protože způsob popsaný v minulém zápisku pro streamovaný depot nefunguje. OK, jak na to?
  1. V menu View -> Streams, nebo ikona .
  2. Kliknout pravým tlačítkem na daný stream (obvykle mainline) -> Edit stream <stream>.
  3. Na záložce Advanced nastavit sekci Ignore.
P4 stream s nastaveným ignore-listem
Jednou z výhod streamovaného depotu je, že ignore list je nastavený na úrovni streamu. Není tedy potřeba jej nastavovat pro každý workspace zvlášť, tak jako v případě nestreamovaného depotu.

4. června 2012

Perforce, instalace serveru P4D

Prozatím jsem byl pouhým uživatelem Perforce (P4). Používám ho už na druhém projektu a začínám mu přicházet na chuť :-)  Chtěl jsem si něco nastudovat ohledně streamů, které asi začneme brzy používat, ale protože nemám na projektu administrátorský práva, který jsou pro založene stream depotu potřeba, nainstaloval jsem si P4 lokálně. O streamech určitě napíšu někdy příště, nyní něco k jednoduché instalaci.

Instalace Perforce Serveru

Instalace Perfoce Serveru (P4D) je velmi rychlá a jednoduchá. Popíšu instalaci pro vývojářské účely - do domovského adresáře. Pro "opravdový" nasazení by přibyly pouze dva kroky: vytvoření uživatele (a ev. skupiny), pod kterým P4D poběží a vytvoření root adresáře pro depot.

Instalaci zahájíme stažením serveru (P4D) a řádkového klienta (P4) z download stránky. Doporučuji stáhnou i grafického klienta (P4V).
  1. Vytvoříme pracovní adresář (root depotu).
  2. Zkopírujeme soubory p4d a p4 do $PATH a nastavíme spustitelný příznak.
  3. Nastavíme proměnnou P4PORT, port na kterém P4D naslouchá. (P4PORT je důležitá i pro klienta a nastavuje se v ní host i port.)
  4. Nastavíme proměnnou P4ROOT, root adresář depotu.
  5. Spustíme server jako daemon příkazem p4d -d.
  6. Server můžeme zastavit příkazem p4 admin stop.
Instalace P4D

Přidání souborů do depotu

Pokud se poprvé přihlásíme grafickým klientem P4V k serveru, který má prázdný depot, nabídne nám možnost tam nějaké soubory umístit:

Přidání souborů do depotu

Hotovo! Server běží, soubory máme naimportovány. Můžeme začít vyšívat...

P4 depot