Wpisy z July, 2008

Plusy i minusy własnego hostingu dla aplikacji online

Wstęp

Przeglądając strony internetowe aplikacji z segmentu B2B, zacząłem zwracać uwagę na sposób udostępniania tych aplikacji dla klienta docelowego. Patrząc od strony autorów aplikacji, zazwyczaj proponowane są następujące warianty:

  • własny hosting aplikacji,
  • instalacja na serwerze klienta.

Obydwa rozwiązania posiadają plusy oraz minusy, które przedstawiłem poniżej.

Pierwszy produkcyjny serwer Google’a
Powyżej pierwszy produkcyjny serwer Google’a
Zdjęcie pochodzi ze strony Takuya Oikawa, Flickr “Computer History Museum”

Plusy własnego hostingu

  1. Wszystko w jednym miejscu – niezależnie od liczby klientów, aplikacja fizycznie znajduje się na Twoim własnym serwerze. Bez względu na to, czy jest to Twoja własna serwerownia czy profesjonalna usługa zewnętrzna, wszystko czym należy się opiekować znajduje się na jednej (lub wielu w przypadku dużego obciążenia) maszynie. Odpada problem logistyczny, który pojawi się, gdy mamy kilkudziesięciu klientów rozrzuconych po całej Polsce. Wprawdzie można łączyć się zdalnie do serwerów, jednak to nie rozwiązuje innych kwestii. Nie każdy klient posiada serwer, inny będzie chciał dokupić nowy i finalnie się okaże, że klient może i kupi nasz software, jednak będzie trzeba do niego pojechać i kompleksowo rozwiązać problem, co może nie uda się wykonać w ciągu jednego dnia.

  2. Bezpieczeństwo kodu – Twój cenny kod znajduje się na jednej maszynie i ryzyko jego kradzieży drastycznie spada. Pomimo, iż kod można zabezpieczyć na różne sposoby, nadal mogą się znaleźć chętni do popełnienia przestępstwa. Łatwiej też skontrolować, czy faktycznie aplikację używa tyle osób, na ile została wykupiona licencja.

  3. Łatwiejszy update aplikacji – nie trzeba wysyłać skryptów aktualizacyjnych ani martwić się różnice w wersji oprogramowania między różnymi klientami. Update wykonujemy na jednej maszynie i bezboleśnie wszyscy nasi klienci łączą się z najnowszą wersją naszego software’u.

  4. Święty spokój klienta – Klient będzie wniebowzięty, gdy usłyszy, że nie musi się martwić o koszt zakupu, konserwacji oraz modernizacji sprzętu. Będzie mógł skupić się na swoim biznesie i korzystać z usług, które mają mu w tym pomóc, zamiast zastanawiać się dlaczego znów trzeba dokupić kolejny serwer.

  5. Aplikacje online to przyszłość – a już na pewno zaawansowana teraźniejszość. Poczta elektroniczna, programy biurowe i cała masa oprogramowania dla firm jest dostępna online. O plusach takiego rozwiązania nie trzeba pisać – dość powiedzieć, że potentat na rynku – firma Google – od dawna dostrzega tę alternatywę wobec aplikacji stacjonarnych. Nawet Microsoft, posądzany o przespanie ery internetu, w końcu na poważnie wchodzi do gry, udostępniając swoje usługi dla firm online. Więcej o możliwościach pakietu Microsoftu znajdziecie w notce na blogu Antyweb.

  6. Spójne środowisko pracy – Załóżmy, że nasza aplikacja wymaga PHP w wersji 5.1.x z doinstalowaną listą modułów, zainstalowanej Javy oraz bazy danych PostgreSQL w wersji co najmniej 8.x. Nasz klient żyje w świecie PHP4 i MySQL 4.x i nie rozumie, dlaczego to wszystko trzeba zmieniać, skoro “przecież działa”. Oczywiście decydując się na naszą aplikację wie, jakie wymagania trzeba spełnić, ale wszyscy w firmie (łącznie z administratorem) boją się ruszyć archaiczną, firmową bazę danych z obawy przed katastrofą podczas migracji. Niewątpliwie, takie warunki nie będą sprzyjać sprzedaży naszej aplikacji.

Minusy własnego hostingu

  1. Duży koszt początkowy – kupno serwera lub jego dzierżawa kosztuje sporo, dodatkowo trzeba ponosić miesięczne koszty umieszczenia go w porządnej serwerowni. Oczywiście, można tworzyć własną serwerownię, lecz o minusach takiego rozwiązania pisał już Paweł Fornalski na swoim blogu. Do tego dochodzi koszt osoby, która serwerem będzie administrować i zaczyna się zbierać spora stała suma miesięczna. Trzeba się liczyć z faktem, że pierwsze sprzedaże (zakładając opłatę abonamentową) pokryją tylko koszty utrzymania serwera i na wypłatę może nie zostać nic. Z drugiej strony przekroczenie tego miesięcznego progu finansowego w firmie to mały sukces, który śmiało można świętować.

  2. Problem bezpieczeństwa danych – tutaj sprawa jest prosta. Jeśli dane klienta przepadną, jest po Tobie. Na szczęście problem ten można rozwiązać za pomocą automatycznego backup’u danych. Drugi aspekt to kwestia podejścia klienta do przechowywania danych firmowych poza firmą. W przypadku pisanej przez nas aplikacji, byłyby to głównie emaile, kontakty oraz kalendarze. Z moich obserwacji wynika, że nie każdy się zgodzi na takie rozwiązanie i woli, gdy dane te znajdują się na ich prywatnym, firmowym serwerze.

  3. Szybkość działania – aplikacja używana w firmie w sieci lokalnej zazwyczaj działa szybciej, niż połączenie ze zdalnym serwerem. Pomimo optymalizacji kodu i bazy danych, stosowania AJAX’a w trosce o lżejsze odpowiedzi z serwera czy włączenia cache’u, nie będziemy szybsi od firmowego LAN’a na kablu.

  4. Brak bezpośredniego kontaktu z klientem – na nic zdadzą się najlepsze CRM’y, gdy nie nawiążemy rzeczywistego kontaktu z klientem, aby poznać jego cele i potrzeby biznesowe. Kontakt z klientem twarz-w-twarz pozwala budować z nim lepsze relacje, niż miałoby to miejsce zdalnie, na przykład przez telefon. Możliwość zadawania pytań podczas kilku godzin wdrażania produktu może też okazać się cenniejsze niż tradycyjne metody badań marketingowych.

  5. Problem awarii serwera – gdy Twoja komórka bez przerwy dzwoni a poczta jest przeciążona, może to oznaczać, że Twój serwera padł a Twoi klienci nie mogą korzystać z aplikacji, która jest ich głównym narzędziem pracy. W przypadku instalacji na serwerze klienta X, awaria jego serwera nie ma wpływu na dziesiątki (lub setki) Twoich klientów – oni wciąż mogą pracować na swoich kopiach. W przypadku własnego hostingu, awaria serwera dotyczy wszystkich Twoich klientów jednocześnie. Warto w takim przypadku opanować podstawy działania w przypadku sytuacji kryzysowych :)

Które rozwiązanie jest lepsze?

Trudno jednoznacznie ocenić, które rozwiązanie jest lepsze. W naszym przypadku, najbardziej prawdopodobne jest rozpoczęcie działalności instalując aplikację na serwerach u klienta, by wraz z zwiększeniem przychodów zacząć proponować własny hosting, który wydaje się mniej problematyczny.

Jakie rozwiązanie sam preferujesz? Zapraszam do dyskusji w komentarzach.