{"id":85605,"date":"2020-06-17T13:42:57","date_gmt":"2020-06-17T11:42:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2"},"modified":"2020-06-17T13:42:57","modified_gmt":"2020-06-17T11:42:57","slug":"iz-autsorsa-v-razrabotku-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2","title":{"rendered":"Z outsourcingu do rozwoju (Cz\u0119\u015b\u0107 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>W <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/audit-telecom\/blog\/504376\/\">poprzedniej artykule<\/a><\/noindex>, opisa\u0142em histori\u0119 powstania Veliam oraz decyzj\u0119 o jego dystrybucji w systemie SaaS. W tym artykule opowiem o tym, co zosta\u0142o zrobione, aby produkt sta\u0142 si\u0119 nie lokalnym, a publicznym. O tym, jak rozpocz\u0119li\u015bmy dystrybucj\u0119 i z jakimi problemami si\u0119 spotkali\u015bmy.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Planowanie<\/h3>\n<p>\nBie\u017c\u0105ca cz\u0119\u015b\u0107 serwerowa dla u\u017cytkownik\u00f3w opiera\u0142a si\u0119 na systemie Linux. W niemal ka\u017cdej organizacji znajduj\u0105 si\u0119 serwery Windows, czego nie mo\u017cna powiedzie\u0107 o Linuxie. G\u0142\u00f3wn\u0105 si\u0142\u0105 Veliam jest zdalne \u0142\u0105czenie si\u0119 z serwerami i urz\u0105dzeniami sieciowymi za NAT. Jednak ta funkcjonalno\u015b\u0107 by\u0142a bardzo \u015bci\u015ble powi\u0105zana z tym, \u017ce routerem musia\u0142 by\u0107 koniecznie MikroTik. To zdecydowanie wielu by nie satysfakcjonowa\u0142o. Na pocz\u0105tku my\u015bla\u0142em o dodaniu wsparcia dla router\u00f3w najbardziej popularnych producent\u00f3w. Jednak zdawa\u0142em sobie spraw\u0119, \u017ce to nieko\u0144cz\u0105cy si\u0119 wy\u015bcig z rozszerzeniem listy obs\u0142ugiwanych firm. Co wi\u0119cej, te, kt\u00f3re ju\u017c s\u0105 obs\u0142ugiwane, mog\u0105 mie\u0107 z modelu na model r\u00f3\u017cny zestaw polece\u0144 do zmiany regu\u0142 NAT. Jedynym rozwi\u0105zaniem tej sytuacji wydawa\u0142 si\u0119 VPN. <\/p>\n<p>Poniewa\u017c zdecydowali\u015bmy si\u0119 na dystrybucj\u0119 produktu, ale nie jako open source, nie mogli\u015bmy do niego w\u0142\u0105czy\u0107 r\u00f3\u017cnych bibliotek z otwartymi licencjami typu GPL. To w og\u00f3le jest osobny temat; po podj\u0119ciu decyzji o sprzeda\u017cy produktu musieli\u015bmy przemy\u015ble\u0107 po\u0142ow\u0119 bibliotek, poniewa\u017c by\u0142y one obj\u0119te licencj\u0105 GPL. Kiedy pisali\u015bmy to dla siebie, by\u0142o to w porz\u0105dku. Ale do dystrybucji si\u0119 nie nadaje. Pierwsze VPN, kt\u00f3re przychodzi na my\u015bl, to OpenVPN. Ale on jest na GPL. By\u0142a te\u017c opcja u\u017cycia japo\u0144skiego SoftEther VPN. Jego licencja pozwala\u0142a na w\u0142\u0105czenie go do naszego produktu. Po kilku dniach r\u00f3\u017cnych test\u00f3w, jak zintegrowa\u0107 go w taki spos\u00f3b, aby u\u017cytkownik w og\u00f3le niczego nie musia\u0142 konfigurowa\u0107 i nie musia\u0142 wiedzie\u0107 o SoftEther VPN, powsta\u0142 prototyp. Wszystko by\u0142o jak nale\u017cy. Ale z jakiego\u015b powodu ta koncepcja wci\u0105\u017c nas niepokoi\u0142a i ostatecznie si\u0119 od niej odst\u0105pili\u015bmy. Oczywi\u015bcie, zdecydowali\u015bmy si\u0119 na to dopiero po wymy\u015bleniu innej opcji. W ko\u0144cu wszystko zrobili\u015bmy na zwyk\u0142ych po\u0142\u0105czeniach TCP. Cz\u0119\u015b\u0107 po\u0142\u0105cze\u0144 dzia\u0142a przez koordynatora, cz\u0119\u015b\u0107 bezpo\u015brednio za pomoc\u0105 technologii Nat Hole Punching (NHP), kt\u00f3ra r\u00f3wnie\u017c by\u0142a realizowana w Free Pascal. Musz\u0119 powiedzie\u0107, \u017ce wcze\u015bniej w og\u00f3le nie s\u0142ysza\u0142em o NHP. Nie przysz\u0142o mi do g\u0142owy, \u017ce mo\u017cna bezpo\u015brednio po\u0142\u0105czy\u0107 dwa urz\u0105dzenia sieciowe, kt\u00f3re znajduj\u0105 si\u0119 za NAT. Przeczyta\u0142em temat, zrozumia\u0142em zasady dzia\u0142ania i zabra\u0142em si\u0119 do pisania. Zrealizowano zamys\u0142; u\u017cytkownik \u0142\u0105czy si\u0119 jednym klikni\u0119ciem z odpowiednim urz\u0105dzeniem za NAT przez RDP, SSH lub Winbox, bez wprowadzania hase\u0142 i konfiguracji VPN. A wi\u0119kszo\u015b\u0107 z tych po\u0142\u0105cze\u0144 przechodzi obok naszego koordynatora, co korzystnie wp\u0142ywa na op\u00f3\u017anienie i koszty obs\u0142ugi tych po\u0142\u0105cze\u0144.<\/p>\n<h3>Migracja serwera z Linuxa na Windows<\/h3>\n<p>\nBy\u0142o kilka problem\u00f3w podczas przej\u015bcia na Windows. Pierwszy \u2014 wbudowany wmic w Windows nie pozwala na wykonywanie zapyta\u0144 WQL. A w naszym systemie wszystko by\u0142o ju\u017c na nich oparte. By\u0142o te\u017c co\u015b jeszcze, ale teraz nie pami\u0119tam, dlaczego ostatecznie zrezygnowali\u015bmy z jego u\u017cycia. Mo\u017cliwe, \u017ce r\u00f3\u017cnice mi\u0119dzy wersjami Windows. A drugi problem \u2014 wielow\u0105tkowo\u015b\u0107. Nie znajduj\u0105c dobrej zewn\u0119trznej aplikacji z \"dozwolon\u0105\" dla nas licencj\u0105, ponownie uruchomi\u0142em IDE Lazarus. Napisa\u0142em potrzebne narz\u0119dzie. Na wej\u015bciu otrzymuj\u0119 wymagany wykaz obiekt\u00f3w i jakie konkretne zapytania nale\u017cy wykona\u0107, a w odpowiedzi otrzymuj\u0119 dane. I wszystko to w trybie wielow\u0105tkowym. Doskonale.<\/p>\n<p>Po skonfigurowaniu pthreads dla PHP w Windows my\u015bla\u0142em, \u017ce wszystko po prostu zacznie dzia\u0142a\u0107, ale si\u0119 myli\u0142em. Po pewnym czasie debugowania zrozumia\u0142em, \u017ce pthreads wydaje si\u0119 dzia\u0142a\u0107, ale w naszym systemie nie funkcjonowa\u0142. Sta\u0142o si\u0119 jasne, \u017ce istnieje jaka\u015b szczeg\u00f3lna cecha dzia\u0142ania pthreads w Windows. I tak w\u0142a\u015bnie by\u0142o. Przeczyta\u0142em dokumentacj\u0119 i zobaczy\u0142em, \u017ce dla Windows liczba w\u0105tk\u00f3w jest ograniczona, a je\u015bli dobrze pami\u0119tam, to niejawnie. To sta\u0142o si\u0119 problemem. Poniewa\u017c gdy zacz\u0105\u0142em zmniejsza\u0107 liczb\u0119 w\u0105tk\u00f3w, przy kt\u00f3rych aplikacja dzia\u0142a\u0142a, praca by\u0142a bardzo wolna. Znowu otworzy\u0142em IDE i doda\u0142em funkcjonalno\u015b\u0107 do wielow\u0105tkowej pingu dla obiekt\u00f3w. No i przy okazji r\u00f3wnie\u017c skanowanie port\u00f3w. W\u0142a\u015bciwie po tym, potrzeba u\u017cywania pthreads dla PHP znikn\u0119\u0142a i przesta\u0142 by\u0107 u\u017cywany. Nast\u0119pnie do tej aplikacji dodano jeszcze kilka funkcji i dzia\u0142a ona do dzisiaj. Po tym zbudowano instalator dla Windows, kt\u00f3ry zawiera\u0142 Apache, PHP, MariaDB, samo PHP oraz zestaw narz\u0119dzi do interakcji z systemem, napisanych w Free Pascal. Je\u017celi chodzi o instalator, my\u015bla\u0142em, \u017ce ten temat szybko rozwi\u0105\u017c\u0119, poniewa\u017c to bardzo powszechne i potrzebne niemal w ka\u017cdym oprogramowaniu. Albo niew\u0142a\u015bciwie szuka\u0142em, albo co\u015b innego. Ale ci\u0105gle natrafia\u0142em na produkty, kt\u00f3re by\u0142y albo niewystarczaj\u0105co elastyczne, albo drogie i przy tym te\u017c sztywne. Mimo to, znalaz\u0142em darmowy instalator, kt\u00f3ry pozwala\u0142 uwzgl\u0119dni\u0107 wszystkie wymagania. To InnoSetup. Pisz\u0119 o tym tutaj, poniewa\u017c musia\u0142em poszuka\u0107, by\u0107 mo\u017ce komu\u015b zaoszcz\u0119dz\u0119 czas.<\/p>\n<h3>Rezygnacja z wtyczki na rzecz w\u0142asnego klienta<\/h3>\n<p>\nWcze\u015bniej pisa\u0142em, \u017ce cz\u0119\u015bci\u0105 klienck\u0105 by\u0142a przegl\u0105darka z \u201ewtyczk\u0105\u201d. By\u0142y czasy, kiedy to Chrome si\u0119 aktualizowa\u0142 i uk\u0142ad si\u0119 nieco psu\u0142, to Windows si\u0119 aktualizowa\u0142 i custom uri scheme znika\u0142y. Bardzo nie chcia\u0142em mie\u0107 tego rodzaju niespodzianek w publicznej wersji produktu. Przy tym, custom uri zaczyna\u0142y znika\u0107 po ka\u017cdej aktualizacji Windows. Microsoft po prostu usuwa\u0142 wszystkie nie swoje ga\u0142\u0119zie w odpowiedniej sekcji. R\u00f3wnie\u017c Google Chrome teraz nie pozwala zapami\u0119ta\u0107 wyboru otwierania aplikacji z custom uri i zadaje to pytanie przy ka\u017cdym klikni\u0119ciu na obiekt monitoringu. Generalnie potrzebna by\u0142a normalna interakcja z lokalnym systemem u\u017cytkownika, co przegl\u0105darka nie zapewnia\u0142a. Najprostsz\u0105 opcj\u0105 w tej sytuacji wydaje si\u0119 stworzenie w\u0142asnej przegl\u0105darki, jak wielu teraz robi przez Electron. Jednak wiele rzeczy by\u0142o ju\u017c napisanych w Free Pascal, w tym cz\u0119\u015b\u0107 serwerowa, dlatego zdecydowali\u015bmy si\u0119 r\u00f3wnie\u017c zrealizowa\u0107 klienta w tym samym j\u0119zyku, zamiast rozmna\u017ca\u0107 zbiory. Tak powsta\u0142 klient z Chromium na pok\u0142adzie. Po tym zacz\u0105\u0142 on nabiera\u0107 r\u00f3\u017cnych powi\u0105za\u0144.<\/p>\n<h3>Wydanie<\/h3>\n<p>\nW ko\u0144cu wybrali\u015bmy nazw\u0119 dla systemu. Ci\u0105gle przeszukiwali\u015bmy r\u00f3\u017cne opcje podczas przekszta\u0142cania z lokalnej wersji na SaaS. Poniewa\u017c pierwotnie planowali\u015bmy wej\u015bcie nie tylko na rynek krajowy, g\u0142\u00f3wnym kryterium wyboru nazwy by\u0142a dost\u0119pno\u015b\u0107 nie zaj\u0119tej lub niezbyt drogiej domeny w strefie \".com\". Niekt\u00f3re funkcje\/modu\u0142y jeszcze nie zosta\u0142y przeniesione z lokalnej wersji do Veliam, ale postanowili\u015bmy, \u017ce wypu\u015bcimy produkt z aktualn\u0105 funkcjonalno\u015bci\u0105, a pozosta\u0142e elementy zrealizujemy ju\u017c w aktualizacjach. W pierwszej wersji nie by\u0142o HelpDesku, Veliam Connectora, nie mo\u017cna by\u0142o zmienia\u0107 prog\u00f3w reakcji powiadomie\u0144 i wiele innych. Kupili\u015bmy certyfikat podpisu kodu, podpisali\u015bmy cz\u0119\u015b\u0107 klienck\u0105 i serwerow\u0105. Napisali\u015bmy stron\u0119 produktu, rozpocz\u0119li\u015bmy procedury rejestracji oprogramowania, znaku towarowego itp. Generalnie jeste\u015bmy gotowi do startu. Lekka euforia po wykonanej pracy i z tego, \u017ce by\u0107 mo\u017ce kto\u015b korzysta z naszego produktu, chocia\u017c w tej kwestii nie mieli\u015bmy w\u0105tpliwo\u015bci. I tu nagle stop. Partner powiedzia\u0142, \u017ce bez powiadomie\u0144 w komunikatorach nie mo\u017cemy wyj\u015b\u0107 na rynek. Mo\u017cna oby\u0107 si\u0119 bez wielu innych rzeczy, ale nie bez tego. Po kr\u00f3tkich sporach dodano integracj\u0119 z Telegramem, kt\u00f3ra nam odpowiada\u0142a. Spo\u015br\u00f3d wszystkich obecnych komunikator\u00f3w, to jedyny, kt\u00f3ry udost\u0119pnia swoje API za darmo i bez skomplikowanych procedur zgody. WhatsApp z kolei zach\u0119ca do kontaktowania si\u0119 z dostawcami, kt\u00f3rzy bior\u0105 niez\u0142e pieni\u0105dze za korzystanie z ich us\u0142ug, wszystkie nasze pro\u015bby o udost\u0119pnienie dost\u0119pu bez po\u015brednik\u00f3w zosta\u0142y zignorowane. A Viber\u2026 Nie wiem, kto teraz z tego korzysta, poniewa\u017c spam i reklama s\u0105 tam na poziomie szczytowym. Pod koniec grudnia, po serii test\u00f3w wewn\u0119trznych i testach w\u015br\u00f3d przyjaci\u00f3\u0142, otworzyli\u015bmy rejestracj\u0119 dla wszystkich i udost\u0119pnili\u015bmy oprogramowanie do pobrania. <\/p>\n<h3>Pocz\u0105tek rozpowszechnienia<\/h3>\n<p>\nOd samego pocz\u0105tku wiedzieli\u015bmy, \u017ce potrzebujemy niewielkiego strumienia u\u017cytkownik\u00f3w systemu, aby mogli oni testowa\u0107 produkt w trybie rzeczywistym i da\u0107 nam jakie\u015b pierwsze opinie. Kilka zakupionych post\u00f3w na VK przynios\u0142o efekty. Pierwsze rejestracje zacz\u0119\u0142y nap\u0142ywa\u0107. <\/p>\n<p>Trzeba powiedzie\u0107, \u017ce wej\u015bcie na rynek bez znanego imienia i oferowanie funkcjonalno\u015bci monitorowania bezagentowego, do kt\u00f3rego trzeba wprowadzi\u0107 konta swoich serwer\u00f3w i stacji roboczych, jest bardzo trudne. Wiele os\u00f3b si\u0119 tym niepokoi. Od samego pocz\u0105tku zdawali\u015bmy sobie spraw\u0119, \u017ce b\u0119d\u0105 z tym problemy i byli\u015bmy na to przygotowani zar\u00f3wno technicznie, jak i moralnie. Wszystkie po\u0142\u0105czenia zdalne, mimo \u017ce RDP i SSH s\u0105 domy\u015blnie szyfrowane, s\u0105 dodatkowo szyfrowane przez naszego softu zgodnie z standardem AES. Wszystkie dane z lokalnych serwer\u00f3w przesy\u0142ane s\u0105 do chmury za pomoc\u0105 HTTPS. Konta przechowywane s\u0105 w postaci zaszyfrowanej. Klucze szyfrowania dla wszystkich podsystem\u00f3w s\u0105 indywidualne dla ka\u017cdego klienta. Dla po\u0142\u0105cze\u0144 zdalnych u\u017cywane s\u0105 sesyjne klucze szyfrowania. <\/p>\n<p>Wszystko, co mo\u017cemy zrobi\u0107 w tej sytuacji, aby ludzie czuli si\u0119 spokojniej, to by\u0107 maksymalnie otwartymi, pracowa\u0107 nad bezpiecze\u0144stwem i nieustannie odpowiada\u0107 na niepokoj\u0105ce ich pytania. <\/p>\n<p>Dla wielu os\u00f3b wygoda i funkcjonalno\u015b\u0107 oprogramowania przewa\u017caj\u0105 nad strachem, dlatego si\u0119 rejestruj\u0105. Niekt\u00f3rzy w opublikowanych postach na VK pisali, \u017ce tego oprogramowania nie mo\u017cna u\u017cywa\u0107, poniewa\u017c zbiera has\u0142a i w og\u00f3le pochodzi od firmy bez nazwy. Nale\u017cy powiedzie\u0107, \u017ce takie zdanie nie by\u0142o odosobnione. Wiele os\u00f3b po prostu nie rozumie, \u017ce gdy instaluj\u0105 inny w\u0142asno\u015bciowy soft na swoim serwerze, kt\u00f3ry dzia\u0142a jako us\u0142uga, ma pe\u0142ne prawa w systemie i nie potrzebuj\u0105 konta, aby zrobi\u0107 co\u015b nielegalnego (oczywiste jest, \u017ce mo\u017cna zmieni\u0107 u\u017cytkownika, z kt\u00f3rego uruchamiana jest us\u0142uga, ale tutaj r\u00f3wnie\u017c mo\u017cna wprowadzi\u0107 dowolne konto). W rzeczywisto\u015bci obawy ludzi s\u0105 zrozumia\u0142e. Instalacja oprogramowania na serwerze jest czym\u015b powszechnym, ale wprowadzanie danych konta jest ju\u017c troch\u0119 przera\u017caj\u0105ce i intymne, poniewa\u017c po\u0142owa ludzi ma jedno has\u0142o do wszystkich us\u0142ug, a stworzenie oddzielnego konta nawet do test\u00f3w jest leniwe. Jednak obecnie istnieje ogromna liczba us\u0142ug, kt\u00f3rym ludzie ufaj\u0105 w zakresie swoich danych logowania i nie tylko. I staramy si\u0119 sta\u0107 si\u0119 jednymi z nich. <\/p>\n<p>Wiele komentarzy sugerowa\u0142o, \u017ce gdzie\u015b to ukradli\u015bmy. Troch\u0119 nas to zdziwi\u0142o. C\u00f3\u017c, to zdanie jednej osoby, ale takie komentarze pojawia\u0142y si\u0119 w r\u00f3\u017cnych publikacjach od r\u00f3\u017cnych ludzi. Na pocz\u0105tku nie wiedzieli\u015bmy, jak na to zareagowa\u0107. Czy smuci\u0107 si\u0119 tym, \u017ce niekt\u00f3rzy maj\u0105 zdanie, \u017ce w Rosji nikt nie potrafi nic zrobi\u0107 samodzielnie, a tylko ukra\u015b\u0107, czy cieszy\u0107 si\u0119, \u017ce s\u0105dzono, i\u017c co\u015b mo\u017cna tylko ukra\u015b\u0107. <\/p>\n<p>Obecnie zako\u0144czyli\u015bmy procedur\u0119 uzyskania certyfikatu EV Code Sign. Aby go uzyska\u0107, trzeba przej\u015b\u0107 szereg kontroli i dostarczy\u0107 mn\u00f3stwo dokument\u00f3w dotycz\u0105cych firmy, z kt\u00f3rych cz\u0119\u015b\u0107 musi by\u0107 po\u015bwiadczona przez prawnika. Uzyskanie certyfikatu EV Code Sign w warunkach pandemii to w og\u00f3le osobny temat na artyku\u0142. Procedura trwa\u0142a miesi\u0105c. I to by\u0142 miesi\u0105c pe\u0142en nie oczekiwania, ale ci\u0105g\u0142ych pr\u00f3\u015bb o dodatkowe dokumenty. Mo\u017ce pandemia nie ma z tym zwi\u0105zku, a wszystkim procedura trwa\u0142a tak d\u0142ugo? Podzielcie si\u0119.<\/p>\n<p>Niekt\u00f3rzy m\u00f3wi\u0105, \u017ce nie b\u0119dziemy korzysta\u0107, poniewa\u017c nie mamy certyfikatu FSTEK. Musz\u0119 t\u0142umaczy\u0107, \u017ce nie mo\u017cemy go uzyska\u0107 i nie b\u0119dziemy, poniewa\u017c aby uzyska\u0107 ten certyfikat, szyfrowanie musi by\u0107 zgodne z GOST, a my planujemy rozpowszechnianie oprogramowania nie tylko w Rosji i u\u017cywamy AES.<\/p>\n<p>Wszystkie te komentarze wzbudza\u0142y pewn\u0105 niepewno\u015b\u0107, czy to mo\u017cliwe \u2014 promowa\u0107 produkt, w kt\u00f3ry trzeba wprowadza\u0107 konta, nie b\u0119d\u0105c jednocze\u015bnie na j\u0119zykach. Nawet bior\u0105c pod uwag\u0119, \u017ce wiedzieli\u015bmy, \u017ce b\u0119d\u0105 tacy, kt\u00f3rzy odnosz\u0105 si\u0119 do tego bardzo negatywnie. Po przekroczeniu liczby rejestracji tysi\u0105c przestali\u015bmy o tym my\u015ble\u0107. Szczeg\u00f3lnie po tym, jak opr\u00f3cz negatyw\u00f3w tych, kt\u00f3rzy nie pr\u00f3bowali produktu, zacz\u0119\u0142y pojawia\u0107 si\u0119 bardzo pozytywne opinie. Trzeba powiedzie\u0107, \u017ce te pozytywne opinie s\u0105 najwi\u0119kszym motywatorem do rozwoju produktu.<\/p>\n<h3>Dodanie funkcji zdalnego dost\u0119pu dla pracownik\u00f3w<\/h3>\n<p>\nJednym z cz\u0119stych zada\u0144 od klient\u00f3w jest \u201edostarczenie Waniemu dost\u0119pu do jego komputera z domu\u201d. Ustawiali\u015bmy VPN na MikroTik i tworzyli\u015bmy konta dla u\u017cytkownik\u00f3w. Ale to naprawd\u0119 problem. U\u017cytkownicy nie s\u0105 w stanie przeczyta\u0107 instrukcji i post\u0119powa\u0107 zgodnie z ni\u0105 krok po kroku, aby po\u0142\u0105czy\u0107 si\u0119 przez VPN. R\u00f3\u017cne wersje Windows. W jednej wersji Windows wszystko dzia\u0142a dobrze, a w innej potrzebny jest inny protok\u00f3\u0142. I w og\u00f3le zawsze wi\u0105za\u0142o si\u0119 to z ponown\u0105 konfiguracj\u0105 sprz\u0119tu sieciowego, kt\u00f3ry pe\u0142ni\u0142 rol\u0119 serwera VPN, a nie wszyscy pracownicy mieli do niego dost\u0119p, co by\u0142o niedogodne. <\/p>\n<p>Mamy ju\u017c zdalne po\u0142\u0105czenia z serwerami i sprz\u0119tem sieciowym. Dlaczego wi\u0119c nie skorzysta\u0107 z gotowego transportu i nie stworzy\u0107 osobnej, ma\u0142ej aplikacji, kt\u00f3r\u0105 mo\u017cna po prostu da\u0107 u\u017cytkownikowi do po\u0142\u0105czenia? Chcia\u0142em, aby u\u017cytkownik nie musia\u0142 wprowadza\u0107 \u017cadnych trudnych informacji. Po prostu jeden przycisk \u201epo\u0142\u0105cz si\u0119\u201d. Ale jak ta aplikacja mia\u0142aby wiedzie\u0107, dok\u0105d si\u0119 po\u0142\u0105czy\u0107, skoro ma tylko jeden przycisk? By\u0142 pomys\u0142, aby zdalnie zbudowa\u0107 potrzebn\u0105 aplikacj\u0119 na naszych serwerach. Administrator systemu naciska przycisk \u201epobierz skr\u00f3t\u201d, a do naszej chmury przesy\u0142ana jest komenda na zbudowanie indywidualnego binarka z zakodowan\u0105 informacj\u0105 do po\u0142\u0105czenia z odpowiednim serwerem \/ komputerem przez RDP. W zasadzie mo\u017cna by to zrobi\u0107. Ale trwa\u0142oby to d\u0142ugo, administrator musia\u0142by czeka\u0107, a\u017c binarek zostanie skompilowany, a potem pobrany. Mo\u017cna by oczywi\u015bcie doda\u0107 po prostu drugi plik z konfiguracj\u0105, ale to ju\u017c s\u0105 dwa pliki, a dla prostoty u\u017cytkownik potrzebuje jednego. Jeden plik, jeden przycisk i \u017cadnych instalator\u00f3w. Po przeczytaniu troch\u0119 w Google doszed\u0142em do wniosku, \u017ce je\u015bli na ko\u0144cu skompilowanego \u201e.exe\u201d doda si\u0119 jak\u0105\u015b informacj\u0119, to nie ulega uszkodzeniu (no prawie). Mo\u017cna doda\u0107 nawet \u201eWojn\u0119 i pok\u00f3j\u201d i b\u0119dzie dzia\u0142a\u0107 jak wcze\u015bniej. Grzech z tego nie skorzysta\u0107. Teraz mo\u017cna po prostu w locie, prosto w kliencie, rozpakowywa\u0107 aplikacj\u0119, zwan\u0105 Veliam Connector, i po prostu dopisywa\u0107 do niej na ko\u0144cu potrzebne informacje do po\u0142\u0105czenia. A sama aplikacja wie, co z tym zrobi\u0107. Dlaczego w nawiasie napisa\u0142em \u201eno prawie\u201d? Poniewa\u017c za t\u0119 wygod\u0119 trzeba zap\u0142aci\u0107 tym, \u017ce aplikacja traci swoj\u0105 podpisan\u0105 kwalifikowanym podpisem. Ale na tym etapie uwa\u017camy, \u017ce to niewielka cena za tak\u0105 wygod\u0119. <\/p>\n<h3>Licencje modu\u0142\u00f3w zewn\u0119trznych<\/h3>\n<p>\nWcze\u015bniej pisa\u0142em, \u017ce po podj\u0119ciu decyzji o udost\u0119pnieniu produktu dla wszystkich, a nie tylko dla w\u0142asnych potrzeb, musia\u0142em sporo si\u0119 napracowa\u0107 i poszuka\u0107 zamiennik\u00f3w dla niekt\u00f3rych modu\u0142\u00f3w, kt\u00f3re nie pozwala\u0142y na w\u0142\u0105czenie ich w sk\u0142ad naszego produktu. Po wydaniu odkry\u0142em niestety do\u015b\u0107 nieprzyjemn\u0105 rzecz. W sk\u0142adzie Veliam Server, kt\u00f3ry by\u0142 po stronie klienta, znajdowa\u0142a si\u0119 baza danych MariaDB, a jej licencja to GPL. Licencja GPL zak\u0142ada, \u017ce oprogramowanie musi by\u0107 otwartym \u017ar\u00f3d\u0142em, a je\u015bli nasz produkt zawiera MariaDB, to r\u00f3wnie\u017c powinien by\u0107 na tej samej licencji. Na szcz\u0119\u015bcie celem tej licencji jest otwarte \u017ar\u00f3d\u0142o, a nie ukaranie w s\u0105dzie tych, kt\u00f3rzy przypadkowo si\u0119 pomylili. Je\u015bli w\u0142a\u015bciciel praw zg\u0142asza zarzut, powiadamia naruszaj\u0105cego pisemnie i ten ma 30 dni na usuni\u0119cie naruszenia. Sami odkryli\u015bmy b\u0142\u0105d i nie otrzymali\u015bmy \u017cadnych pism, wi\u0119c od razu zacz\u0119li\u015bmy rozwa\u017ca\u0107 opcje rozwi\u0105zania problemu. Rozwi\u0105zanie okaza\u0142o si\u0119 oczywiste \u2014 przej\u015bcie na SQLite. Ta baza danych nie ma \u017cadnych ogranicze\u0144 licencyjnych. Wi\u0119kszo\u015b\u0107 nowoczesnych przegl\u0105darek u\u017cywa SQLite, a tak\u017ce wiele innych program\u00f3w. W internecie znalaz\u0142em informacj\u0119, \u017ce SQLite jest uwa\u017cana za najpopularniejsz\u0105 baz\u0119 danych na \u015bwiecie, w\u0142a\u015bnie ze wzgl\u0119du na przegl\u0105darki, ale nie szuka\u0142em dowod\u00f3w, wi\u0119c to nie dok\u0142adna informacja. Zacz\u0105\u0142em bada\u0107, co wi\u0105\u017ce si\u0119 z przej\u015bciem na SQLite.<\/p>\n<p>To staje si\u0119 ju\u017c nietrywialnym zadaniem, gdy jest kilka setek serwer\u00f3w z MariaDB i danymi w niej zainstalowanych u klient\u00f3w. Niekt\u00f3re funkcje MariaDB s\u0105 niedost\u0119pne w SQLite. Na przyk\u0142ad w kodzie u\u017cywane by\u0142y zapytania typu <\/p>\n<pre><code class=\"sql\">Select * FROM `table` WHERE `id`&gt;1000 FOR UPDATE\n<\/code><\/pre>\n<p>\nTa konstrukcja nie tylko wykonuje zapytanie z tabeli, ale r\u00f3wnie\u017c blokuje wskazane wiersze. Kilka innych konstrukcji te\u017c trzeba by\u0142o przepisa\u0107. Poza tym, \u017ce nale\u017ca\u0142o przepisa\u0107 wiele zapyta\u0144, trzeba by\u0142o r\u00f3wnie\u017c wymy\u015bli\u0107 mechanizm, kt\u00f3ry podczas aktualizacji Veliam Server u klienta przeniesie wszystkie dane do nowej bazy danych i usunie star\u0105. Ponadto transakcje w SQLite nie dzia\u0142a\u0142y, co by\u0142o realnym problemem. Jednak po przeczytaniu r\u00f3\u017cnych \u017ar\u00f3de\u0142 w internecie, bez problemu znalaz\u0142em, \u017ce transakcje w SQLite mo\u017cna w\u0142\u0105czy\u0107, przekazuj\u0105c prost\u0105 komend\u0119 przy po\u0142\u0105czeniu <\/p>\n<pre><code class=\"sql\">PRAGMA journal_mode=WAL;<\/code><\/pre>\n<p>\nW rezultacie zadanie zosta\u0142o wykonane, a cz\u0119\u015b\u0107 serwerowa u klient\u00f3w dzia\u0142a na SQLite. Nie zauwa\u017cyli\u015bmy \u017cadnych zmian w dzia\u0142aniu systemu.<\/p>\n<h3>Nowy HelpDesk<\/h3>\n<p>\nZ wewn\u0119trznej wersji na wersj\u0119 SaaS nale\u017ca\u0142o przenie\u015b\u0107 system HelpDesk, wprowadzaj\u0105c pewne zmiany. Pierwsze, co chcia\u0142em zrobi\u0107, to integracja z domen\u0105 klienta w zakresie przezroczystej autoryzacji u\u017cytkownik\u00f3w w systemie. Obecnie u\u017cytkownik, aby wej\u015b\u0107 do HelpDesk i z\u0142o\u017cy\u0107 wniosek, po prostu klika na ikon\u0119 na pulpicie, a przegl\u0105darka si\u0119 otwiera. U\u017cytkownik nie wprowadza \u017cadnych danych logowania. Modu\u0142 Apache SSPI, kt\u00f3ry wchodzi w sk\u0142ad Veliam Server, automatycznie autoryzuje u\u017cytkownika przy u\u017cyciu konta domenowego. Aby z\u0142o\u017cy\u0107 wniosek w systemie, gdy u\u017cytkownik znajduje si\u0119 poza sieci\u0105 korporacyjn\u0105, klika przycisk, a na jego e-mail przychodzi link, za pomoc\u0105 kt\u00f3rego loguje si\u0119 do systemu HelpDesk bez has\u0142a. Je\u015bli u\u017cytkownik zostanie wy\u0142\u0105czony lub usuni\u0119ty w domenie, jego konto w HelpDesk r\u00f3wnie\u017c przestanie dzia\u0142a\u0107. W ten spos\u00f3b administrator systemu nie musi samodzielnie monitorowa\u0107 kont zar\u00f3wno w domenie, jak i w HelpDesk. Je\u015bli pracownik zosta\u0142 zwolniony \u2014 wy\u0142\u0105czy\u0142 konto w domenie i to wszystko, nie wejdzie do systemu ani z sieci korporacyjnej, ani przez link. Aby ta integracja dzia\u0142a\u0142a, administrator systemu musi stworzy\u0107 jedn\u0105 GPO, kt\u00f3ra <noindex><a rel=\"nofollow\" href=\"https:\/\/veliam.com\/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F\/helpdesk\/%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B2-%D0%B7%D0%BE%D0%BD%D1%83\/\">dodaje wewn\u0119trzn\u0105 stron\u0119 do strefy intranetu<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/veliam.com\/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F\/helpdesk\/%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%8F%D1%80%D0%BB%D1%8B%D0%BA%D0%B0-helpdesk-%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8-gpo\/\">rozsy\u0142a skr\u00f3t wszystkim u\u017cytkownikom na pulpit<\/a><\/noindex>. <\/p>\n<p>Drug\u0105 rzecz\u0105, kt\u00f3r\u0105 uwa\u017camy za niezwykle wa\u017cn\u0105 dla system\u00f3w HelpDesk, przynajmniej dla nas samych \u2013 jest mo\u017cliwo\u015b\u0107 jednego klikni\u0119cia bezpo\u015bredniego po\u0142\u0105czenia z zg\u0142aszaj\u0105cym. Co wi\u0119cej, po\u0142\u0105czenia powinny dzia\u0142a\u0107, je\u015bli administrator systemu znajduje si\u0119 w innej sieci. Dla outsourcingu jest to konieczno\u015b\u0107, a tak\u017ce cz\u0119sto bardzo potrzebne dla etatowych administrator\u00f3w systemu. Istnieje ju\u017c kilka produkt\u00f3w, kt\u00f3re doskonale radz\u0105 sobie z zadaniem zdalnych po\u0142\u0105cze\u0144. Postanowili\u015bmy stworzy\u0107 dla nich integracje. Obecnie zrealizowali\u015bmy integracj\u0119 z VNC, a w przysz\u0142o\u015bci planujemy doda\u0107 Radmin i TeamViewer. U\u017cywaj\u0105c naszego transportu sieciowego do zdalnych po\u0142\u0105cze\u0144 z infrastruktur\u0105, zrobili\u015bmy tak, \u017ce VNC \u0142\u0105czy si\u0119 z zdalnymi stacjami roboczymi za NAT. To samo b\u0119dzie dotyczy\u0107 Radmin. Teraz, aby po\u0142\u0105czy\u0107 si\u0119 z u\u017cytkownikiem, wystarczy w samej zg\u0142oszeniu nacisn\u0105\u0107 przycisk \u201epo\u0142\u0105cz z zg\u0142aszaj\u0105cym\u201d. Otwiera si\u0119 klient VNC i \u0142\u0105czy z zg\u0142aszaj\u0105cym niezale\u017cnie od tego, czy jeste\u015b w tej samej sieci, czy siedzisz w domu w kapciach. Wcze\u015bniej administrator systemu, za pomoc\u0105 GPO, musi zainstalowa\u0107 wszystkim na stacjach roboczych VNC Server. <\/p>\n<p>Obecnie sami przechodzimy na nowy HelpDesk i korzystamy z integracji z domen\u0105 i VNC. Jest to dla nas bardzo wygodne. Teraz nie musimy p\u0142aci\u0107 za TeamViewer, kt\u00f3rego u\u017cywali\u015bmy przez ponad trzy lata do pracy naszej obs\u0142ugi wsparcia.<\/p>\n<h3>Co planujemy robi\u0107 dalej<\/h3>\n<p>\nKiedy wprowadzili\u015bmy nasz produkt, nie wprowadzili\u015bmy \u017cadnych p\u0142atnych plan\u00f3w, a po prostu ograniczyli\u015bmy darmowy plan do 50 obiekt\u00f3w monitorowania. Pi\u0119\u0107dziesi\u0105t urz\u0105dze\u0144 sieciowych i serwer\u00f3w powinno wystarczy\u0107 wszystkim, pomy\u015bleli\u015bmy. I wtedy zacz\u0119\u0142y nap\u0142ywa\u0107 pro\u015bby o zwi\u0119kszenie limitu. Powiedzie\u0107, \u017ce byli\u015bmy nieco w szoku \u2014 to nic nie powiedzie\u0107. Czy\u017cby nasze oprogramowanie zainteresowa\u0142o firmy, kt\u00f3re maj\u0105 tak\u0105 liczb\u0119 serwer\u00f3w? Bezp\u0142atnie zwi\u0119kszali\u015bmy limit dla tych, kt\u00f3rzy sk\u0142adali takie pro\u015bby. Niekt\u00f3rzy z nas w odpowiedzi na ich zapytania pytali, dlaczego potrzebuj\u0105 tylu, czy\u017cby mieli tak du\u017c\u0105 liczb\u0119 serwer\u00f3w i sprz\u0119tu sieciowego? Okaza\u0142o si\u0119, \u017ce administratorzy system\u00f3w zacz\u0119li u\u017cywa\u0107 systemu w spos\u00f3b, kt\u00f3rego w og\u00f3le nie planowali\u015bmy. Wszystko okaza\u0142o si\u0119 proste \u2014 monitorowali naszym oprogramowaniem nie tylko serwery, ale tak\u017ce stacje robocze. St\u0105d wiele pr\u00f3\u015bb o zwi\u0119kszenie limit\u00f3w. Obecnie wprowadzili\u015bmy ju\u017c p\u0142atne plany i limity mo\u017cna rozszerza\u0107 samodzielnie. <\/p>\n<p>Serwery prawie zawsze pracuj\u0105 albo z pami\u0119ci\u0105 masow\u0105, albo z lokalnymi dyskami w macierzy RAID. I pierwotnie stworzyli\u015bmy produkt dla nich. Monitorowanie SMART nie by\u0142o ciekawe dla tego zadania. Jednak w zwi\u0105zku z tym, \u017ce ludzie dostosowali oprogramowanie do monitorowania stacji roboczych, pojawi\u0142y si\u0119 pro\u015bby o wdro\u017cenie monitorowania SMART. Wkr\u00f3tce to zrealizujemy. <\/p>\n<p>Dzi\u0119ki Veliam Connector, nie ma ju\u017c potrzeby wdra\u017cania serwera VPN w sieci korporacyjnej, ani tworzenia RDGW, ani po prostu przekazywania port\u00f3w do odpowiednich maszyn do po\u0142\u0105cze\u0144 przez RDP. Wiele os\u00f3b korzysta z naszego systemu tylko do tych zdalnych po\u0142\u0105cze\u0144. Veliam Connector jest dost\u0119pny tylko dla systemu Windows, a niekt\u00f3rzy u\u017cytkownicy firm \u0142\u0105cz\u0105 si\u0119 z domowych laptop\u00f3w z MacOS do stacji roboczych lub terminali w sieci korporacyjnej. I w rezultacie administrator systemu musi z powodu kilku u\u017cytkownik\u00f3w wraca\u0107 do kwestii przekazywania port\u00f3w lub VPN. Dlatego teraz ko\u0144czymy wersj\u0119 Veliam Connector pod MacOS. U\u017cytkownicy swojej ulubionej, jab\u0142kowej technologii r\u00f3wnie\u017c b\u0119d\u0105 mieli mo\u017cliwo\u015b\u0107 w jednym klikni\u0119ciu po\u0142\u0105czy\u0107 si\u0119 z infrastruktur\u0105 korporacyjn\u0105.<\/p>\n<p>Bardzo podoba mi si\u0119 to, \u017ce maj\u0105c du\u017c\u0105 liczb\u0119 u\u017cytkownik\u00f3w systemu, nie musz\u0119 si\u0119 g\u0142owi\u0107 nad tym, czego potrzebuj\u0105 i co b\u0119dzie dla nich wygodniejsze. Sami pisz\u0105 swoje sugestie, wi\u0119c jest wiele plan\u00f3w rozwoju na najbli\u017cszy czas.<\/p>\n<p>R\u00f3wnolegle planujemy teraz zaj\u0105\u0107 si\u0119 t\u0142umaczeniem systemu na j\u0119zyk angielski i jego dystrybucj\u0105 za granic\u0105. Na razie nie wiemy, jak b\u0119dziemy rozpowszechnia\u0107 produkt poza naszym krajem, szukamy mo\u017cliwo\u015bci. By\u0107 mo\u017ce o tym p\u00f3\u017aniej b\u0119dzie osobny artyku\u0142. Mo\u017ce kto\u015b z tych, kt\u00f3rzy przeczytali ten artyku\u0142, b\u0119dzie w stanie zasugerowa\u0107 w\u0142a\u015bciwy kierunek lub sam wie jak to zrobi\u0107 i zaoferuje swoje us\u0142ugi. B\u0119dziemy wdzi\u0119czni za pomoc.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/audit-telecom\/blog\/505678\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Veliam \u0438 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 SaaS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441\u0442\u0430\u043b \u043d\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c, \u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c. \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u044b\u043b\u0430 \u043d\u0430 Linux. \u041f\u043e\u0447\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-85605","post","type-post","status-publish","format-standard","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=\"\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Veliam \u0438 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 SaaS.\" \/>\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\/iz-autsorsa-v-razrabotku-chast-2\" \/>\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\u0418\u0437 \u0430\u0443\u0442\u0441\u043e\u0440\u0441\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 (\u0427\u0430\u0441\u0442\u044c 2) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Veliam \u0438 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 SaaS.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2\" \/>\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-06-17T11:42:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-17T11:42:57+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\udd47Z outsourcingu do rozwoju (Cz\u0119\u015b\u0107 2) | ProHoster","description":"W poprzednim artykule opisa\u0142em histori\u0119 powstania Veliam i decyzj\u0119 o jego dystrybucji w modelu SaaS.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2","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\u0418\u0437 \u0430\u0443\u0442\u0441\u043e\u0440\u0441\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 (\u0427\u0430\u0441\u0442\u044c 2) | ProHoster","og:description":"\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Veliam \u0438 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 SaaS.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2","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-06-17T11:42:57+00:00","article:modified_time":"2020-06-17T11:42:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"85605","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 14:33:42","updated":"2022-09-28 15:54:11","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\/85605","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=85605"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/85605\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=85605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=85605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=85605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}