Tworzenie aplikacji internetowej – jaką wybrać technologię?
Nie musisz być informatykiem, żeby wcześniej czy później zetknąć się z tematem „tworzenie aplikacji internetowej”. Chcesz zlecić wykonanie firmowej strony albo sklepu i… pierwszy krok może być trudny. Bo jeśli nie jesteś programistą, problemem może być zrozumienie pytań potencjalnego wykonawcy. Nawet tych najprostszych, typu: „na czym Ci to postawić?”.
W artykule przybliżę podstawowe terminy i technologie służące do budowania aplikacji webowych. Podpowiem też na co zwrócić uwagę dokonując wyborów i pokażę co może się stać, jeżeli wybór nie będzie przemyślany.
Spis treści
Co to są aplikacje internetowe
Uważasz, że chociaż korzystasz ze smartfona i laptopa, to aplikacje webowe omijasz dużym łukiem? Bo nie masz czasu na gry i komputer służy do pracy? No to jesteś w dużym błędzie. Aplikacje internetowe otaczają Cię w wirtualnej rzeczywistości z każdej strony.
Formalnie rzecz biorąc, aplikacja webowa, to program zainstalowany na serwerze, którego używasz posługując się urządzeniem (smartfonem, tabletem, laptopem, komputerem PC) mającym dostęp do Internetu. Bardzo często nie musisz niczego instalować na urządzeniu, ponieważ korzystasz z aplikacji za pośrednictwem przeglądarki internetowej.
Typy aplikacji webowych
Rodzajów aplikacji internetowych jest wiele. Począwszy od stron internetowych, po dedykowane rozwiązania służące do wykonywania konkretnych czynności. Poniżej przedstawiam listę popularnych typów aplikacji.
Strony internetowe
Statyczne lub tworzone dynamicznie witryny informacyjne, dotyczące na przykład firmy, organizacji, projektu lub tematu, bądź tematyki. Pozwalają na przeglądanie zawartości, opcjonalnie umożliwiają zapis do newslettera i inne proste operacje.
Jeśli chcesz się dowiedzieć więcej o różnorodności stron w sieci, sprawdź artykuł Rodzaje stron internetowych.
Serwisy społecznościowe
Aplikacje tworzone i udostępniane w celu umożliwienia interakcji między użytkownikami. Pozwalają na zakładanie konta i zarządzanie nim, udostępnianie treści przez korzystających, tworzenie grup, wyszukiwanie informacji oraz komunikację z innymi osobami.
Sklepy internetowe
Dedykowane aplikacje służące do prezentowania i umożliwiania zakupu produktów. Z reguły wyposażone w rozbudowaną funkcjonalność wyszukiwania i sortowania treści, często zintegrowane z aplikacjami zewnętrznymi (np. do obsługi płatności).
Jeśli zastanawiasz się nad wyborem odpowiedniej platformy dla swojego biznesu online, sprawdź artykuł Jaką platformę wybrać dla sklepu internetowego.
Aplikacje dla biznesu
Należą do nich na przykład systemy do zarządzania bazą klientów i kontaktów z nimi (CRM – Customer Relationship Management, czyli zarządzanie relacjami z klientami), lub systemy do zarządzania produkcją, logistyką, księgowością (ogólnie rozwiązania ERP – Enterprise Resource Planning, czyli zarządzanie zasobami przedsiębiorstwa). Aplikacje tego typu pozwalają zalogowanym użytkownikom na spersonalizowane wprowadzanie, korzystanie i przetwarzanie danych (np. wprowadzanie informacji o leadzie, planowanie terminu spotkania, przypisywanie do klienta zrealizowanych transakcji itp.)
Serwisy edukacyjne
Aplikacje webowe umożliwiające zdalnym użytkownikom korzystanie z różnego rodzaju prezentacji i materiałów dydaktycznych, kursów, szkoleń. Oferują zróżnicowaną funkcjonalność dla nauczycieli oraz uczniów. Pierwszym pozwalają m.in. wprowadzać informacje i nadzorować proces nauki. Drugim umożliwiają personalizowany dostęp do materiałów, ankiet, komunikatorów etc.
Aplikacje usługowe
Wszelkiego rodzaju serwisy udostępniające wyspecjalizowaną funkcjonalność. Na przykład systemy rezerwacji (hotele, służba zdrowia i in.) czy zaawansowanego przeglądu i wyszukiwania danych (np. biblioteki).
Rozwiązania hybrydowe
Przedstawiony podział aplikacji webowych to klasyfikacja wzorcowa. W rzeczywistości rozwiązania często się łączą lub przenikają. Proste strony firmowe, ale także na przykład portale informacyjne, prowadzić mogą w pewnym zakresie sprzedaż, lecz trudno je zakwalifikować do sklepów. Strona firmowa umożliwia w płynny sposób przejście ze strony głównej do systemu obsługi kadrowej i użytkownik może nawet nie zdawać sobie sprawy, że korzysta już z innej aplikacji (modułu HR aplikacji ERP).
Definicje pojęć
Zanim jednak zacznę wymieniać i nieco przybliżać tajemnicze nazwy, krótkie wprowadzenie. Jak już wiesz, aplikacja webowa to oprogramowanie na serwerze i przeglądarka lub dedykowany program na Twoim urządzeniu. W świecie informatyki to jednak dwa światy.
Frontend i backend – co to znaczy?
Wszystko co dzieje się po Twojej stronie, na Twoim laptopie, w Twojej przeglądarce określa się mianem frontendu. Technologie frontendowe są więc odpowiedzialne za prezentację interfejsu użytkownika, czyli wszystkiego, co widzi i może zrobić osoba posługująca się aplikacją jako klient.
Drugi obszar, nazywany backendem, związany jest z serwerem. Technologie backendowe odpowiadają za zarządzanie serwerem i komunikację z bazą danych oraz za przetwarzanie i przechowywanie danych.
Języki programowania, biblioteki i frameworki – co jest czym?
Oprogramowanie – zarówno frontendowe, jak i backendowe – tworzone jest z wykorzystaniem języków oprogramowania, czyli elementarnych poleceń, przy pomocy których programista definiuje sposób działania aplikacji. Nie oznacza to jednak, że każdy deweloper, każde działanie programu pisze „od początku”, korzystając bezpośrednio z poleceń danego języka.
Typowe operacje zapisywane są w postaci funkcji i procedur, pogrupowanych w biblioteki. Zdecydowana większość programistów korzysta w pracy z bibliotek, nie wiedząc i nie analizując jak zbudowane są poszczególne funkcje. Biblioteki gromadzą z reguły funkcje związane z jednym rodzajem działania, np. z prezentacją danych w postaci wykresów. Funkcje w takiej bibliotece dotyczą m.in. formatowania wyglądu linii wykresu, czyli określania jej grubości i koloru, tworzenia skali liniowej na podstawie wartości prezentowanych na wykresie itp.
Deweloperzy korzystają również z frameworków, czyli rozbudowanych środowisk programistycznych. Środowiska takie powstały i są stosowane w celu przyspieszenia, ułatwienia i ustandaryzowania tworzenia oprogramowania. W skład frameworków wchodzą narzędzia (edytory, repozytoria), zestawy bibliotek programistycznych oraz bardziej złożone wzorce realizujące typowe powtarzalne czynności (np. logowanie do systemu).
Aplikacje internetowe – najpopularniejsze technologie
Technologie front-endowe
Oto kilka powszechnie wykorzystywanych technologii niezbędnych do tworzenia klienckiej strony aplikacji webowych:
- HTML – język znaczników, służy do definiowania struktury i zawartości strony internetowej,
- CSS – język do tworzenia arkuszy stylów, odpowiedzialnych za wygląd i układ elementów interfejsu,
- JavaScript – język programowania, którego używa się, aby stworzyć na stronie elementy interaktywne, takie jak animacje i efekty wizualne, czy formularze,
- React – framework JavaScript, który pozwala tworzyć interaktywne interfejsy aplikacji webowych,
- Angular – kolejny framework JavaScript, pozwalający m.in. zarządzać stanem aplikacji i przełączaniem między widokami
- Vue – inny popularny framework JavaScript, który umożliwia łatwą integrację z innymi bibliotekami i narzędziami oraz pozwala na tworzenie skalowalnych aplikacji.
Technologie back-endowe – czym są?
Powszechnie znane i używane technologie do programowania serwerowej części aplikacji webowej, odpowiedzialnej za przetwarzanie i przechowywanie danych:
- PHP – język programowania służący m.in. do generowania dynamicznych treści na stronach (formularzy, tabel, komunikatów) oraz kodowania skryptów odpowiedzialnych za przetwarzanie danych i obsługę plików,
- Node.js – platforma programistyczna, pozwalająca na budowanie aplikacji JavaScript po stronie serwera oraz kodowanie aplikacji desktopowych (lokalnych), dobrze sprawdza się w obsłudze wielu jednoczesnych połączeń (jak w czatach),
- Python – język programowania, pozwalający m.in. na przetwarzanie danych w czasie rzeczywistym,
- Laravel – framework dla języka PHP, który oferuje wiele funkcji, takich jak baza danych, czy system autoryzacji,
- Ruby on Rails – framework dla języka Ruby, dostarczający wiele funkcji obsługi bazy danych, zarządzania zasobami serwera i innych,
- ASP.NET – framework dla języka C#, który oferuje bogaty zestaw funkcji bezpieczeństwa, takich jak uwierzytelnianie i autoryzacja, zapewniających ochronę aplikacji przed nieuprawnionym dostępem.
Zaprojektowanie i wdrożenie strony internetowej
Realizacja dla Decsoft S.A.
WordPress
Zapewne wielu programistów w tym momencie głośno protestuje. „Wordpress to przecież tylko CMS!” (Content Management System, czyli system do zarządzania treścią). „Jak można stawiać go w jednym rzędzie z Reactem, albo Angularem???” „To nie jest żadna technologia, to tylko program z wtyczkami!”.
Być może tak, ale… Najbardziej rozpowszechnionym rodzajem aplikacji webowej jest strona www. Szacuje się, że na świecie jest około 200 milionów aktywnych witryn (https://techjury.net/blog/how-many-websites-are-there/). Według różnych szacunków do stworzenia 40-60% stron został wykorzystany WordPress (https://www.wpbeginner.com/beginners-guide/ultimate-list-of-wordpress-stats-facts-and-other-research/). Dla mnie liczby mówią same za siebie. Myśląc o firmowej stronie, e-sklepie, czy innym systemie webowym trzeba wziąć pod uwagę również WordPress. Nawet jeśli to „niepoważna” technologia i ma swoje ograniczenia na przykład związane z wydajnością.
Po długim wstępie kilka słów o tym czym jest Wordpress i na co pozwala. Jest to najpopularniejszy system CMS. Umożliwia łatwe zarządzanie treścią na stronie internetowej. Pozwala na umieszczanie i modyfikację tekstów, zdjęć, filmów bez konieczności znajomości języków oprogramowania. Oczywiście samo stworzenie strony czy sklepu internetowego wymaga pracy deweloperów (często wymagającej zaawansowanych umiejętności), ale obsługa już niekoniecznie.
Wybór najlepszej technologii dla web developmentu – co warto wziąć pod uwagę
Jak poradzić sobie z wyborem technologii tworzenia aplikacji internetowej? Nie jest to trywialny problem. Szczególnie jeśli rozmawiasz z kilkoma potencjalnymi wykonawcami, którzy mają dziesiątki argumentów przemawiających za ich propozycją.
Poniżej umieściłem krótką listę czynników związanych z tworzeniem i utrzymaniem oprogramowania. Nawet jeśli nie dotyczą one bezpośrednio Ciebie jako zamawiającego wykonanie aplikacji, to mają wpływ na koszt, czas realizacji i ryzyka. Analiza wymienionych kwestii pomoże Ci dokonać wyboru technologii i wykonawcy Twojej strony, sklepu lub aplikacji webowej.
Cel i zakres projektu
Wybór technologii tworzenia aplikacji internetowej wynika w znacznym stopniu od rodzaju i skali rozwiązania. Rozbudowany framework użyty do budowy strony-wizytówki to przerost formy nad treścią. Próba stworzenia zaawansowanej aplikacji obsługującej dziesiątki albo setki tysięcy użytkowników przy pomocy „czystego” CMS WordPress również ma ograniczony sens. Owszem można to zrobić, ale utrzymanie rozwiązania kosztuje dużo więcej niż na przykład w przypadku połączenia z frameworkiem React (Headless CMS).
Doświadczenie i umiejętności programistów
Ważne, aby zespół pracujący nad tworzeniem aplikacji w konkretnej technologii miał umiejętności i doświadczenie w korzystaniu z niej. To naprawdę warto sprawdzić, bo nauka na Twój koszt może bardzo podnieść cenę za gotową aplikację webową.
Bezpieczeństwo
Nawet jeśli do końca nie zrozumiesz zawiłych kwestii technicznych, dowiedz się czy wybrana technologia jest bezpieczna i posiada odpowiednie mechanizmy ochrony przed atakami hakerskimi i innymi zagrożeniami. Poszukaj co na ten temat „pisze się” w Sieci.
Skalowalność aplikacji
Wybierając technologię tworzenia aplikacji internetowej, warto szukać takiej, która umożliwi jej łatwą rozbudowę oraz ewentualną integrację z innymi systemami. Dobra decyzja może uchronić Cię przed koniecznością tworzenia za jakiś czas oprogramowania od nowa, przy użyciu innej technologii.
Łatwość zasilania w treści
Podejmując decyzję o technologii, w której będzie wykonana aplikacja dla Ciebie, sprawdź jak wyglądają aktualizacje treści i modyfikacje. Na przykład w przypadku stron internetowych warto zadbać o to, by proste zmiany nie wymagały każdorazowo ingerencji programistów.
Koszty
Umieszczone na końcu listy, ale mające w ostatecznym rozrachunku podstawowe znaczenie dla Twojego biznesu. Warto policzyć ROI uwzględniając minimum koszty pracy programistów, zakupu niezbędnych licencji (w tym subskrybowanych). Zdecydowanie warto zrobić to jeszcze przed przystąpieniem do tworzenia aplikacji.
Prześlij brief i zamów bezpłatną wycenę
Konsekwencje niewłaściwego wyboru technologii do tworzenia aplikacji webowych
Skutki błędnego wyboru technologii mogą być problemami różnej skali. Od drobnych niedogodności w korzystaniu z aplikacji, przez duże opóźnienia w realizacji i przerwy w funkcjonowaniu, po zakończenie projektu bez stworzenia oprogramowania.
Patrząc na problemy z punktu widzenia funkcjonalności czy kosztów utrzymania aplikacji zawsze warto pamiętać o aspekcie biznesowym. Przykładowo niska wydajność sklepu internetowego, czyli długi czas wczytywania i filtrowania produktów, przekłada się na user experience. Wraz ze wzrostem dyskomfortu z korzystania ze sklepu przez użytkowników, spada współczynnik konwersji. Obniżają się więc również przychody i zyski.
Ograniczenia funkcjonalności
Niewłaściwy wybór technologii może sprawić, że nie będzie możliwe wyposażenie aplikacji we wszystkie funkcje określone w wymaganiach. Może też okazać się, że pełna realizacja oczekiwań jest nieproporcjonalnie droga lub wymaga tworzenia dodatkowych, niestandardowych rozwiązań.
Niska wydajność
Błędnie dobrana w trakcie tworzenia aplikacji internetowej technologia może prowadzić do niskiej wydajności aplikacji. To z kolei oznacza wolniejsze ładowanie i utrudnione interakcje systemu z użytkownikami.
Problemy z bezpieczeństwem
Zastosowanie rozwiązań podatnych na ataki hakerskie i inne zagrożenia bezpieczeństwa może wiązać się z utratą kluczowych danych przedsiębiorstwa. W skrajnie niekorzystnym scenariuszu może to prowadzić do upadku biznesu.
Trudności w utrzymaniu
Wybrana technologia, zaprojektowana architektura aplikacji oraz sposób implementacji mogą utrudniać utrzymanie rozwiązania oraz naprawę ujawnionych błędów. W efekcie obsługa techniczna działającego systemu może wiązać się ze znacznymi kosztami i problemami organizacyjnymi.
Problemy z skalowalnością
Niepoprawne oszacowanie liczby użytkowników lub brak planu rozwoju funkcji podczas tworzenia aplikacji internetowej w czasie często prowadzą do wyboru technologii uniemożliwiającej lub utrudniającej rozwój systemu. W efekcie trzeba tworzyć rozwiązania zastępcze pozwalające na obsługę dużej liczby użytkowników.
Wysokie koszty
Wybór przewymiarowanej w stosunku do rzeczywistych potrzeb technologii niemal zawsze skutkuje nadmiernymi wydatkami. Wiążą się one przede wszystkim z utrzymaniem zespołu specjalistów oraz opłatami za licencje, a także w niektórych sytuacjach za platformę sprzętową lub hosting.
Podsumowanie
Mam nadzieję, że deweloperzy podsumują artykuł w stylu „no, z grubsza tak, ale… [tu długi ciąg argumentów za i przeciw poszczególnym technologiom, skrótom w opisach i uproszczeniom]”. Jeśli się nie udało to jakoś będę musiał z tym żyć, ale wierzę, że trochę pomogłem nie-informatykom. Przede wszystkim pomogłem zrozumieć co jest czym w świecie technologii aplikacji internetowych, o co pytać potencjalnych wykonawców strony lub sklepu, czego dopilnować. Przynajmniej w pierwszym przybliżeniu.