CodeGym /Kursy /JAVA 25 SELF /Model produktu IT

Model produktu IT

JAVA 25 SELF
Poziom 9 , Lekcja 6
Dostępny

1. Nowoczesne produkty

Nowoczesnych produktów nikt już nie nazywa „programami”. Współczesny produkt może obejmować dziesiątki programów, setki usług internetowych i wiele interfejsów API zapewnianych przez chmurowe centrum danych (zwane też centrami przetwarzania danych), w którym jest uruchomiony.

Wiele nowoczesnych produktów (jeśli nie wszystkie) działa według paradygmatu Klient-Serwer. Oznacza to, że na Twoim urządzeniu (telefonie, laptopie, komputerze) działa program odpowiedzialny za komunikację z użytkownikiem (Tobą), a krytyczna funkcjonalność znajduje się na zdalnym serwerze, gdzie dzieje się wszystko, co najważniejsze ➡️🖥️

Czasem Twój klient może komunikować się z kilkoma niezależnymi serwerami, albo serwer jednego produktu może odwoływać się do serwera innego produktu. Powstaje coś w rodzaju globalnej sieci klientów i serwerów, a wszystkie one współpracują ze sobą.

Dlatego współczesny model aplikacji być może lepiej opisać jako paradygmat Klient-Internet-Serwer. Jest tam po prostu zbyt wiele złożonej komunikacji. Pojawiły się nawet tzw. „inteligentne kanały łączności”, które samodzielnie decydują, komu i kiedy wysłać Twoje żądanie.🛰️📡

2. Klienci

Programy-klienci można umownie podzielić na 4 kategorie:

  • 🖥️ Klient desktopowy — program działający na komputerze.
  • 📲 Klient mobilny — aplikacja na iOS lub Androida.
  • 🌐 Klient webowy — strona/aplikacja webowa działająca w przeglądarce.
  • 🌍 Klient serwerowy — aplikacja uruchomiona na innym serwerze.

Każdą z tych kategorii można z kolei podzielić na części. Na przykład klient webowy to strona lub aplikacja webowa, a to oznacza, że składa się z Przeglądarki i Strony, która jest do niej ładowana. Przeglądarki też nie są identyczne i mogą działać różnie.

Ale nawet jeśli weźmiemy najpopularniejszą przeglądarkę, pozostaje jeszcze sama strona, która się do niej ładuje. Strona zwykle składa się z trzech elementów:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

„Nic prostszego”, powiesz. Tyle że dziś nikt nie pisze stron po prostu w HTML i JavaScript. Do tworzenia stron używa się już nie tylko bibliotek, ale pełnoprawnych frameworków, takich jak React, Angular czy Vue ⚛️. I to już nie „strony”, lecz pełnoprawne aplikacje webowe z własnymi buildami, testami i paradygmatami.

Czystego CSS też już prawie nikt nie używa. Istnieją preprocesory CSS, które pomagają go generować, oraz całe frameworki CSS. Ba, nawet dla wiadomości e-mail są specjalne frameworki CSS, aby Twoja wiadomość wyglądała dobrze zarówno w przeglądarce, jak i w większości klientów pocztowych 💌.

W czystym JavaScript też już mało kto pisze — wszystkie duże aplikacje webowe powstają w TypeScript, który następnie kompiluje się do JavaScript. No, wiesz o co chodzi...

3. Internet i infrastruktura

Komunikacja klienta i serwera — co może być prostsze? Ale nawet w ich relacji wszystko się już zmieniło.

Twój produkt najpewniej będzie hostowany w jednym ze współczesnych centrów danych. Wiele firm na całym świecie oferuje różne usługi hostingu dla Twoich produktów — czy to na ich serwerach, czy na Twoich własnych serwerach fizycznych. Każdy kaprys za Twoje pieniądze.

Centrum danych

„Serwer fizyczny” już nie jest fizyczny. Wszystkie nowoczesne centra danych oferują wynajem serwerów wirtualnych. Serwer wirtualny to pewien wirtualny komputer i na jednym serwerze fizycznym może ich być dziesiątki. Za to jest to wygodne z punktu widzenia rozbudowy serwera. Jeśli potrzebujesz więcej pamięci, możesz dodać ją do swojego serwera wirtualnego w kilka minut ⏱️.

Ale i takie podejście powoli się starzeje — teraz w modzie jest przeprowadzka do chmury, czyli sytuacja, gdy Twój produkt nie tylko jest uruchomiony na serwerze wirtualnym w centrum danych, lecz aktywnie korzysta z szerokiego zestawu infrastruktury i usług tych centrów.

