Strona Główna / Blog

Jak Zrealizować Swój Pomysł Biznesowy z Google Cloud Platform

Michał Szafrański

Michał Szafrański

Programista - Architekt - Projektant Oprogramowania. 20 lat doświadczenia w informatyce, 15 lat programowania i projektowania aplikacji biznesowych. Magister wydziału FTiMS Politechniki Łódzkiej, podyplomowe studia „Zarządzanie Projektami” w SGH w Warszawie. Zainteresowania: Cloud Computing - Architectural Design Patterns - Google Cloud Platform. Miłośnik sprzętu i oprogramowania firmy Apple.

Google Cloud Platform

Startujesz w chmurze?
Doskonale trafiłeś.

To jest miejsce, które wskaże Ci drogę do świata chmury wykorzystując Google Cloud Platform.

Mam pomysł

To super. Od pomysłu do realizacji długa droga, ale z chmurą jest to dużo łatwiejsze, niż Ci się wydaje. Odpadają Ci kłopoty z infrastrukturą informatyczną, bo wszystko masz dostępne, wystarczy tylko kliknąć myszką.

Jedno kliknięcie dzieli Cię od uruchomienia własnego serwera w chmurze.
A może potrzebujesz bazy danych do realizacji swojego pomysłu?
Klik i masz.

Tylko, że ja nie mam pieniędzy na założenie biznesu

I wcale ich nie musisz mieć. Google Cloud Platform daje Ci na start 300 dolarów do wykorzystania przez rok.

Ta suma wystarczy Ci na sprawdzenie Twojego pomysłu, realizację pierwszych aplikacji i systemów.
Jeśli chcesz się dowiedzieć jak zdobyć pierwsze pieniądze na rozwój swojego pomysłu, obejrzyj pierwszy odcinek „Chmura dla Startupów”.

