CodeGym /Kursy /Frontend SELF PL /Model produktu

Model produktu

Frontend SELF PL
Poziom 48 , Lekcja 1
Dostępny

11.1 Nowoczesne produkty

Nowoczesne produkty

Teraz już nikt nie nazywa nowoczesnych produktów programami. Nowoczesny produkt może składać się z dziesiątek programów, setek usług internetowych i mnóstwa API, które dostarczają mu chmury z centrum danych, w którym produkt jest wdrożony.

Wiele nowoczesnych produktów (jeśli nie wszystkie) działa według paradygmatu Klient-Serwer. To wtedy na twoim urządzeniu (telefonie, laptopie, komputerze) znajduje się program odpowiadający za komunikację z użytkownikiem (tobą), a cała krytyczna funkcjonalność znajduje się na zdalnym serwerze, gdzie dzieją się wszystkie ważne rzeczy.

Czasem twój klient może komunikować się z kilkoma niezależnymi serwerami, albo serwer jednego produktu może komunikować się z serwerem innego produktu. Powstaje pewna globalna sieć klientów i serwerów, w której wszystko ze sobą współpracuje.

Dlatego nowoczesny model aplikacji może być lepiej opisany jako paradygmat Klient-Internet-Serwer. Jest tam zbyt wiele różnych skomplikowanych komunikacji. Pojawiły się nawet tak zwane „inteligentne kanały komunikacyjne”, które same podejmują decyzje, do kogo wysłać twoje zapytanie i kiedy.

11.2 Klienci

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

  • Desktop-klient — program działający na komputerze
  • Mobile-klient — aplikacja na iOS lub Android
  • Web-klient — strona internetowa/aplikacja webowa działająca w przeglądarce
  • Server-klient — aplikacja uruchomiona na innym serwerze

Każdą z nich można ponadto podzielić na części. Na przykład, web-klient to strona lub aplikacja webowa, co oznacza, że składa się z Przeglądarki i Strony, która jest do niej ładowana. Przeglądarki też przecież nie są takie same i mogą działać różnie.

Ale nawet jeśli weźmiemy najpopularniejszą przeglądarkę, pozostaje jeszcze strona, która jest do niej ładowana. Strona zazwyczaj składa się z trzech rzeczy:

  • HTML
  • CSS
  • JavaScript

Nic prostszego, powiesz, ale już nikt nie pisze stron po prostu w HTML i JavaScript. Teraz do tworzenia stron używa się nie tylko bibliotek, ale pełnoprawnych frameworków, takich jak React, Angular czy Vue. I to już nie są strony, a pełnoprawne aplikacje webowe. Ze swoimi kompilacjami, testami i paradygmatami.

Prosty CSS też już prawie nikt nie używa: są już preprocessory CSS, które pomagają go generować, a nawet całe frameworki CSS. Boże, są nawet całe frameworki CSS do emaili, żeby twoja wiadomość wyglądała ładnie, gdy ktoś ją przegląda w przeglądarce lub w większości klientów pocztowych.

Na JavaScript też już prawie nikt nie pisze: wszystkie większe aplikacje webowe są pisane w TypeScript, który jest potem kompilowany do JavaScript. No wiesz...

11.3 Internet i infrastruktura

Komunikacja klienta z serwerem — co może być prostszego? Ale i tu już wszystko się zmieniło.

Po pierwsze, twój produkt prawdopodobnie będzie hostowany w jednym z nowoczesnych centrów danych. Bardzo wiele firm na całym świecie oferuje różne usługi hostingu twoich produktów zarówno na ich serwerach, jak i na twoich fizycznych serwerach. Każda kapryśna wola za twoje pieniądze.

Internet i infrastruktura

Fizyczny serwer już nie jest fizyczny. Wszystkie nowoczesne centra danych oferują wynajem serwerów wirtualnych. To taki wirtualny komputer i na jednym fizycznym serwerze może ich być dziesiątki. Jest to wygodne pod względem aktualizacji serwera. Jeśli potrzebujesz więcej pamięci, możesz ją dodać do swojego wirtualnego serwera w ciągu kilku minut.

Ale i to podejście już się starzeje. Teraz w modzie jest przechodzenie do chmur — to wtedy twój produkt nie jest po prostu wdrożony na wirtualnym serwerze w centrum danych, ale aktywnie korzysta z całego zestawu infrastruktury i usług tych centrów danych.

Potrzebujesz serwera do przechowywania kopii zapasowych: do tego jest cała wygodna infrastruktura w chmurze. Potrzebujesz bazy danych z niezawodnością 99.9999999%? Też taka jest. Kafka, RabbitMQ, NoSQL? Wszystko już jest i łatwo się konfiguruje. Wystarczy płacić.

Te centra danych i chmury zaczynają stawać się częścią twojego produktu. Na przykład, Amazon ma mnóstwo centrów danych na całym świecie, dlatego oferują usługę CDN: twoje publiczne treści będą buforowane na wszystkich centrach danych Amazon, a twoi użytkownicy na całym świecie będą je otrzymywać szybciej.

Lub zapytanie do 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 rozdzielać obciążenie na różne usługi, odpierać ataki DDoS, automatyzować ładowanie plików, skonfigurować inteligentne buforowanie, a także wiele innych rzeczy.

W ten sposób między aplikacją-klientem a twoimi usługami powstaje mnóstwo „inteligentnych komunikacji”, które można i należy skonfigurować. Nawet jeśli nigdy nie będziesz tego robić osobiście, musisz wiedzieć, że istnieją i mogą znacznie wpływać na działanie twojego programu.

I to jeszcze nie dotknęliśmy tematu, jak routery, wieże 5G, satelity i kable internetowe na dnie oceanu. Wysyłasz strumień wideo z twojego serwera do twojego klienta, a on się zawiesza, bo klient ma słaby zasięg i połączenie cały czas się przerywa. Zgadnij, kto będzie rozwiązywał ten problem?

11.4 Serwer

Słowem część serwerowa określa się bardzo wiele różnych pojęć, więc warto, żebyś dowiedział się o najpopularniejszych z nich.

Fizyczny serwer

Fizyczny serwer — to urządzenie reprezentujące osobny komputer z zasobami (procesor, pamięć, magazyn), które jest wykorzystywane do przetwarzania danych i zapewnienia pracy różnych aplikacji programowych. Te serwery są instalowane w centrach danych, gdzie dostarczają mocy do hostingu stron internetowych, aplikacji, baz danych i innych usług.

Wirtualny serwer

Wirtualny serwer — to programowo emulowany serwer, działający w środowisku fizycznego serwera. Dzięki technologiom wirtualizacji jeden fizyczny serwer może być podzielony na kilka izolowanych wirtualnych serwerów, z których każdy ma własny system operacyjny i może być niezależnie restartowany i konfigurowany.

Program-serwer (przykład Nginx)

Program-serwer, taki jak Nginx, to oprogramowanie serwerowe używane do obsługi zapytań o zasoby internetowe. Nginx jest dobrze znany jako serwer WWW, który może również pełnić funkcje serwera pocztowego proxy i odwrotnego proxy w architekturach z mikrousługami oraz jako load balancer.

Serwer baz danych

Serwer baz danych — to specjalizowany serwer używany do zarządzania bazami danych i obsługiwania zapytań do nich. Zapewnia centralne przechowywanie danych i ich przetwarzanie, udostępniając dane za pośrednictwem sieci. Serwery baz danych wspierają obsługę transakcji, wyszukiwanie i modyfikację danych, jednocześnie zapewniając niezawodność i bezpieczeństwo przechowywanych 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 na React i Node.js, który będzie pracować z bazą danych, otrzymywać żądania od NginX i wysyłać logi swoich działań do Splank.

Ale właśnie dzięki twojemu kodowi miliony użytkowników twojego produktu będą szczęśliwe. Będą korzystać z produktu, płacić za niego, a wtedy właściciel produktu też będzie szczęśliwy. Akcje firmy będą rosły, będziesz otrzymywać premie akcjami, i ty też będziesz szczęśliwy. To jakby jakiś cykl szczęścia w przyrodzie :)

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