Nadzieja w usługach

Kto zapłaci za usługi

Wejście do świata usług sieciowych to znacznie bardziej skomplikowane zadanie niż, z pozoru łatwa, implementacja kilku standardów. Ogromna część pracy związanej z udostępnieniem usługi w sieci jest dla klienta niewidoczna. Praca ta wiąże się z wykorzystaniem odpowiednich narzędzi umożliwiających opublikowanie funkcji w postaci usługi sieciowej i umieszczenie jej w katalogach oraz staranną analizą (z biznesowego punktu widzenia), które procesy i w jaki sposób udostępnić w postaci architektury wielokomponentowej. Inne dylematy projektantów usług sieciowych dotyczą zapewnienia wysokiej dostępności i wiarygodności usługi w sieci, a na końcu wyboru odpowiedniej platformy sprzętowej.

Pojawia się zatem naturalne pytanie, czy koszty związane z tworzeniem usług sieciowych w organizacji nie okażą się zbyt wysokie w stosunku do korzyści, jakie może przynieść ta technologia? Na koszt całego przedsięwzięcia wpływa wiele czynników. Najważniejsze to: zakup platformy sprzętowej oraz narzędzi umożliwiających tworzenie i korzystanie z usług sieciowych, nakłady związane z tworzeniem oprogramowania przy użyciu wybranych technologii, koszty ponoszone podczas "cyklu życia oprogramowania" związane z instalowaniem, wdrożeniem i konfigurowaniem, administracją i zarządzaniem wydajnością, nakłady na szkolenia użytkowników i pracowników działu IT. Architektura usług sieciowych umożliwia w dużej mierze wykorzystanie istniejących w organizacji rozwiązań, niemniej wprowadza kolejną warstwę w modelu oprogramowania, co może skutkować koniecznością zwiększenia wydajności platformy sprzętowej i infrastruktury sieciowej.

Na rynku narzędzi programistycznych od pewnego czasu zarysowała się tendencja udostępniania developerom kompleksowych rozwiązań pozwalających na tworzenie oprogramowania również w formie usług sieciowych. W związku z tym twórcy oprogramowania na ogół nie są zmuszeni do zakupu dodatkowych licencji na narzędzia umożliwiające wykorzystanie i tworzenie Web Services.

Technologia usług sieciowych opiera się na ogólnie przyjętych standardach, które już dzisiaj są wspierane przez twórców środowisk programistycznych. Proces programowania i wykorzystania usług sieciowych jest już w dużym stopniu zautomatyzowany (dzięki różnego rodzaju kreatorom) i co za tym idzie relatywnie tani.

Nakłady na tworzenie oprogramowania mogą być zminimalizowane dzięki rozwojowi oferty usług sieciowych dostarczanych przez firmy zewnętrzne. Skala oszczędności związanych z wykorzystaniem gotowych usług będzie w dużej mierze zależeć od zaproponowanego przez dostawcę rozwiązania sposobu naliczania opłat. Możliwe są co najmniej dwa scenariusze: płatność za licencję umożliwiającą korzystanie z usługi lub opłata za każdorazowe jej użycie.

Nakłady związane z pracą programistów, projektantów i analityków będą różne na poszczególnych etapach "cyklu życia oprogramowania".

W fazie projektowania koszty nie powinny wzrosnąć. Narzędzia typu CASE wspierają projektowanie usług sieciowych, umożliwiając już na wczesnym etapie przekształcenie (przy użyciu kreatorów) tradycyjnej klasy w klasę wykorzystywaną jako Web Service, tworząc przy tym dodatkowe informacje dotyczące wdrożenia i kompilacji. Projektant, nawet bez dodatkowych mechanizmów wspierających użycie usług sieciowych, i tak ma do czynienia z klasą, która dopiero w późniejszych etapach rozwoju oprogramowania zostanie wykorzystana jako usługa.

Dostępne na rynku narzędzia używane w fazie implementacji na ogół wspierają tworzenie usług sieciowych. Istniejące mechanizmy umożliwiają tworzenie dokumentów XML na podstawie i odwrotnie - tworzenie obiektów na podstawie dokumentów XML. Jedyną dodatkową czynnością leżącą w gestii programistów będzie walidacja odbieranych dokumentów XML z oczekiwanym ich formatem. Operacja ta jednak nie jest trudna do przeprowadzenia w przypadku posługiwania się schematami dokumentów XML (XML Schema).

Usługi sieciowe

Za:

  • Niezależność od platformy systemowej

  • Wykorzystanie komunikatów tekstowych/XML

  • Integracja środowisk CORBA i COM+

  • Łatwość projektowania interfejsów dla istniejących aplikacji

  • Możliwość integrowania systemów firmowych z systemami firm zewnętrznych

  • Wsparcie wszystkich najważniejszych dostawców technologii
Przeciw:

  • Problemy z wydajnością

  • Niepełna standaryzacja mechanizmów bezpieczeństwa

  • Potrzeba wdrażania specjalistycznych rozwiązań typu firewalle XML, routery XML itd.

  • Niepełna standaryzacja rozwiązań wysokiej dostępności

  • Wciąż niewiele poważnych wdrożeń