[youtube https://www.youtube.com/watch?v=xNPczmXdgR8]


Jak pewnie zauważyłeś w pierwszym odcinku, do realizacji swojego pomysłu potrzebował będziesz chociaż odrobiny wiedzy programistycznej. Bez tego się nie obędzie.

Ale ja nie umiem programować. Mam tylko genialny pomysł wart $1,000,000

I na to znajdą się rozwiązania. Masz kilka możliwości. Jedną z nich jest zatrudnienie programisty.

Ups, zapomniałem, przecież Ty nie masz pieniędzy, a programista będzie chciał bardzo dużo pieniędzy za swoją pracę. No to możesz albo przekonać jakiegoś programistę do swojego genialnego pomysłu w zamian za przyszłe udziały w zysku, albo zdobyć dofinansowanie.

Programy dofinansowania Unii Europejskiej, aniołów biznesu, programy pomocy dla Startupów – ścieżek jest wiele.

Jeśli nie uda Ci się zdobyć środków finansowych, to pozostaje Ci jeszcze jedna możliwość. Nauczyć się programowania i wykonać ten system samemu. To naprawdę nie jest takie trudne jak mogłoby się wydawać. Nauka programowania jest bardzo przyjemna i łatwa.

Obejrzyj drugą część „Chmura dla Startupów” i zobacz, jak prosto można wykonać prosty program.

[youtube https://www.youtube.com/watch?v=rrnJcMWQv-E]

Ale jak to wszystko ma działać?

Jeśli wejdziesz na listę dostępnych systemów na platformie Google Cloud to zobaczysz tam dziesiątki możliwych komponentów do zainstalowania.

Na pewno możesz sobie zadać pytanie, po co mi do wyboru kilka baz danych NoSQL, kilka baz danych SQL, różne rodzaje przechowywania obiektów. Jak te wszystkie klocki połączyć ze sobą, żeby to w ogóle chciało działać i żeby jeszcze działało wydajnie a żeby nie zapłacić za to fortuny.

Ja to porównuję do układania klocków Lego, składasz i wychodzi ładny domek, albo pojazd. Super sprawa i ile przy tym zabawy.

Jeśli oglądałeś firm „Lego Przygoda” to tam była postać architekta, Witruwiusza, który z kilku klocków, umiał utworzyć działające rzeczy.
Ja, jak ten architekt, podpowiem Ci kilka możliwych rozwiązań, jakie proponuje Google Cloud Platform na kilka standardowych pomysłów dla startupów.

Przed dalszą lekturą możesz obejrzeć trzeci odcinek „Chmura dla Startupów” gdzie omówię główne komponenty udostępnione na platformie Google Cloud. Pozwoli Ci to zapoznać się z komponentami występującymi w Google Cloud Platform.

[youtube https://www.youtube.com/watch?v=psb6xeviU2g]

Aplikacja mobilna

Najczęstszym przypadkiem obecnie rozwijanym w startupach, są aplikacje mobilne.
Najprostsza architektura dla takiej aplikacji składa się z kilku komponentów i na początek jest w zupełności wystarczająca do sprawdzenia pomysłów.

Cloud Endpoints zapewnia Ci autoryzację użytkownika, monitorowanie i skalowanie. W App Engine możesz użyć technologi Python, Java, C#, Go, PHP i Node.js, także każdy znajdzie coś dla siebie.

Baza danych SQL zapewni Ci łatwość rozwoju własnego pomysłu.

Aplikacje mobile bardzo łatwo zintegrować z Enpointsami i jest to bardzo elastyczne rozwiązanie.

Główne zalety to duża szybkość utworzenia oprogramowania na tak skonfigurowaną platformę, niska cena i skalowalność.

Mocno obciążona strona internetowa

Jeśli jednak Twój pomysł wykracza poza standardowe podejście lub jeśli potrzebujesz obsłużyć bardzo duży ruch, to mam dla Ciebie kolejną propozycję architektury, jaką możesz zastosować, korzystając z Google Cloud Platform.

Ta architektura nie będzie miała problemu z obsługą setek tysięcy użytkowników jednocześnie zalogowanych na stronie. Kwestia auto-skalowalności, która może włączać kolejne instancje serwerów.

Pierwszym punktem styku dla żądania przychodzącego do serwera jest Load Balancer rozkładający ruch na kolejne instancje App Engine.

Podczas zwiększonego ruchu można uruchamiać kolejne instancje App Engine, zależnie od potrzeb. Jest to proces automatyczny, który działa w zależności, jaki ruch jest generowany przez użytkowników.

Zastosowanie super szybkiego Cache w postaci Redis pozwala na przechowywanie w nim na przykład danych autoryzacji użytkowników zalogowanych, dane sesji użytkownika itp. Pozwala to na dowolne włącznie/wyłącznie instancji App Engine, bez obawy, że wpłynie to w jakiś sposób na bieżącą pracę użytkownika.

Zwróć też uwagę na przepływ danych, wszystkie zdarzenia systemowe zapisywane są najpierw do asynchronicznej kolejki i przetwarzane przez mechanizm Backeendu, którego zadaniem jest przetwarzanie zdarzeń biznesowych zaistniałych w systemie. Jest to zastosowany wzorzec architektoniczny Event Sourcing, którego zadaniem jest odblokowanie działań użytkownika i jak najszybsze ich przetworzenie przez system (ale już bez blokowania działania po stronie frontendu).

Asynchroniczne przetwarzanie pozwala na dużą skalowalność systemu, ponieważ można zwiększyć ilość zasobów w miejscu, gdzie one są faktycznie potrzebne.

Przy tak rozpisanej architekturze bardzo łatwo jest zastosować kolejny z popularnych wzorców architektonicznych. Jest to CQRS (Command Query Responsible Separation) czyi rozdzielenie logiki zapisu danych od logiki czytania danych. Zastosowanie CQRS pozwala na zachowanie porządku w kodzie programu oraz wykorzystać kilka trików architektonicznych związanych z szybkim dostępem do danych. Jednym z nich może być Materialized Views, czyli widoki zmaterializowane. Są to dane przygotowane wcześniej lub w trybie asynchronicznym i teraz można je czytać, lub trzymać w cache.

W celu odciążenia systemu zastosowałem również Cloud CDN, który może przechowywać dane statyczne, które rzadko się zmieniają, ale użytkownik często je pobiera. Najczęściej na stronie internetowej są to wszelkie biblioteki JavaScript, ikonki, zdjęcia stałe, filmy reklamowe.

Internet of Things

Jeśli twój pomysł jest jednak zupełnie inny i potrzebujesz zbierać dane z milionów czujników i analizować je, w czasie rzeczywistym, to przygotowałem też coś dla Ciebie. To taki analityczny kombajn. Z jednej strony wchodzą dane, a z drugiej strony wychodzi wiedza.

Zbieranie danych z mikro urządzeń, komunikujących się tylko za pomocą Bluetootha, musi odbywać się za pomocą bramki, która ma możliwość komunikacji internetowej (najlepiej https). Wysyła ona dane do naszego systemu.

Pierwszym punktem, do którego są przesyłane dane, jest usługa Cloud Pub/Sub. Jest ona agregatorem zdarzeń i może je kolejkować do dalszego przetworzenia przez system.

Bardzo ważnym aspektem przy rozwiązaniach czasu rzeczywistego jest monitorowanie usług. Stąd na wejściu zastosowany jest Stackdriver Monitoring i Stackdriver Logging, do logowania zdarzeń.

W kolejnym kroku przepływu danych zastosowany jest komponent Dataflow, którego zadaniem jest transformacja danych wejściowych na dane, które będą zapisywane w systemie. W tym miejscu dane mogą być agregowane, zmieniane do postaci, jaką chcemy przechowywać. Można też w tym miejscu dodać komponent Cloud Dataprep, w celu oczyszczenia danych.

W komponencie do zapisywania danych zostały zastosowane trzy rodzaje przechowywania. Są one zależne od tego, co system będzie potrzebował zapisywać. W Cloud Storage możesz zapisywać wideo i zdjęcia z podłączonych kamer, w Cloud Datastore dane bardziej ustrukturyzowane lub relacyjne. A jeśli masz bardzo dużo drobnych danych, to możesz wykorzystać Cloud BigTable.

Analiza danych jest centralnym punktem tego systemu. Składa się z kilku współdziałających komponentów. Dane przychodzą do komponentu Cloud Dataflow, którego zadaniem jest zarządzanie przepływem procesowania danych.
Współpracuje on z hurtownią danych BigQuery oraz komponentem Dataproc, który jest menadżerem klastra Apache Hadoopa i Sparka. Cała magia odbywa się w Cloud Datalab. Jest on narzędziem do eksploracji danych, analizy i uczenia maszynowego. Super narzędzie do pracy na danych. Bardzo dobrze zintegrowane z innymi systemami w Google Cloud Platform.

Na końcu naszego systemu zostały umieszczone komponenty wykorzystujące dane pochodzące z analizy. Mogą to być użytkownicy, którzy na podstawie danych muszą podjąć jakąś decyzję. Mogą to być też wejścia do innych systemów, których działanie jest zależne od danych zbieranych z czujników. Może to być na przykład sterowanie inteligentnym domem, który podejmie decyzje o zmianie temperatury na podstawie danych termicznych z czujników, w zależności od pory roku i prognozowanej pogody.

Klaster obliczeniowy

Obliczenia stanowią istotną część pracy dla inżynierów lub naukowców. Jeśli do swojej pracy potrzebujesz bardzo dużej mocy komputerowej, to chmura jest dla Ciebie idealnym rozwiązaniem. Zestawienie poniższego środowiska jest bardzo proste. Moc obliczeniowa, jaką możesz z niego uzyskać, jest właściwie dowolna (ograniczona tylko budżetem).

Schemat architektury jest bardzo prosty. Pierwszym komputerem jest tzw. HPC Head Node, komputer zarządzający klastrem High Performancem Computing. Jest on orkiestratorem zadań na kolejnym komponencie, który składa się z wielu instancji wirtualnych maszyn. Do takich zastosowań Google Cloud Platform przygotował specjalne instancje wirtualnych maszyn High Memory i High CPU. Mogą się one też łączyć do komponentów GPU.

Dane z obliczeń trafiają do kolejnego komponentu, systemu plików. Do przechowywania danych zastosowałem dwie instancje baz danych, jedna na dane wejściowe, które mogą zostać wgrane przez operatora lub mogą zostać wgrane przez poprzednie obliczenia i stanowić dane wejściowe dla kolejnych obliczeń. Jest też miejsce na dane wyjściowe, które mogą stanowić bazę do kolejnych obliczeń. Dane wyjściowe mogą zostać pobrane przez użytkownika lub może być to inny system.

Obsługa i dostarczanie treści marketingowych

Jeśli jesteś marketingowcem, sprzedawcą i potrzebujesz dostarczać dużo treści, to jest i dla Ciebie specjalna architektura, mogąca obsługiwać tysiące kampanii marketingowych, cały ruch w mediach społecznościowych i śledzić ruch milionów użytkowników.

To, co ją odróżnia od poprzednich architektów, to podział ruchu na dwie strefy. W przypadku awarii Load Balancer przekieruje ruch do drugiej strefy co pozwoli niezakłócenie obsługiwać dalszy ruch.

Podział i redundancja zasobów jest bardzo ważna w przypadku kiedy nie możesz sobie pozwolić na żadne przerwy w działaniu systemu i musi on działać nieprzerwanie 24/7.

A co jeśli mam serwerownię pełną „złomu”?

Jeśli jesteś w sytuacji, że masz już własną serwerownię, pełną sprzętu i nawet nie myślisz o migracji do chmury, to musisz wiedzieć, że kilka procent Startupów, które teraz startują na rynku, jako małe firmy, za kilka lat będą prężnie działającymi przedsiębiorstwami, z nowoczesnymi rozwiązaniami, zarówno biznesowymi, jak i technologicznymi. Możliwości tych nowoczesnych firm w zakresie skalowalności i reagowania na realia rynkowe rozłożą obecne firmy na łopatki.

Jeśli jeszcze nie myślisz o nowoczesnych rozwiązaniach infrastruktury informatycznej w chmurze, to możesz być skazany na wyginięcie jak dinozaury, które też były potężne, a pomimo to zniknęły z powierzchni ziemi.

Operowanie w chmurze i optymalizacja kosztów działania infrastruktury informatycznej to temat najchętniej poruszany obecnie przy rozmowach z biznesem o chmurze.

Ale przecież chmura jest droga?

Jak to może być tańsze od kupienia własnego serwera? A ja przekornie odpowiem, że chmura może być tania, czasami może być nawet za darmo.

Ale jak to możliwe?

Kwestia optymalizacji kosztów w Google Cloud Platform. Zobacz, jak uruchomiłem dwie maszyny wirtualne i nie zapłaciłem nawet centa za ich działanie.

[youtube https://www.youtube.com/watch?v=P-T0Z3re9lc]

Dodatkowym plusem optymalizacji kosztów działania infrastruktury informatycznej jest to, że żadna kontrola Urzędu Skarbowego nie będzie Ci straszna, nie będziesz musiał zakładać firmy w rajach podatkowych, wszystko jest legalne ;-)

Teraz jest czas, żebyś działał!

Przedstawiłem kilka propozycji architektury chmury

Możliwości konfiguracji i współpracy komponentów Google Cloud Platform jest wiele i wszystkie należy rozpatrywać pod kątem własnych wymagań oraz kosztów. Optymalizacja kosztów działania infrastruktury informatycznej jest bardzo ważnym aspektem, ale równie ważne są skalowalność i elastyczność.

Możliwości, jakie daje Ci chmura w zakresie szybkości reagowania, na zmieniając się warunki rynkowe Twojego przedsiębiorstwa, jest moim zdaniem kluczowym aspektem, który powinien być brany pod uwagę przy wyborze pomiędzy własną serwerownią a przejściem lub rozpoczęciem działalności w chmurze.

Jeśli jesteś zainteresowany tematami chmury, to napisz do nas, a my rozwiejemy wszelkie Twoje wątpliwości i pomożemy w transformacji i optymalizacji kosztów.

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.