Potrzebujesz serwera do przechowywania kopii zapasowych — w chmurze jest do tego gotowa, wygodna infrastruktura. Potrzebujesz bazy danych o niezawodności 99.9999999 %? Taka też istnieje. Kafka, RabbitMQ, NoSQL? Wszystko już jest i łatwo się konfiguruje. Wystarczy płacić.

I te centra danych oraz chmury zaczynają stawać się częścią Twojego produktu. Na przykład Amazon ma mnóstwo centrów danych na całym świecie, więc oferuje usługę CDN: Twoje publiczne treści będą przechowywane w pamięci podręcznej we wszystkich centrach danych Amazon, a Twoi użytkownicy na całym świecie będą je otrzymywać szybciej 🛰️.

Albo wywołania API Twojej aplikacji można przepuścić przez usługę Amazon Gateway API, która pozwala bardzo elastycznie skonfigurować pracę z Twoimi usługami. Można rozkładać obciążenie na różne serwisy, odpierać ataki DDoS, automatyzować przesyłanie plików, skonfigurować inteligentne przechowywanie w pamięci podręcznej i wiele, wiele więcej 🛡️.

W ten sposób między aplikacją-klientem a Twoimi usługami powstaje wiele „inteligentnych komunikacji”, które można, a nawet trzeba konfigurować. Nawet jeśli nigdy nie będziesz robić tego osobiście, warto wiedzieć, że istnieją i mogą istotnie wpływać na działanie Twojego programu.

A to jeszcze nie dotyka takich tematów, jak routery, maszty 5G, satelity i podmorskie kable internetowe. Wysyłasz strumień wideo z serwera do klienta, a on zawodzi, bo klient ma słabe łącze i połączenie stale się zrywa. Zgadnij, kto będzie rozwiązywać ten problem? Ty 😅

4. Serwer

Pod słowem „serwer” mogą kryć się zupełnie różne pojęcia. Warto poznać te najczęściej spotykane.

  • 🖥️ Serwer fizyczny
    Serwer fizyczny to sprzęt stanowiący odrębny komputer z zasobami (procesor, pamięć, magazyn danych), używany do przetwarzania danych i zapewniania działania różnych aplikacji programistycznych. Takie serwery instaluje się w centrach przetwarzania danych, gdzie dostarczają mocy dla hostingu stron WWW, aplikacji, baz danych i innych usług.
  • 🪐 Serwer wirtualny
    Serwer wirtualny to programowo emulowany serwer działający w środowisku serwera fizycznego. Dzięki technologiom wirtualizacji jeden serwer fizyczny można podzielić na kilka izolowanych serwerów wirtualnych, z których każdy ma własny system operacyjny i może być niezależnie restartowany oraz konfigurowany.
  • 🕹️ Program–serwer (np. Nginx)
    Program–serwer, taki jak Nginx, to oprogramowanie serwerowe używane do obsługi żądań do zasobów WWW. Nginx jest szeroko znany jako serwer WWW, który może też pełnić funkcje serwera proxy dla poczty oraz reverse proxy w architekturach mikroserwisowych, a także działać jako load balancer.
  • 💾 Serwer baz danych
    Serwer baz danych to wyspecjalizowany serwer używany do zarządzania bazami danych i obsługi zapytań do nich. Zapewnia scentralizowane przechowywanie danych i ich przetwarzanie, udostępniając dostęp do danych przez sieć. Serwery baz danych wspierają obsługę transakcji, wyszukiwanie i modyfikację danych, zapewniając przy tym niezawodność i bezpieczeństwo przechowywania informacji. Przykłady serwerów baz danych to MySQL, PostgreSQL, Oracle Database i Microsoft SQL Server.

I gdzieś w centrum danych, na jednym z serwerów wirtualnych, będzie działał Twój projekt w C# i ASP.NET Core. Będzie pracował z bazą danych, odbierał żądania przez Nginx lub Azure Application Gateway, a logi swoich działań wysyłał do systemów monitoringu, takich jak Azure Monitor czy Splunk 📈.

Ale to właśnie dzięki Twojemu kodowi miliony użytkowników Twojego produktu będą zadowolone. Będą korzystać z usługi, płacić za nią pieniądze, a ostatecznie zadowolony będzie też właściciel produktu. Akcje firmy będą rosły, Ty dostaniesz premie w akcjach — i będziesz szczęśliwy 💸. Prawdziwy krąg szczęścia w branży :)

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION