{"id":95283,"date":"2020-09-27T19:42:23","date_gmt":"2020-09-27T17:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah"},"modified":"2020-09-27T19:42:23","modified_gmt":"2020-09-27T17:42:23","slug":"primenenie-low-code-v-analiticheskih-platformah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah","title":{"rendered":"Zastosowanie low-code w platformach analitycznych","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Szanowni Czytelnicy, \u017cycz\u0119 mi\u0142ego dnia!<\/p>\n<p>Zadanie budowy platform IT do gromadzenia i analizy danych pr\u0119dzej czy p\u00f3\u017aniej pojawia si\u0119 w ka\u017cdej firmie, kt\u00f3rej podstaw\u0105 s\u0105 us\u0142ugi oparte na z\u0142o\u017conych modelach biznesowych lub tworzenie technicznie skomplikowanych produkt\u00f3w. Budowa platform analitycznych to skomplikowane i czasoch\u0142onne zadanie. Jednak ka\u017cd\u0105 spraw\u0119 mo\u017cna upro\u015bci\u0107. W tym artykule chcia\u0142bym podzieli\u0107 si\u0119 do\u015bwiadczeniem w zakresie narz\u0119dzi low-code, kt\u00f3re pomagaj\u0105 w tworzeniu rozwi\u0105za\u0144 analitycznych. Do\u015bwiadczenie to zosta\u0142o zdobyte w trakcie realizacji szeregu projekt\u00f3w w obszarze Big Data Solutions firmy \u201eNeofleks\u201d. Obszar Big Data Solutions firmy \u201eNeofleks\u201d zajmuje si\u0119 od 2005 roku budow\u0105 hurtowni oraz jezior danych, optymalizacj\u0105 pr\u0119dko\u015bci przetwarzania informacji oraz opracowaniem metodologii zarz\u0105dzania jako\u015bci\u0105 danych.<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/ca066793a937041577085dfb813f979e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNikt nie uniknie \u015bwiadomego gromadzenia s\u0142abo i\/lub mocno ustrukturyzowanych danych. Z pewno\u015bci\u0105 nawet ma\u0142e firmy b\u0119d\u0105 musia\u0142y si\u0119 z tym zmierzy\u0107. W miar\u0119 rozwoju biznesu ambitny przedsi\u0119biorca napotka wyzwania zwi\u0105zane z opracowaniem programu lojalno\u015bciowego, b\u0119dzie chcia\u0142 przeanalizowa\u0107 efektywno\u015b\u0107 punkt\u00f3w sprzeda\u017cy, pomy\u015bli o reklamie ukierunkowanej oraz zainteresuje si\u0119 popytem na produkty towarzysz\u0105ce. Na pocz\u0105tku problem mo\u017cna spr\u00f3bowa\u0107 rozwi\u0105za\u0107 w spos\u00f3b \u201eimprowizowany\u201d. Jednak w miar\u0119 wzrostu firmy przej\u015bcie do platformy analitycznej staje si\u0119 nieuniknione.<\/p>\n<p>Kiedy mog\u0105 pojawi\u0107 si\u0119 zadania zwi\u0105zane z analiz\u0105 danych, kt\u00f3re przeistocz\u0105 si\u0119 w wyzwania klasy \u201eRocket Science\u201d? Z pewno\u015bci\u0105 w momencie, gdy m\u00f3wimy o naprawd\u0119 du\u017cych danych.<br \/>\nAby upro\u015bci\u0107 zadanie \u201eRocket Science\u201d, mo\u017cna je zrealizowa\u0107, \u201ejedz\u0105c s\u0142onia\u201d kawa\u0142ek po kawa\u0142ku. <\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/f81e7704b91a5b95303e4240d6012730.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm wi\u0119ksza dyskretno\u015b\u0107 i autonomiczno\u015b\u0107 b\u0119d\u0105 mia\u0142 Twoje aplikacje\/us\u0142ugi\/mikroserwisy, tym \u0142atwiej b\u0119dzie Tobie, Twoim kolegom oraz ca\u0142emu biznesowi \u201eprzetrawi\u0107 s\u0142onia\u201d.<\/p>\n<p>Do tego postulatu dosz\u0142o praktycznie wszystkich naszych klient\u00f3w, przekszta\u0142caj\u0105c krajobraz oparty na praktykach in\u017cynierii zespo\u0142\u00f3w DevOps.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJednak nawet przy \u201eoddzielnej, s\u0142oniowej\u201d diecie mamy ca\u0142kiem niez\u0142e szanse na \u201eprzejedzenie\u201d krajobrazu IT. W tym momencie warto si\u0119 zatrzyma\u0107, odetchn\u0105\u0107 i spojrze\u0107 w stron\u0119 <b>platformy in\u017cynierii low-code<\/b>.<\/p>\n<p>Wielu programist\u00f3w obawia si\u0119 perspektywy stagnacji kariery, gdy porzucaj\u0105 bezpo\u015brednie pisanie kodu na rzecz \"przeci\u0105gania\" element\u00f3w w interfejsach u\u017cytkownika system\u00f3w low-code. Jednak wprowadzenie maszyn nie spowodowa\u0142o znikni\u0119cia in\u017cynier\u00f3w, a jedynie wynios\u0142o ich prac\u0119 na nowy poziom!<\/p>\n<p>Zbadajmy dlaczego.<\/p>\n<p>Analiza danych w obszarze logistyki, telekomunikacji, bada\u0144 medi\u00f3w oraz sektora finansowego zawsze zwi\u0105zana jest z nast\u0119puj\u0105cymi pytaniami: <\/p>\n<ul>\n<li>Szybko\u015b\u0107 przeprowadzenia zautomatyzowanej analizy;<\/li>\n<li>Mo\u017cliwo\u015b\u0107 przeprowadzania eksperyment\u00f3w bez wp\u0142ywu na g\u0142\u00f3wny przep\u0142yw danych;<\/li>\n<li>Wiarygodno\u015b\u0107 przygotowanych danych;<\/li>\n<li>\u015aledzenie zmian i wersjonowanie;<\/li>\n<li>Data provenance, Data lineage, CDC;<\/li>\n<li>Szybko\u015b\u0107 dostarczania nowych funkcji na \u015brodowisko produkcyjne;<\/li>\n<li>I wspomniana kwestia: koszt rozwoju i wsparcia.<\/li>\n<\/ul>\n<p>\nOznacza to, \u017ce in\u017cynierowie maj\u0105 ogromn\u0105 ilo\u015b\u0107 zada\u0144 na wysokim poziomie, kt\u00f3re mog\u0105 by\u0107 efektywnie realizowane tylko wtedy, gdy uwolni\u0105 swoje my\u015bli od zada\u0144 niskopoziomowego programowania.<\/p>\n<p>Przes\u0142ankami przej\u015bcia programist\u00f3w na nowy poziom sta\u0142y si\u0119 ewolucja i cyfryzacja biznesu. Warto\u015b\u0107 programisty r\u00f3wnie\u017c si\u0119 zmienia: istnieje znaczny niedob\u00f3r programist\u00f3w zdolnych zg\u0142\u0119bi\u0107 istot\u0119 koncept\u00f3w automatyzowanego biznesu.<\/p>\n<p>Przeanalizujmy analogi\u0119 pomi\u0119dzy j\u0119zykami programowania niskiego a wysokiego poziomu. Przej\u015bcie od j\u0119zyk\u00f3w niskiego poziomu do wysokiego poziomu to przej\u015bcie od pisania \"bezpo\u015brednich dyrektyw w j\u0119zyku sprz\u0119towym\" do \"dyrektyw w j\u0119zyku ludzi\". Oznacza to dodanie pewnej warstwy abstrakcji. W tym kontek\u015bcie przej\u015bcie na platformy low-code z wysokopoziomowych j\u0119zyk\u00f3w programowania to przej\u015bcie od \"dyrektyw w j\u0119zyku ludzi\" do \"dyrektyw w j\u0119zyku biznesu\". Je\u015bli znajd\u0105 si\u0119 programi\u015bci, kt\u00f3rych ten fakt zasmuci, to by\u0107 mo\u017ce czuli si\u0119 smutni ju\u017c od chwili, gdy pojawi\u0142 si\u0119 Java Script, w kt\u00f3rym wykorzystuje si\u0119 funkcje sortowania tablicy. A te funkcje, rzecz jasna, maj\u0105 pod mask\u0105 programow\u0105 implementacj\u0119 innymi \u015brodkami tego samego wysokiego poziomu programowania.<\/p>\n<p><b>W zwi\u0105zku z tym low-code to jedynie nowy poziom abstrakcji. <\/b><\/p>\n<h2>Praktyczne do\u015bwiadczenie w zakresie u\u017cycia low-code<\/h2>\n<p>\nTematyka low-code jest do\u015b\u0107 szeroka, jednak teraz chcia\u0142bym opowiedzie\u0107 o praktycznym zastosowaniu 'koncept\u00f3w low-code' na przyk\u0142adzie jednego z naszych projekt\u00f3w.<\/p>\n<p>Dzia\u0142 Big Data Solutions firmy \u00abNeoflex\u00bb w du\u017cej mierze specjalizuje si\u0119 w sektorze finansowym, buduj\u0105c hurtownie i jeziora danych oraz automatyzuj\u0105c r\u00f3\u017cne raporty. W tej niszy zastosowanie low-code sta\u0142o si\u0119 standardem. W\u015br\u00f3d innych narz\u0119dzi low-code mo\u017cna wymieni\u0107 \u015brodki do organizacji proces\u00f3w ETL: Informatica Power Center, IBM Datastage, Pentaho Data Integration. Mo\u017cna te\u017c wspomnie\u0107 o Oracle Apex, kt\u00f3ry jest \u015brodowiskiem do szybkiego tworzenia interfejs\u00f3w dost\u0119pu do danych oraz ich edytowania. Jednak zastosowanie narz\u0119dzi low-code nie zawsze wi\u0105\u017ce si\u0119 z budowaniem aplikacji o w\u0105sko zdefiniowanej specyfice opartej na komercyjnych technologiach z wyra\u017an\u0105 zale\u017cno\u015bci\u0105 od dostawcy.<\/p>\n<p>Z pomoc\u0105 platform low-code mo\u017cna r\u00f3wnie\u017c organizowa\u0107 orkiestracj\u0119 strumieni danych, tworzy\u0107 platformy data science lub, na przyk\u0142ad, modu\u0142y do weryfikacji jako\u015bci danych. <\/p>\n<p>Jednym z praktycznych przyk\u0142ad\u00f3w zastosowania narz\u0119dzi low-code jest wsp\u00f3\u0142praca \u00abNeoflex\u00bb z firm\u0105 Mediascope, jednym z lider\u00f3w rynku bada\u0144 medi\u00f3w w Rosji. Jednym z cel\u00f3w tej firmy jest produkcja danych, na podstawie kt\u00f3rych reklamodawcy, platformy internetowe, stacje telewizyjne, radia, agencje reklamowe i marki podejmuj\u0105 decyzje o zakupie reklamy i planuj\u0105 swoje komunikacje marketingowe. <\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/d6410c1fe93231281bdd536798fe7c66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBadania medi\u00f3w to sfera biznesu o du\u017cym obci\u0105\u017ceniu technologicznym. Rozpoznawanie materia\u0142\u00f3w wideo, zbieranie danych z urz\u0105dze\u0144 analizuj\u0105cych ogl\u0105danie, pomiar aktywno\u015bci na stronach internetowych \u2013 to wszystko wymaga posiadania du\u017cego zespo\u0142u IT oraz kolosalnego do\u015bwiadczenia w budowaniu rozwi\u0105za\u0144 analitycznych. Jednak wyk\u0142adniczy wzrost ilo\u015bci informacji, liczby i r\u00f3\u017cnorodno\u015bci jej \u017ar\u00f3de\u0142 zmusza przemys\u0142 IT do ci\u0105g\u0142ego post\u0119pu. Najprostszym rozwi\u0105zaniem skalowania ju\u017c dzia\u0142aj\u0105cej platformy analitycznej Mediascope mog\u0142oby by\u0107 zwi\u0119kszenie zespo\u0142u IT. Jednak znacznie bardziej efektywnym rozwi\u0105zaniem jest przyspieszenie procesu rozwoju. Jednym z krok\u00f3w prowadz\u0105cych w tym kierunku mo\u017ce by\u0107 zastosowanie platform low-code.<\/p>\n<p>Na pocz\u0105tku projektu firma ju\u017c dysponowa\u0142a dzia\u0142aj\u0105cym rozwi\u0105zaniem produktowym. Jednak realizacja rozwi\u0105zania na MSSQL nie mog\u0142a w pe\u0142ni zaspokoi\u0107 oczekiwa\u0144 dotycz\u0105cych skalowalno\u015bci funkcjonalno\u015bci przy zachowaniu akceptowalnych koszt\u00f3w zmian.<\/p>\n<p>Postawione przed nami zadanie by\u0142o naprawd\u0119 ambitne \u2013 \"Neoflex\" i Mediascope mia\u0142y stworzy\u0107 przemys\u0142owe rozwi\u0105zanie w mniej ni\u017c rok, przy za\u0142o\u017ceniu, \u017ce MVP zostanie wydane w ci\u0105gu pierwszego kwarta\u0142u od daty rozpocz\u0119cia prac.<\/p>\n<p>Jako fundament do budowy nowej platformy danych, opartej na obliczeniach low-code, wybrano stos technologii Hadoop. Standardem przechowywania danych sta\u0142 si\u0119 HDFS z u\u017cyciem plik\u00f3w w formacie parquet. Do uzyskania dost\u0119pu do danych znajduj\u0105cych si\u0119 w platformie u\u017cyto Hive, w kt\u00f3rym wszystkie dost\u0119pne witryny s\u0105 przedstawione w formie zewn\u0119trznych tabel. \u0141adowanie danych do magazynu realizowano dzi\u0119ki Kafka i Apache NiFi.<\/p>\n<p>Narz\u0119dzie low-code w tej koncepcji zastosowano do optymalizacji najbardziej pracoch\u0142onnej zadania w budowie platformy analitycznej \u2013 zadania obliczania danych.<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/fe62234ab0ae611a0c4a536ca68af898.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nG\u0142\u00f3wnym mechanizmem do mapowania danych wybrane zosta\u0142o narz\u0119dzie low-code Datagram. <b>Neoflex Datagram<\/b> to narz\u0119dzie do rozwijania transformacji i strumieni danych. <br \/>\nZastosowuj\u0105c to narz\u0119dzie, mo\u017cna obej\u015b\u0107 si\u0119 bez r\u0119cznego pisania kodu w Scala. Kod Scala generowany jest automatycznie z u\u017cyciem podej\u015bcia Model Driven Architecture.<\/p>\n<p>Oczywist\u0105 zalet\u0105 tego podej\u015bcia jest przyspieszenie procesu rozwoju. Jednak, opr\u00f3cz szybko\u015bci, istniej\u0105 r\u00f3wnie\u017c inne zalety: <\/p>\n<ul>\n<li>Przegl\u0105danie zawarto\u015bci i struktury \u017ar\u00f3de\u0142\/odbiornik\u00f3w;<\/li>\n<li>\u015aledzenie pochodzenia obiekt\u00f3w strumienia danych a\u017c do poszczeg\u00f3lnych p\u00f3l (lineage);<\/li>\n<li>Cz\u0119\u015bciowe wykonywanie transformacji z podgl\u0105dem wynik\u00f3w po\u015brednich;<\/li>\n<li>Podgl\u0105d kodu \u017ar\u00f3d\u0142owego i jego korekta przed wykonaniem;<\/li>\n<li>Automatyczna walidacja transformacji;<\/li>\n<li>Automatyczne \u0142adowanie danych 1 do 1.<\/li>\n<\/ul>\n<p>\nPr\u00f3g wej\u015bcia w rozwi\u0105zania low-code do generacji transformacji jest stosunkowo niski: programista musi zna\u0107 SQL i mie\u0107 do\u015bwiadczenie w pracy z narz\u0119dziami ETL. Warto jednak zaznaczy\u0107, \u017ce generatory transformacji oparte na kodzie nie s\u0105 narz\u0119dziami ETL w szerokim sensie tego s\u0142owa. Narz\u0119dzia low-code mog\u0105 nie mie\u0107 w\u0142asnego \u015brodowiska do wykonania kodu. Oznacza to, \u017ce wygenerowany kod b\u0119dzie dzia\u0142a\u0142 w tym \u015brodowisku, kt\u00f3re istnia\u0142o w klastrze przed zainstalowaniem rozwi\u0105zania low-code. I to, by\u0107 mo\u017ce, kolejny plus w karierze low-code. Poniewa\u017c r\u00f3wnolegle z zespo\u0142em low-code mo\u017ce pracowa\u0107 \u201eklasyczny\u201d zesp\u00f3\u0142, wdra\u017caj\u0105cy funkcjonalno\u015b\u0107 np. w czystym kodzie Scala. Wprowadzenie poprawek obu zespo\u0142\u00f3w do produkcji b\u0119dzie proste i \u201ebezszwowe\u201d.<\/p>\n<p>Warto r\u00f3wnie\u017c zauwa\u017cy\u0107, \u017ce opr\u00f3cz low-code istniej\u0105 te\u017c rozwi\u0105zania no-code. Zasadniczo to r\u00f3\u017cne rzeczy. Low-code w wi\u0119kszym stopniu pozwala programi\u015bcie ingerowa\u0107 w generowany kod. W przypadku Datagram mo\u017cliwe jest przegl\u0105danie i edytowanie generowanego kodu Scala, rozwi\u0105zanie no-code mo\u017ce nie oferowa\u0107 tej mo\u017cliwo\u015bci. Ta r\u00f3\u017cnica jest istotna nie tylko pod wzgl\u0119dem elastyczno\u015bci rozwi\u0105zania, ale tak\u017ce komfortu i motywacji w pracy in\u017cynier\u00f3w danych. <\/p>\n<h2>Architektura rozwi\u0105zania<\/h2>\n<p>\nSpr\u00f3bujmy zrozumie\u0107, jak dok\u0142adnie narz\u0119dzie low-code pomaga w optymalizacji szybko\u015bci rozwoju funkcjonalno\u015bci oblicze\u0144 danych. Na pocz\u0105tek zbadajmy funkcjonaln\u0105 architektur\u0119 systemu. W tym przypadku przyk\u0142adem jest model produkcji danych do bada\u0144 medialnych.<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/365f1b1cf69bf2a71854eb05c5bba809.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>\u0179r\u00f3d\u0142a danych w naszym przypadku s\u0105 bardzo zr\u00f3\u017cnicowane i r\u00f3\u017cnorodne:<\/b><\/p>\n<ul>\n<li>Piprometry (TV meters) to programowo-sprz\u0119towe urz\u0105dzenia, kt\u00f3re odczytuj\u0105 zachowanie u\u017cytkownik\u00f3w w\u015br\u00f3d respondent\u00f3w panelu telewizyjnego \u2013 kto, kiedy i jaki kana\u0142 telewizyjny ogl\u0105da\u0142 w gospodarstwie domowym bior\u0105cym udzia\u0142 w badaniu. Dostarczane informacje to strumie\u0144 interwa\u0142\u00f3w ogl\u0105dania emisji powi\u0105zanych z pakietem medialnym i produktem medialnym. Dane na etapie \u0142adowania do Data Lake mog\u0105 by\u0107 wzbogacone o atrybuty demograficzne, powi\u0105zania geostrategiczne, strefy czasowe i inne informacje potrzebne do analizy ogl\u0105dalno\u015bci danego produktu medialnego. Zrealizowane pomiary mog\u0105 by\u0107 wykorzystane do analizy lub planowania kampanii reklamowych, oceny aktywno\u015bci i preferencji odbiorc\u00f3w, tworzenia ram\u00f3wki emisji;<\/li>\n<li>Dane mog\u0105 pochodzi\u0107 z system\u00f3w monitorowania strumieniowych nadawc\u00f3w telewizyjnych i pomiaru ogl\u0105dalno\u015bci tre\u015bci zasob\u00f3w wideo w Internecie;<\/li>\n<li>Narz\u0119dzia pomiarowe w \u015brodowisku sieciowym, w tym zar\u00f3wno liczniki centrystyczne, jak i u\u017cytkownikocentryczne. Dostawc\u0105 danych dla Data Lake mo\u017ce by\u0107 rozszerzenie przegl\u0105darki research bar oraz mobilna aplikacja z wbudowanym; <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/vpn\/\"   title=\"VPN\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"133\">VPN<\/a>.<\/li>\n<li>Dane mog\u0105 r\u00f3wnie\u017c pochodzi\u0107 z platform, kt\u00f3re konsoliduj\u0105 wyniki wype\u0142nienia ankiet online oraz wyniki przeprowadzonych rozm\u00f3w telefonicznych w badaniach sonda\u017cowych firmy;<\/li>\n<li>Dodatkowe wzbogacenie zbioru danych mo\u017ce odbywa\u0107 si\u0119 poprzez \u0142adowanie informacji z log\u00f3w firm-partner\u00f3w.<\/li>\n<\/ul>\n<p>\nImplementacja as is \u0142adowania z system\u00f3w \u017ar\u00f3d\u0142owych do pocz\u0105tkowego stagingu surowych danych mo\u017ce by\u0107 zorganizowana na r\u00f3\u017cne sposoby. W przypadku wykorzystywania do tych cel\u00f3w low-code mo\u017cliwa jest automatyczna generacja scenariuszy \u0142adowania na podstawie metadanych. W tym przypadku nie ma potrzeby schodzi\u0107 na poziom rozwoju mapowa\u0144 source to target. Do realizacji automatycznego \u0142adowania musimy nawi\u0105za\u0107 po\u0142\u0105czenie z \u017ar\u00f3d\u0142em, a nast\u0119pnie zdefiniowa\u0107 w interfejsie \u0142adowania list\u0119 encji, kt\u00f3re maj\u0105 by\u0107 \u0142adowane. Tworzenie struktury katalog\u00f3w w HDFS odb\u0119dzie si\u0119 automatycznie i b\u0119dzie zgodne ze struktur\u0105 przechowywania danych w systemie \u017ar\u00f3d\u0142owym.<\/p>\n<p>Jednak w kontek\u015bcie tego projektu postanowili\u015bmy nie korzysta\u0107 z tej funkcji platformy low-code, poniewa\u017c firma Mediascope ju\u017c samodzielnie rozpocz\u0119\u0142a prac\u0119 nad stworzeniem podobnej us\u0142ugi na bazie Nifi + Kafka.<\/p>\n<p>Nale\u017cy od razu zaznaczy\u0107, \u017ce te narz\u0119dzia nie s\u0105 wymienne, a raczej uzupe\u0142niaj\u0105 si\u0119 nawzajem. Nifi i Kafka mog\u0105 dzia\u0142a\u0107 zar\u00f3wno w bezpo\u015brednim po\u0142\u0105czeniu (Nifi -&gt; Kafka), jak i odwrotnym (Kafka -&gt; Nifi). W platformie bada\u0144 medialnych wykorzystano pierwsz\u0105 wersj\u0119 po\u0142\u0105czenia.<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/8284ef5bd6d3b947998ffd42bfb66dbd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW naszym przypadku Nifi musia\u0142 przetwarza\u0107 r\u00f3\u017cne typy danych z system\u00f3w \u017ar\u00f3d\u0142owych i przesy\u0142a\u0107 je do brokera Kafka. Kierunek wiadomo\u015bci do okre\u015blonego tematu Kafka realizowany by\u0142 za pomoc\u0105 procesor\u00f3w Nifi PublishKafka. Orkiestracja i obs\u0142uga tych pipeline'\u00f3w odbywa si\u0119 w wizualnym interfejsie. Narz\u0119dzie Nifi i u\u017cycie po\u0142\u0105czenia Nifi + Kafka mo\u017cna r\u00f3wnie\u017c okre\u015bli\u0107 jako podej\u015bcie low-code do rozwoju, kt\u00f3re ma niski pr\u00f3g wej\u015bcia w technologie Big Data i przyspiesza proces tworzenia aplikacji. <\/p>\n<p>Kolejnym etapem realizacji projektu by\u0142o doprowadzenie do formatu jednolitej warstwy semantycznej szczeg\u00f3\u0142owych danych. W przypadku, gdy encja ma historyczne atrybuty, obliczenia s\u0105 prowadzone w kontek\u015bcie rozwa\u017canej partycji. Je\u015bli jednak encja nie jest historyczna, opcjonalnie mo\u017cliwy jest albo przeliczanie ca\u0142ej zawarto\u015bci obiektu, albo ca\u0142kowity brak przeliczenia tego obiektu (w wyniku braku zmian). Na tym etapie generowane s\u0105 klucze dla wszystkich encji. Klucze s\u0105 zapisywane w odpowiednich podr\u0119cznikach master-objects Hbase, kt\u00f3re zawieraj\u0105 zgodno\u015b\u0107 pomi\u0119dzy kluczami w platformie analitycznej a kluczami z system\u00f3w \u017ar\u00f3d\u0142owych. Konsolidacji atomowych encji towarzyszy wzbogacanie wynikami wst\u0119pnych oblicze\u0144 danych analitycznych. Frameworkiem do oblicze\u0144 danych by\u0142 Spark. Opisany funkcjonalno\u015b\u0107 przekszta\u0142cania danych do jednolitej semantyki zosta\u0142 r\u00f3wnie\u017c zaimplementowany na podstawie mapowa\u0144 narz\u0119dzia low-code Datagram.<\/p>\n<p>W docelowej architekturze konieczne by\u0142o zapewnienie dost\u0119pu SQL do danych dla u\u017cytkownik\u00f3w biznesowych. Do tej opcji wykorzystano Hive. Rejestracja obiekt\u00f3w w Hive odbywa si\u0119 automatycznie po w\u0142\u0105czeniu opcji \u201eZarejestruj tabel\u0119 Hive\u201d w narz\u0119dziu low-code.<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/a13f7260d067d3d21b7090bd8fa10aff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Zarz\u0105dzanie przep\u0142ywem oblicze\u0144<\/h2>\n<p>\nDatagram ma interfejs do tworzenia projekt\u00f3w przep\u0142ywu pracy. Uruchomienie mapowania mo\u017cna przeprowadzi\u0107 za pomoc\u0105 harmonogramu Oozie. W interfejsie programisty przep\u0142yw\u00f3w mo\u017cna tworzy\u0107 schematy r\u00f3wnoleg\u0142ych, sekwencyjnych lub zale\u017cnych operacji przetwarzania danych. Obs\u0142ugiwane s\u0105 skrypty pow\u0142oki i programy Java. Mo\u017cliwe jest tak\u017ce u\u017cycie <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/dts-los-angeles\/\"   title=\"serwera\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3662\">serwera<\/a> Apache Livy. Apache Livy jest u\u017cywany do uruchamiania aplikacji bezpo\u015brednio z \u015brodowiska deweloperskiego. <\/p>\n<p>Je\u015bli firma ma ju\u017c w\u0142asny orkiestrator proces\u00f3w, mo\u017cliwe jest u\u017cycie REST API do integrowania mapowa\u0144 w ju\u017c istniej\u0105cy przep\u0142yw. Na przyk\u0142ad mieli\u015bmy do\u015b\u0107 udane do\u015bwiadczenie z integrowaniem mapowa\u0144 w Scali w orkiestratorach napisanych w PLSQL i Kotlinie. REST API narz\u0119dzia low-code obejmuje takie operacje jak generowanie wykonalnego roku na podstawie projektu mapowania, wywo\u0142ywanie mapowania, wywo\u0142ywanie sekwencji mapowa\u0144 i oczywi\u015bcie przesy\u0142anie parametr\u00f3w w URL do uruchomienia mapowa\u0144.<\/p>\n<p>Obok Oozie mo\u017cna zorganizowa\u0107 przep\u0142yw oblicze\u0144 za pomoc\u0105 Airflow. Nie b\u0119d\u0119 si\u0119 zbyt d\u0142ugo zatrzymywa\u0142 na por\u00f3wnaniu Oozie i Airflow, po prostu powiem, \u017ce w kontek\u015bcie prac nad projektem bada\u0144 medialnych wyb\u00f3r pad\u0142 na Airflow. G\u0142\u00f3wnymi argumentami by\u0142y bardziej aktywna spo\u0142eczno\u015b\u0107 rozwijaj\u0105ca produkt oraz bardziej rozwini\u0119ty interfejs + API.<\/p>\n<p>Airflow jest r\u00f3wnie\u017c dobry, poniewa\u017c do opisu proces\u00f3w obliczeniowych u\u017cywa j\u0119zyka Python, kt\u00f3ry wielu lubi. W og\u00f3le platform do zarz\u0105dzania przep\u0142ywami pracy z otwartym \u017ar\u00f3d\u0142em jest niewiele. Uruchamianie i monitorowanie wykonania proces\u00f3w (w tym z wykresem Gantta) dodaje punkty do karmy Airflow. <\/p>\n<p>Format pliku konfiguracyjnego do uruchamiania mapowa\u0144 rozwi\u0105zania low-code sta\u0142 si\u0119 spark-submit. Sta\u0142o si\u0119 to z dw\u00f3ch powod\u00f3w. Po pierwsze, spark-submit pozwala bezpo\u015brednio uruchomi\u0107 plik jar z konsoli. Po drugie, mo\u017ce zawiera\u0107 wszystkie niezb\u0119dne informacje do skonfigurowania przep\u0142ywu pracy (co u\u0142atwia pisanie skrypt\u00f3w tworz\u0105cych Dag).<br \/>\nNajcz\u0119\u015bciej spotykanym elementem przep\u0142ywu pracy Airflow w naszym przypadku sta\u0142 si\u0119 SparkSubmitOperator.<\/p>\n<p>SparkSubmitOperator pozwala uruchamia\u0107 jar\u2019y \u2014 spakowane mapowania Datagram z wcze\u015bniej przygotowanymi parametrami wej\u015bciowymi.<\/p>\n<p>Warto wspomnie\u0107, \u017ce ka\u017cde zadanie Airflow wykonuje si\u0119 w osobnym w\u0105tku i nie ma wiedzy o innych zadaniach. W zwi\u0105zku z tym interakcja mi\u0119dzy zadaniami odbywa si\u0119 za pomoc\u0105 operator\u00f3w steruj\u0105cych, takich jak DummyOperator czy BranchPythonOperator.<\/p>\n<p>Zastosowanie rozwi\u0105zania low-code Datagram w po\u0142\u0105czeniu z uniwersalizacj\u0105 plik\u00f3w konfiguracyjnych (tworz\u0105cych Dag) przyczyni\u0142o si\u0119 do znacznego przyspieszenia i uproszczenia procesu tworzenia strumieni \u0142adowania danych.<\/p>\n<h2>Obliczanie witryn<\/h2>\n<p>\nZ pewno\u015bci\u0105 najbardziej intelektualnie wymagaj\u0105cy etap w produkcji danych analitycznych to krok budowy witryn. W kontek\u015bcie jednego z proces\u00f3w obliczeniowych firmy badawczej na tym etapie odbywa si\u0119 dopasowanie do wzorcowej transmisji uwzgl\u0119dniaj\u0105cej korekt\u0119 stref czasowych, zwi\u0105zan\u0105 z sieci\u0105 emisji. Mo\u017cliwa jest r\u00f3wnie\u017c korekta lokalnej sieci emituj\u0105cej (lokalne wiadomo\u015bci i reklama). W\u015br\u00f3d innych zada\u0144 na tym etapie wykonywane jest dzielenie interwa\u0142\u00f3w ci\u0105g\u0142ego ogl\u0105dania produkt\u00f3w medialnych na podstawie analizy interwa\u0142\u00f3w ogl\u0105dania. Jednocze\u015bnie nast\u0119puje \"wa\u017cenie\" warto\u015bci ogl\u0105dania na podstawie informacji o ich znaczeniu (obliczanie wsp\u00f3\u0142czynnika korekcyjnego).<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/b5f90f7d1d95c97c9819218aab9079c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOddzielnym krokiem przygotowania witryn jest walidacja danych. Algorytm walidacji wi\u0105\u017ce si\u0119 z zastosowaniem szeregu modeli matematycznych. Jednak u\u017cycie platformy low-code pozwala na rozbicie skomplikowanego algorytmu na szereg oddzielnych, wizualnie czytelnych mapowa\u0144. Ka\u017cde z mapowa\u0144 wykonuje w\u0105skie zadanie. W rezultacie mo\u017cliwe jest przeprowadzenie po\u015bredniego debugowania, logowania i wizualizacji etap\u00f3w przygotowania danych. <\/p>\n<p>Postanowiono dyskretyzowa\u0107 algorytm walidacji na nast\u0119puj\u0105ce podetapy:<\/p>\n<ul>\n<li>Budowa regresji zale\u017cno\u015bci ogl\u0105dania telewizji w regionie w por\u00f3wnaniu do ogl\u0105dania wszystkich sieci w regionie przez ostatnie 60 dni. <\/li>\n<li>Obliczanie znormalizowanych reszt (odchylenia warto\u015bci rzeczywistych od przewidywanych przez model regresyjny) dla wszystkich punkt\u00f3w regresji i dla dnia obliczeniowego.<\/li>\n<li>Wyodr\u0119bnienie anormalnych par region-sie\u0107 telewizyjna, gdzie znormalizowana reszta dnia obliczeniowego przekracza norm\u0119 (okre\u015blon\u0105 ustawieniem operacji).<\/li>\n<li>Przeliczenie skorygowanego stanu student\u00f3w dla anormalnych par region-sie\u0107 telewizyjna dla ka\u017cdego respondenta, kt\u00f3ry ogl\u0105da\u0142 sie\u0107 w regionie z okre\u015bleniem wk\u0142adu danego respondenta (zmiana skorygowanego stanu) przy wy\u0142\u0105czeniu ogl\u0105dania tego respondenta z pr\u00f3by.<\/li>\n<li>Poszukiwanie kandydat\u00f3w, kt\u00f3rych wykluczenie przywraca skorygowany stan obliczeniowego dnia do normy. <\/li>\n<\/ul>\n<p>\nPodany powy\u017cej przyk\u0142ad potwierdza hipotez\u0119, \u017ce in\u017cynier danych ma na g\u0142owie zbyt wiele rzeczy\u2026 I je\u015bli to naprawd\u0119 \"in\u017cynier\", a nie \"programista\", to l\u0119k przed degradacj\u0105 zawodow\u0105 przy u\u017cyciu narz\u0119dzi low-code powinien ostatecznie ust\u0105pi\u0107.<\/p>\n<h2>Co jeszcze potrafi low-code?<\/h2>\n<p>\nZakres zastosowania narz\u0119dzia low-code do przetwarzania danych wsadowych i strumieniowych bez konieczno\u015bci r\u0119cznego pisania kodu w Scala nie ko\u0144czy si\u0119.<\/p>\n<p>Zastosowanie low-code w tworzeniu data lake'\u00f3w sta\u0142o si\u0119 dla nas pewnym standardem. Mo\u017cna chyba powiedzie\u0107, \u017ce rozwi\u0105zania oparte na stosie Hadoop powielaj\u0105 \u015bcie\u017ck\u0119 rozwoju klasycznych hurtowni danych opartych na RDBMS. Narz\u0119dzia low-code na stosie Hadoop mog\u0105 rozwi\u0105zywa\u0107 zar\u00f3wno zadania przetwarzania danych, jak i zadania tworzenia ko\u0144cowych interfejs\u00f3w BI. Nale\u017cy jednak zauwa\u017cy\u0107, \u017ce pod poj\u0119ciem BI mo\u017cna rozumie\u0107 nie tylko reprezentacj\u0119 danych, ale tak\u017ce ich edycj\u0119 przez u\u017cytkownik\u00f3w biznesowych. Ta funkcjonalno\u015b\u0107 jest cz\u0119sto przez nas stosowana przy budowie platform analitycznych dla sektora finansowego. <\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/cde5ce9dac9fcc9356b2b0ed291e299c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMi\u0119dzy innymi, za pomoc\u0105 low-code i, w szczeg\u00f3lno\u015bci, Datagram, mo\u017cna rozwi\u0105za\u0107 problem \u015bledzenia pochodzenia obiekt\u00f3w przep\u0142ywu danych z atomowo\u015bci\u0105 do pojedynczych p\u00f3l (lineage). W tym celu w narz\u0119dziu low-code zaimplementowano po\u0142\u0105czenie z Apache Atlas i Cloudera Navigator. W zasadzie, deweloper musi zarejestrowa\u0107 zbi\u00f3r obiekt\u00f3w w s\u0142ownikach Atlas i odwo\u0142a\u0107 si\u0119 do zarejestrowanych obiekt\u00f3w przy tworzeniu mapowa\u0144. Mechanizm \u015bledzenia pochodzenia danych lub analiza zale\u017cno\u015bci obiekt\u00f3w oszcz\u0119dza du\u017c\u0105 ilo\u015b\u0107 czasu w przypadku konieczno\u015bci wprowadzania poprawek w algorytmach obliczeniowych. Na przyk\u0142ad, podczas sporz\u0105dzania raport\u00f3w finansowych ta funkcjonalno\u015b\u0107 pozwala na \u0142atwiejsze przetrwanie okresu zmian w legislacji. Im lepiej rozumiemy zale\u017cno\u015bci mi\u0119dzy formami w kontek\u015bcie obiekt\u00f3w szczeg\u00f3\u0142owej warstwy, tym mniejsze ryzyko \u201eniespodziewanych\u201d defekt\u00f3w i mniejsza liczba poprawek. <\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/0b351b116564090bd03f6adf3fc52616.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Jako\u015b\u0107 Danych &amp; Low-code<\/h2>\n<p>\nKolejnym zadaniem, kt\u00f3re zosta\u0142o zrealizowane za pomoc\u0105 narz\u0119dzia low-code w projekcie firmy Mediascope, by\u0142o zadanie klasy Jako\u015b\u0107 Danych. Cech\u0105 realizacji potoku weryfikacji danych dla projektu firmy badawczej by\u0142o brak wp\u0142ywu na funkcjonalno\u015b\u0107 i szybko\u015b\u0107 dzia\u0142ania g\u0142\u00f3wnego strumienia oblicze\u0144 danych. W celu orkiestracji niezale\u017cnymi strumieniami weryfikacji danych wykorzystano ju\u017c znany Apache Airflow. W miar\u0119 gotowo\u015bci ka\u017cdego kroku produkcji danych r\u00f3wnolegle uruchamiano odr\u0119bn\u0105 cz\u0119\u015b\u0107 potoku DQ. <\/p>\n<p>Dobr\u0105 praktyk\u0105 jest monitorowanie jako\u015bci danych od momentu ich powstania na platformie analitycznej. Maj\u0105c informacje o metadanych, mo\u017cemy ju\u017c od momentu wprowadzenia informacji do warstwy pierwotnej weryfikowa\u0107 spe\u0142nianie podstawowych warunk\u00f3w \u2014 not null, constraints, foreign keys. Ta funkcjonalno\u015b\u0107 zosta\u0142a zrealizowana na podstawie automatycznie generowanych mapowa\u0144 rodziny data quality w Datagram. Generacja kodu w tym przypadku r\u00f3wnie\u017c opiera si\u0119 na metadanych modelu. W projekcie firmy Mediascope po\u0142\u0105czenie odbywa\u0142o si\u0119 z metadanymi produktu Enterprise Architect. <\/p>\n<p>Dzi\u0119ki po\u0142\u0105czeniu narz\u0119dzia low-code i Enterprise Architect automatycznie zosta\u0142y wygenerowane nast\u0119puj\u0105ce kontrole:<\/p>\n<ul>\n<li>Kontrola obecno\u015bci warto\u015bci \u201enull\u201d w polach z modyfikatorem \u201enot null\u201d; <\/li>\n<li>Kontrola obecno\u015bci duplikat\u00f3w klucza g\u0142\u00f3wnego;<\/li>\n<li>Sprawdzanie klucza obcego encji;<\/li>\n<li>Sprawdzanie unikalno\u015bci wiersza wed\u0142ug zestawu p\u00f3l.<\/li>\n<\/ul>\n<p>\nDla bardziej z\u0142o\u017conych kontroli dost\u0119pno\u015bci i wiarygodno\u015bci danych stworzono mapowanie z wykorzystaniem Scala Expression, kt\u00f3re przyjmuje jako wej\u015bcie zewn\u0119trzny kod Spark SQL stworzony przez analityk\u00f3w w Zeppelin.<\/p>\n<p><img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/f6dcc5719077a3186d23d7bdcb412c45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOczywi\u015bcie, do autogeneracji kontroli nale\u017cy podchodzi\u0107 stopniowo. W ramach opisywanego projektu temu towarzyszy\u0142y nast\u0119puj\u0105ce kroki:<\/p>\n<ul>\n<li>DQ, zrealizowane w notatnikach Zeppelin;<\/li>\n<li>DQ, zintegrowane w mapowaniu;<\/li>\n<li>DQ w postaci oddzielnych du\u017cych mapowa\u0144, zawieraj\u0105cych ca\u0142y zestaw kontroli dla pojedynczej encji;<\/li>\n<li>Uniwersalne parametryzowane mapowania DQ, akceptuj\u0105ce jako wej\u015bcie informacje o metadanych i kontrolach biznesowych.<\/li>\n<\/ul>\n<p>\nNajwi\u0119ksz\u0105 zalet\u0105 stworzenia serwisu parametryzowanych kontroli jest skr\u00f3cenie czasu dostarczenia funkcjonalno\u015bci na \u015brodowisko produkcyjne. Nowe kontrole jako\u015bci mog\u0105 pomija\u0107 klasyczny wzorzec dostarczania kodu po\u015brednio przez \u015brodowiska deweloperskie i testowe:<\/p>\n<ul>\n<li>Wszystkie kontrole metadanych s\u0105 generowane automatycznie przy zmianie modelu w EA;<\/li>\n<li>Kontrole dost\u0119pno\u015bci danych (okre\u015blenie obecno\u015bci jakichkolwiek danych w danym momencie) mog\u0105 by\u0107 generowane na podstawie s\u0142ownika, kt\u00f3ry przechowuje oczekiwan\u0105 synchronizacj\u0119 pojawienia si\u0119 kolejnej partii danych w podziale na obiekty;<\/li>\n<li>Kontrole biznesowe wiarygodno\u015bci danych s\u0105 tworzone przez analityk\u00f3w w notatnikach Zeppelin. Z nich s\u0105 kierowane bezpo\u015brednio do tabel konfiguracyjnych modu\u0142u DQ na \u015brodowisku produkcyjnym. <\/li>\n<\/ul>\n<p>\nRyzyko bezpo\u015bredniego wysy\u0142ania skrypt\u00f3w na produkcj\u0119 praktycznie nie istnieje. Nawet przy b\u0142\u0119dzie sk\u0142adniowym maksymalne, co nam grozi, to niewykonanie jednej kontroli, poniewa\u017c przep\u0142yw obliczania danych i przep\u0142yw uruchamiania kontroli jako\u015bci s\u0105 od siebie oddzielone.<\/p>\n<p>W istocie serwis DQ jest na sta\u0142e uruchomiony na \u015brodowisku produkcyjnym i gotowy do rozpocz\u0119cia pracy w momencie pojawienia si\u0119 kolejnej partii danych. <\/p>\n<h2>Zamiast zako\u0144czenia<\/h2>\n<p>\nZaleta stosowania low-code jest oczywista. Programi\u015bci nie musz\u0105 tworzy\u0107 aplikacji \u201eod podstaw\u201d. A zwolniony od dodatkowych zada\u0144 programista osi\u0105ga wyniki szybciej. Szybko\u015b\u0107 z kolei uwalnia dodatkowy czas na rozwi\u0105zywanie problem\u00f3w optymalizacji. W zwi\u0105zku z tym, w tej sytuacji mo\u017cna liczy\u0107 na dost\u0119pno\u015b\u0107 bardziej jako\u015bciowego i szybkiego rozwi\u0105zania.<\/p>\n<p><b>Oczywi\u015bcie, low-code nie jest panaceum i magia sama w sobie si\u0119 nie wydarzy:<\/b><\/p>\n<ul>\n<li>Przemys\u0142 low-code przechodzi etap \u201ewzmocnienia\u201d, i p\u00f3ki co brakuje w nim jednorodnych standard\u00f3w przemys\u0142owych;<\/li>\n<li>Wiele rozwi\u0105za\u0144 low-code nie jest darmowych, a ich zakup powinien by\u0107 \u015bwiadomym krokiem, podj\u0119tym z pe\u0142n\u0105 pewno\u015bci\u0105 finansowych korzy\u015bci z ich wykorzystania;<\/li>\n<li>Wiele rozwi\u0105za\u0144 low-code nie zawsze dobrze wsp\u00f3\u0142pracuje z GIT \/ SVN. Albo s\u0105 niewygodne w u\u017cyciu w przypadku ukrycia generowanego kodu;<\/li>\n<li>Przy rozszerzaniu architektury mo\u017ce by\u0107 konieczne dostosowanie rozwi\u0105zania low-code \u2013 co z kolei powoduje efekt \u201eprzywi\u0105zania i zale\u017cno\u015bci\u201d od dostawcy rozwi\u0105zania low-code.<\/li>\n<li>Odpowiedni poziom zapewnienia bezpiecze\u0144stwa jest mo\u017cliwy, ale bardzo pracoch\u0142onny i skomplikowany w realizacji silnik\u00f3w system\u00f3w low-code. Platformy low-code powinny by\u0107 wybierane nie tylko na podstawie poszukiwania korzy\u015bci z ich u\u017cywania. W wyborze warto zada\u0107 sobie pytania o obecno\u015b\u0107 funkcjonalno\u015bci zarz\u0105dzania dost\u0119pem oraz delegowaniem\/eskalacj\u0105 danych identyfikacyjnych na poziomie ca\u0142ego IT krajobrazu organizacji.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Zastosowanie low-code w platformach analitycznych\" src=\"\/wp-content\/uploads\/2020\/09\/8ad44d2f71f519b70f5ae1e1fe722066.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJednak\u017ce je\u015bli wszystkie wady wybranego systemu s\u0105 ci znane, a korzy\u015bci z jego wykorzystania mimo wszystko przewa\u017caj\u0105, przechod\u017a do low-code bez obaw. Tym bardziej, \u017ce przej\u015bcie na niego jest nieuniknione \u2013 tak jak ka\u017cda ewolucja.<\/p>\n<p>Je\u015bli jeden programista na platformie low-code wykonuje swoj\u0105 prac\u0119 szybciej ni\u017c dw\u00f3ch programist\u00f3w bez low-code, to daje to firmie przewag\u0119 we wszystkich aspektach. Pr\u00f3g wej\u015bcia w rozwi\u0105zania low-code jest ni\u017cszy ni\u017c w przypadku \"tradycyjnych\" technologii, co pozytywnie wp\u0142ywa na problem braku personelu. Korzystaj\u0105c z narz\u0119dzi low-code, mo\u017cna przyspieszy\u0107 wsp\u00f3\u0142prac\u0119 mi\u0119dzy zespo\u0142ami funkcjonalnymi i szybciej podejmowa\u0107 decyzje o poprawno\u015bci wybranego kierunku bada\u0144 w zakresie data science. Platformy low-code mog\u0105 by\u0107 przyczyn\u0105 cyfrowej transformacji organizacji, poniewa\u017c tworzone rozwi\u0105zania mog\u0105 by\u0107 zrozumiane przez nietechnicznych specjalist\u00f3w (w szczeg\u00f3lno\u015bci przez u\u017cytkownik\u00f3w biznesowych). <\/p>\n<p>Je\u015bli masz napi\u0119te terminy, z\u0142o\u017con\u0105 logik\u0119 biznesow\u0105, brak technologicznej ekspertyzy i musisz przyspieszy\u0107 time to market, to low-code jest jednym ze sposob\u00f3w zaspokojenia Twoich potrzeb.<\/p>\n<p>Nie mo\u017cna negowa\u0107 znaczenia tradycyjnych narz\u0119dzi programistycznych, jednak w wielu przypadkach stosowanie rozwi\u0105za\u0144 low-code jest najlepszym sposobem na zwi\u0119kszenie efektywno\u015bci rozwi\u0105zywanych problem\u00f3w.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/neoflex\/blog\/520554\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u2014 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043b\u044e\u0431\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 low-code \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-27T17:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-27T17:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Zastosowanie low-code w platformach analitycznych | ProHoster","description":"Szanowni Czytelnicy, mi\u0142ego dnia! Zadanie budowy platform IT do gromadzenia i analizy danych pr\u0119dzej czy p\u00f3\u017aniej staje przed ka\u017cd\u0105 firm\u0105, kt\u00f3rej model biznesowy oparty jest na wysokiej inteligencji.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 low-code \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 | ProHoster","og:description":"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-27T17:42:23+00:00","article:modified_time":"2020-09-27T17:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95283","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:08:24","updated":"2026-02-22 15:29:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/95283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=95283"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/95283\/revisions"}],"predecessor-version":[{"id":162190,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/95283\/revisions\/162190"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/95284"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=95283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=95283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=95283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}