{"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\/ro\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2","title":{"rendered":"Din outsourcing \u00een dezvoltare (Partea 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00cen <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/audit-telecom\/blog\/504376\/\">articolul anterior<\/a><\/noindex>, am povestit despre istoria cre\u0103rii Veliam \u0219i despre decizia de a-l distribui prin sistemul SaaS. \u00cen acest articol, voi vorbi despre ce a fost necesar pentru ca produsul s\u0103 devin\u0103 nu local, ci public. Despre cum a \u00eenceput distribu\u021bia \u0219i cu ce probleme ne-am confruntat.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Planificare<\/h3>\n<p>\nPartea serverului actual pentru utilizatori a fost pe Linux. Aproape \u00een fiecare organiza\u021bie exist\u0103 servere Windows, ceea ce nu se poate spune despre Linux. Principala for\u021b\u0103 a Veliam este conectarea la distan\u021b\u0103 la servere \u0219i echipamente de re\u021bea \u00een spatele NAT. Dar aceast\u0103 func\u021bionalitate era foarte strict legat\u0103 de faptul c\u0103 routerul trebuia s\u0103 fie neap\u0103rat un Mikrotik. \u0218i acest lucru ar fi nemul\u021bumit evident pe mul\u021bi. La \u00eenceput, am \u00eenceput s\u0103 m\u0103 g\u00e2ndesc la ad\u0103ugarea suportului pentru routerele celor mai comune furnizori. Dar \u00een\u021belegeam c\u0103 aceasta este o curs\u0103 nesf\u00e2r\u0219it\u0103 cu extinderea listei de companii suportate. Mai mult dec\u00e2t at\u00e2t, chiar \u0219i cele care sunt deja suportate pot avea un set diferit de comenzi pentru modificarea regulilor NAT de la un model la altul. Singura ie\u0219ire din situa\u021bie se vedea ca fiind VPN. <\/p>\n<p>\u00centruc\u00e2t am decis s\u0103 distribuim produsul, dar nu ca open source, nu mai putem include diverse biblioteci cu licen\u021be deschise de tip GPL. Aceasta este o tem\u0103 separat\u0103; dup\u0103 ce am hot\u0103r\u00e2t s\u0103 vindem produsul, a fost necesar s\u0103 revizuim jum\u0103tate din biblioteci din cauza licen\u021bei GPL. C\u00e2nd scriam pentru noi, era \u00een regul\u0103. Dar pentru distribuire, nu este adecvat. Primul VPN care \u00eemi vine \u00een minte este OpenVPN. Dar acesta este GPL. A mai fost op\u021biunea de a folosi SoftEther VPN din Japonia. Licen\u021ba acestuia permitea integrarea \u00een produsul nostru. Dup\u0103 c\u00e2teva zile de teste pentru a-l integra astfel \u00eenc\u00e2t utilizatorii s\u0103 nu trebuiasc\u0103 s\u0103 fac\u0103 nicio configura\u021bie sau s\u0103 \u0219tie despre SoftEther VPN, am ob\u021binut un prototip. Totul a decurs bine. Totu\u0219i, dintr-un motiv oarecare, aceast\u0103 schem\u0103 ne-a deranjat, iar la final am renun\u021bat la ea. Desigur, am renun\u021bat doar dup\u0103 ce am conceput o alt\u0103 variant\u0103. \u00cen final, am realizat totul pe conexiuni TCP obi\u0219nuite. O parte din conexiuni func\u021bioneaz\u0103 printr-un coordonator, iar o parte direct prin tehnologia Nat Hole Punching (NHP), care a fost de asemenea implementat\u0103 pe Free Pascal. Trebuie s\u0103 spun c\u0103 nu auzisem anterior despre NHP. Nu \u00eemi trecea prin minte c\u0103 dou\u0103 dispozitive de re\u021bea, ambele aflate \u00een spatele NAT-ului, pot fi conectate direct. Am studiat subiectul, am \u00een\u021beles principiul de func\u021bionare \u0219i m-am apucat de scris. Ceea ce am conceput a fost realizat: utilizatorul se conecteaz\u0103 cu un singur clic la dispozitivul dorit din spatele NAT-ului prin RDP, SSH sau Winbox, f\u0103r\u0103 a introduce parole sau a configura VPN. Mai mult, cea mai mare parte a acestor conexiuni ocolesc coordonatorul nostru, ceea ce se reflect\u0103 pozitiv asupra laten\u021bei \u0219i costurilor de \u00eentre\u021binere a acestor conexiuni.<\/p>\n<h3>Migr\u00e2nd partea de server de pe Linux pe Windows<\/h3>\n<p>\nAm \u00eent\u00e2mpinat mai multe probleme la trecerea pe Windows. Prima \u2014 wmizrc \u00een Windows nu permite efectuarea de interog\u0103ri WQL. \u00cen sistemul nostru, totul era deja construit pe baza lor. \u0218i mai era ceva, dar acum nu-mi amintesc de ce am renun\u021bat definitiv la utilizarea lui. Posibil, diferen\u021bele \u00eentre versiunile Windows. A doua problem\u0103 \u2014 multithreading. Neav\u00e2nd o utilitate bun\u0103 ter\u021b\u0103 parte sub o licen\u021b\u0103 \u201eacceptabil\u0103\u201d, am repornit IDE-ul Lazarus \u0219i am scris utilitatea necesar\u0103. La intrare se furnizeaz\u0103 lista de obiecte necesar\u0103 \u0219i ce anume interog\u0103ri trebuie efectuate, iar ca r\u0103spuns primesc datele. Toate acestea se desf\u0103\u0219oar\u0103 \u00een mod multithreaded. Excelent.<\/p>\n<p>Dup\u0103 ce am configurat pthreads pentru PHP pe Windows, am crezut c\u0103 totul va func\u021biona f\u0103r\u0103 probleme, dar nu a fost a\u0219a. Dup\u0103 o perioad\u0103 de depanare, mi-am dat seama c\u0103 pthreads p\u0103rea s\u0103 func\u021bioneze, dar \u00een sistemul nostru nu a func\u021bionat. A devenit clar c\u0103 exist\u0103 o particularitate a utiliz\u0103rii pthreads pe Windows. A\u0219a a \u0219i fost. Am citit documenta\u021bia, iar acolo era men\u021bionat c\u0103, pentru Windows, num\u0103rul de thread-uri este limitat, \u0219i, din c\u00e2te \u00eemi amintesc, aceast\u0103 limitare nu era chiar explicit\u0103. Aceasta a devenit o problem\u0103, pentru c\u0103, atunci c\u00e2nd am \u00eenceput s\u0103 reduc num\u0103rul de thread-uri pentru care aplica\u021bia func\u021biona, aceasta \u00eendeplinea sarcinile foarte lent. Am deschis din nou IDE-ul \u0219i \u00een aceea\u0219i utilitar am ad\u0103ugat func\u021bionalitatea de ping multithreading pentru obiecte. \u0218i, de asemenea, am inclus \u0219i scanarea porturilor. Practic, dup\u0103 asta, necesitatea utiliz\u0103rii pthreads pentru PHP a disp\u0103rut, \u0219i nu a mai fost folosit. Ulterior, \u00een aceast\u0103 utilitar\u0103 au fost ad\u0103ugate \u0219i c\u00e2teva func\u021bionalit\u0103\u021bi suplimentare \u0219i func\u021bioneaz\u0103 \u0219i ast\u0103zi. Dup\u0103 aceea, am creat un installer pentru Windows, care includea Apache, PHP, MariaDB, aplica\u021bia PHP \u00een sine \u0219i un set de utilitare pentru interac\u021biunea cu sistemul, scrise \u00een Free Pascal. \u00cen ceea ce prive\u0219te installer-ul, m\u0103 a\u0219teptam s\u0103 rezolv rapid aceast\u0103 problem\u0103, deoarece este o necesitate extrem de comun\u0103 \u0219i util\u0103 pentru aproape fiecare software. Fie c\u0103 am c\u0103utat gre\u0219it, fie din alte motive, dar am dat mereu peste produse care erau fie insuficient de flexibile, fie scumpe \u0219i totodat\u0103 inflexibile. Totu\u0219i, am g\u0103sit un installer gratuit, care permitea s\u0103 iau \u00een considerare toate cerin\u021bele. Acesta este InnoSetup. Scriu despre asta aici pentru c\u0103 a fost nevoie s\u0103 caut, \u0219i poate ajut pe cineva s\u0103 economiseasc\u0103 timp.<\/p>\n<h3>Renun\u021barea la plugin \u00een favoarea clientului meu<\/h3>\n<p>\nAm men\u021bionat anterior c\u0103 partea clientului era un browser cu un \u201eplugin\u201d. A\u0219a c\u0103 au fost vremuri c\u00e2nd, fie Chrome se actualiza \u0219i layout-ul era pu\u021bin str\u00e2mb, fie Windows se actualiza \u0219i schemele URI personalizate se pierdeau. Nu \u00eemi pl\u0103cea deloc s\u0103 am acest tip de surprize \u00een versiunea public\u0103 a produsului. \u00cen plus, schemele URI personalizate au \u00eenceput s\u0103 se piard\u0103 dup\u0103 fiecare actualizare a Windows-ului. Microsoft pur \u0219i simplu \u0219tergea toate ramurile non-proprii din sec\u021biunea respectiv\u0103. De asemenea, Google Chrome acum nu permite salvarea alegerii de a deschide sau nu aplica\u021bia din URI personalizat, pun\u00e2nd aceast\u0103 \u00eentrebare la fiecare clic pe obiectul de monitorizare. \u00cen general, era necesar\u0103 o interac\u021biune normal\u0103 cu sistemul local al utilizatorului, lucru pe care browserul nu \u00eel ofer\u0103. Cea mai simpl\u0103 variant\u0103 \u00een acest scenariu p\u0103rea s\u0103 fie crearea propriului browser, a\u0219a cum fac mul\u021bi \u00een prezent prin Electron. Dar deja multe lucruri fuseser\u0103 scrise \u00een Free Pascal, inclusiv partea de server, de aceea s-a decis ca \u0219i clientul s\u0103 fie realizat \u00een aceea\u0219i limb\u0103, pentru a evita divergen\u021bele. Astfel, a fost scris un client cu Chromium la bord. Dup\u0103 aceea, a \u00eenceput s\u0103 fie echipat cu diverse extensii.<\/p>\n<h3>Lansare<\/h3>\n<p>\n\u00cen sf\u00e2r\u0219it am ales un nume pentru sistem. Am evaluat constant diferite op\u021biuni \u00een timpul procesului de tranzi\u021bie de la versiunea local\u0103 la SaaS. Deoarece ne-am planificat ini\u021bial s\u0103 ie\u0219im nu doar pe pia\u021ba intern\u0103, principalul criteriu pentru alegerea numelui a fost disponibilitatea unui domeniu liber sau nu foarte scump \u00een zona \u201e.com\u201d. Unele func\u021bionalit\u0103\u021bi\/module \u00eenc\u0103 nu fuseser\u0103 portate din versiunea local\u0103 \u00een Veliam, dar am decis c\u0103 vom lansa cu func\u021bionalitatea actual\u0103, iar restul s\u0103 fie completat prin actualiz\u0103ri. \u00cen prima versiune nu existau HelpDesk, Veliam Connector, nu era posibil s\u0103 modifici pragurile de activare ale notific\u0103rilor \u0219i multe altele. Am achizi\u021bionat un certificat Code Sign, am semnat p\u0103r\u021bile client \u0219i server. Am scris un site pentru produs, am \u00eenceput procedurile de \u00eenregistrare a software-ului, m\u0103rcii comerciale etc. \u00cen general, suntem gata s\u0103 \u00eencepem. O u\u0219oar\u0103 euforie din munca depus\u0103 \u0219i din g\u00e2ndul c\u0103 produsul t\u0103u ar putea fi folosit de cineva, de\u0219i \u00een aceast\u0103 privin\u021b\u0103 nu am avut niciun dubiu. \u0218i apoi, stop. Partenerul a spus c\u0103 nu putem iesi pe pia\u021b\u0103 f\u0103r\u0103 notific\u0103ri \u00een aplica\u021biile de mesagerie. Putem s\u0103 renun\u021b\u0103m la multe alte lucruri, dar nu la asta. Dup\u0103 c\u00e2teva dispute scurte, am ad\u0103ugat integrarea cu Telegram, care a fost acceptabil\u0103 pentru noi. Dintre aplica\u021biile de mesagerie existente, aceasta este singura care ofer\u0103 acces gratuit la API-ul s\u0103u, f\u0103r\u0103 proceduri complicate de aprobat. WhatsApp, de exemplu, recomand\u0103 s\u0103 contact\u0103m furnizorii care percep o sum\u0103 considerabil\u0103 pentru utilizarea serviciilor lor, toate solicit\u0103rile de acces direct au fost ignorate. Iar Viber\u2026 nu \u0219tiu cine \u00eel folose\u0219te acum, deoarece spamul \u0219i reclamele sunt cople\u0219itoare. La sf\u00e2r\u0219itul lunii decembrie, dup\u0103 o serie de teste interne \u0219i teste \u00eentre prieteni, am deschis \u00eenregistrarea pentru to\u021bi \u0219i am pus software-ul disponibil pentru desc\u0103rcare. <\/p>\n<h3>\u00cenceperea distribu\u021biei<\/h3>\n<p>\nDe la \u00eenceput am \u00een\u021beles c\u0103 avem nevoie de un flux mic de utilizatori ai sistemului pentru a testa produsul \u00een condi\u021bii reale \u0219i a oferi o prim\u0103 reac\u021bie. C\u00e2teva post\u0103ri cump\u0103rate pe VK au dat roade. Au \u00eenceput primele \u00eenregistr\u0103ri. <\/p>\n<p>Este important de men\u021bionat c\u0103, atunci c\u00e2nd o companie nu are un nume celebru, intrarea pe pia\u021b\u0103 \u0219i oferirea unei func\u021bionalit\u0103\u021bi de monitorizare f\u0103r\u0103 agent, care necesit\u0103 introducerea acreditivelor pentru servere \u0219i sta\u021bii de lucru, este foarte dificil\u0103. Acest lucru \u00eei sperie pe foarte mul\u021bi oameni. De la \u00eenceput, am \u0219tiut c\u0103 vom \u00eent\u00e2mpina probleme \u0219i am fost preg\u0103ti\u021bi din punct de vedere tehnic \u0219i moral. Toate conexiunile la distan\u021b\u0103, de\u0219i RDP \u0219i SSH sunt criptate \u00een mod implicit, sunt criptate suplimentar de software-ul nostru conform standardului AES. Toate datele din serverele locale sunt transmise \u00een cloud prin HTTPS. Acreditivele sunt stocate \u00eentr-o form\u0103 criptat\u0103. Cheile de criptare pentru toate subsistemele sunt individuale pentru fiecare client. Pentru conexiunile la distan\u021b\u0103 se folosesc chei de criptare pe sesiuni. <\/p>\n<p>Tot ce putem face \u00een aceast\u0103 situa\u021bie pentru a \u00eei lini\u0219ti pe oameni este s\u0103 fim c\u00e2t mai transparen\u021bi, s\u0103 lucr\u0103m la securitate \u0219i s\u0103 nu obosim s\u0103 r\u0103spundem la \u00eentreb\u0103rile care \u00eei nelini\u0219tesc. <\/p>\n<p>Pentru mul\u021bi, confortul \u0219i func\u021bionalitatea software-ului dep\u0103\u0219esc teama, iar ei se \u00eenregistreaz\u0103. Unele persoane au scris \u00een post\u0103rile publicate pe VK c\u0103 acest software nu poate fi folosit, deoarece ar aduna parolele lor \u0219i c\u0103 este o companie necunoscut\u0103. Trebuie s\u0103 men\u021bion\u0103m c\u0103 aceast\u0103 opinie nu este singular\u0103. Multe persoane pur \u0219i simplu nu \u00een\u021beleg c\u0103, atunci c\u00e2nd instaleaz\u0103 un alt software proprietar pe server, care func\u021bioneaz\u0103 ca un serviciu, acesta are acelea\u0219i drepturi complete \u00een sistem \u0219i nu au nevoie de acreditive pentru a face ceva ilegal (e clar c\u0103 se poate schimba utilizatorul sub care ruleaz\u0103 serviciul, dar la fel este \u0219i aici, orice acreditiv poate fi introdus). De fapt, temerile oamenilor sunt justificate. Instalarea software-ului pe server este o practic\u0103 obi\u0219nuit\u0103, dar introducerea acreditivelor este deja pu\u021bin \u00eenfrico\u0219\u0103toare \u0219i intim\u0103, deoarece mul\u021bi oameni au aceea\u0219i parol\u0103 pentru toate serviciile, iar a crea un cont separat chiar \u0219i pentru un test este o corvoad\u0103. Dar \u00een prezent exist\u0103 o mul\u021bime de servicii c\u0103rora oamenii le \u00eencredin\u021beaz\u0103 datele lor de autentificare \u0219i nu numai. \u0218i ne str\u0103duim s\u0103 devenim unul dintre acestea. <\/p>\n<p>Multe comentarii au fost de genul c\u0103 am furat asta de undeva. Ne-a uimit pu\u021bin. Ei bine, este opinia unei singure persoane, dar astfel de comentarii au ap\u0103rut \u00een diverse publica\u021bii de la diferi\u021bi oameni. La \u00eenceput nu \u0219tiam cum s\u0103 reac\u021bion\u0103m la asta. S\u0103 ne \u00eentrist\u0103m de faptul c\u0103 unii oameni cred c\u0103 \u00een Rusia nimeni nu poate face nimic singur, ci doar poate fura, sau s\u0103 ne bucur\u0103m c\u0103 se consider\u0103 c\u0103 ceva de genul acesta poate fi furat doar. <\/p>\n<p>Acum am finalizat procedura de ob\u021binere a certificatului EV Code Sign. Pentru a-l ob\u021bine, trebuie s\u0103 trecem printr-o serie de verific\u0103ri \u0219i s\u0103 trimitem o mul\u021bime de documente despre companie, dintre care unele trebuie s\u0103 fie autentificate de un avocat. Ob\u021binerea certificatului EV Code Sign \u00een condi\u021biile unei pandemii este, de fapt, un subiect separat pentru un articol. Procedura a durat o lun\u0103. \u0218i aceasta a fost o lun\u0103 nu de a\u0219teptare, ci de solicit\u0103ri constante de documente suplimentare. Poate pandemia nu a fost de vin\u0103 \u0219i toat\u0103 lumea a trecut printr-o procedur\u0103 at\u00e2t de lung\u0103? \u00cemp\u0103rt\u0103\u0219i\u021bi.<\/p>\n<p>Unii spun c\u0103 nu vom folosi din cauza c\u0103 nu avem certificat FSTEK. Trebuie s\u0103 explic\u0103m c\u0103 nu putem s\u0103-l ob\u021binem \u0219i nu o vom face deoarece pentru a ob\u021bine acest certificat, criptarea trebuie s\u0103 fie conform GOST, iar noi pl\u0103nuim s\u0103 distribuim software nu doar \u00een Rusia \u0219i folosim AES.<\/p>\n<p>Toate aceste comentarii au provocat o oarecare ne\u00eencredere c\u0103 este posibil s\u0103 promov\u0103m un produs la care trebuie s\u0103 introducem conturi, f\u0103r\u0103 a fi la \u00een\u0103l\u021bime. Chiar \u0219i av\u00e2nd \u00een vedere c\u0103 \u0219tim c\u0103 vor fi cei care au opinii foarte negative despre asta. Dup\u0103 ce num\u0103rul \u00eenregistr\u0103rilor a dep\u0103\u0219it o mie, am \u00eencetat s\u0103 ne g\u00e2ndim la asta. \u00cen special dup\u0103 ce, pe l\u00e2ng\u0103 negativitatea celor care nici m\u0103car nu au \u00eencercat produsul, au \u00eenceput s\u0103 apar\u0103 \u0219i recenzii foarte pl\u0103cute. Trebuie s\u0103 spun c\u0103 aceste recenzii pozitive sunt cel mai mare motivator pentru dezvoltarea produsului.<\/p>\n<h3>Ad\u0103ugarea func\u021biei de acces de la distan\u021b\u0103 pentru angaja\u021bi<\/h3>\n<p>\nUna dintre sarcinile frecvente din partea clien\u021bilor este \u201ef\u0103-\u021bi lui Vanea acces la calculatorul s\u0103u de acas\u0103\u201d. Am configurat un VPN pe Mikrotik \u0219i am creat conturi pentru utilizatori. Dar acesta este, \u00eentr-adev\u0103r, o problem\u0103. Utilizatorii nu sunt capabili s\u0103 urm\u0103reasc\u0103 instruc\u021biunile \u0219i s\u0103 le execute pas cu pas pentru a se conecta prin VPN. Exist\u0103 diferite versiuni de Windows. \u00centr-o versiune de Windows, totul se conecteaz\u0103 bine, \u00een alta este necesar un alt protocol. \u0218i, \u00een general, aceasta a fost \u00eentotdeauna legat\u0103 de reconfigurarea echipamentului de re\u021bea, care serve\u0219te ca server VPN, iar nu to\u021bi angaja\u021bii au acces la acesta, \u0219i a fost incomod. <\/p>\n<p>Dar avem deja conexiuni la distan\u021b\u0103 cu servere \u0219i echipamente de re\u021bea. De ce s\u0103 nu folosim un transport gata f\u0103cut \u0219i s\u0103 cre\u0103m o micu\u021b\u0103 utilitate pe care s\u0103 o putem oferi utilizatorului pentru a se conecta? Mi-am dorit doar s\u0103 fac astfel \u00eenc\u00e2t utilizatorul s\u0103 nu fie nevoit s\u0103 introduc\u0103 nimic complicat. Doar un singur buton \"conectare\". Dar cum va \u00een\u021belege aceast\u0103 utilitate unde s\u0103 se conecteze, dac\u0103 are doar un buton? A fost o idee de a crea online aplica\u021bia necesar\u0103 pe serverele noastre. Administratorul de sistem apas\u0103 butonul \"descarc\u0103 scurtcuget\", iar la noi \u00een cloud se trimite comanda de construire a unui binar personalizat cu informa\u021bia de conectare la serverul \/ computerul dorit prin RDP. \u00cen general, acest lucru ar fi putut fi realizat. Dar dureaz\u0103 mult, administratorul ar trebui s\u0103 a\u0219tepte mai \u00eent\u00e2i ca binarul s\u0103 fie compilat \u0219i apoi s\u0103 fie desc\u0103rcat. Ar fi fost, desigur, posibil s\u0103 ad\u0103ug\u0103m pur \u0219i simplu un al doilea fi\u0219ier cu configura\u021bia, dar asta ar fi fost deja 2 fi\u0219iere, iar pentru simplitate utilizatorului \u00eei trebuie un singur fi\u0219ier. Un fi\u0219ier, un buton \u0219i f\u0103r\u0103 instalatori. Dup\u0103 ce am citit pu\u021bin pe Google, am ajuns la concluzia c\u0103, dac\u0103 la sf\u00e2r\u0219itul fi\u0219ierului compilat \u201c.exe\u201d se adaug\u0103 anumite informa\u021bii, acesta nu se stric\u0103 (aproape). Po\u021bi ad\u0103uga p\u00e2n\u0103 \u0219i \u201eR\u0103zboi \u0219i pace\u201d, iar acesta va func\u021biona ca \u00eenainte. Ar fi p\u0103cat s\u0103 nu profit\u0103m de asta. Acum putem pur \u0219i simplu s\u0103 desf\u0103\u0219ur\u0103m aplica\u021bia chiar \u00een client, de altfel se nume\u0219te Veliam Connector, \u0219i s\u0103 ad\u0103ug\u0103m informa\u021bia necesar\u0103 conect\u0103rii la sf\u00e2r\u0219itul acesteia. Iar aplica\u021bia \u00eens\u0103\u0219i \u0219tie ce s\u0103 fac\u0103 cu aceste informa\u021bii. De ce am scris mai sus \u00een parantez\u0103 \u201eaproape\u201d? Pentru c\u0103, pentru aceast\u0103 comoditate, trebuie s\u0103 pl\u0103tim cu faptul c\u0103 aplica\u021bia \u00ee\u0219i pierde semn\u0103tura digital\u0103. Dar noi, \u00een acest stadiu, consider\u0103m c\u0103 este un pre\u021b mic pentru at\u00e2ta comoditate. <\/p>\n<h3>Licen\u021bele modulelor ter\u021be<\/h3>\n<p>\nAm men\u021bionat mai sus c\u0103, dup\u0103 ce s-a decis s\u0103 facem produsul accesibil publicului, nu doar pentru uzul intern, a fost necesar s\u0103 muncim destul de mult \u0219i s\u0103 c\u0103ut\u0103m \u00eenlocuitori pentru anumite module care nu ne permiteau s\u0103 ne integr\u0103m produsul. Dar, dup\u0103 lansare, am descoperit \u00eent\u00e2mpl\u0103tor o problem\u0103 destul de nepl\u0103cut\u0103. \u00cen cadrul Veliam Server, care era pe partea clientului, se afla baza de date MariaDB. Aceasta are licen\u021ba GPL. Licen\u021ba GPL prevede c\u0103 software-ul trebuie s\u0103 fie cu surs\u0103 deschis\u0103, iar dac\u0103 produsul nostru include MariaDB care are aceast\u0103 licen\u021b\u0103, produsul nostru trebuie s\u0103 fie, de asemenea, sub aceast\u0103 licen\u021b\u0103. Dar, din fericire, scopul acestei licen\u021be este sursa deschis\u0103, nu pedepsirea \u00een instan\u021b\u0103 a celor care au gre\u0219it din \u00eent\u00e2mplare. Dac\u0103 de\u021bin\u0103torul drepturilor are o reclama\u021bie, acesta trebuie s\u0103 notifice \u00een scris \u00eenc\u0103lc\u0103torul, iar acesta trebuie s\u0103 remedieze \u00eenc\u0103lcarea \u00een termen de 30 de zile. Am descoperit gre\u0219eala noastr\u0103 singuri, nu am primit scrisori \u0219i am \u00eenceput imediat s\u0103 consider\u0103m op\u021biunile pentru a rezolva problema. Solu\u021bia s-a dovedit a fi evident\u0103 - trecerea la SQLite. Aceast\u0103 baz\u0103 de date nu are restric\u021bii de licen\u021biere. Majoritatea browserelor moderne folosesc SQLite, precum \u0219i o mul\u021bime de alte programe. Am g\u0103sit pe internet informa\u021bii c\u0103 SQLite este considerat\u0103 cea mai r\u0103sp\u00e2ndit\u0103 baz\u0103 de date din lume, datorit\u0103 browserelor, dar nu am c\u0103utat dovezi, a\u0219a c\u0103 aceasta este o informa\u021bie inexact\u0103. Am \u00eenceput s\u0103 studiez consecin\u021bele trecerii la SQLite.<\/p>\n<p>Aceasta devine o sarcin\u0103 ne-trivial\u0103 atunci c\u00e2nd exist\u0103 c\u00e2teva sute de servere instalate la clien\u021bi cu MariaDB \u0219i date \u00een ea. Unele func\u021bionalit\u0103\u021bi ale MariaDB nu sunt disponibile \u00een SQLite. De exemplu, \u00een cod am folosit interog\u0103ri de tipul <\/p>\n<pre><code class=\"sql\">Select * FROM `table` WHERE `id`&gt;1000 FOR UPDATE\n<\/code><\/pre>\n<p>\nAceast\u0103 construc\u021bie nu doar c\u0103 face selec\u021bia din tabel, dar blocheaz\u0103 \u0219i acele linii de date. \u0218i au fost necesare s\u0103 fie rescrise \u0219i c\u00e2teva alte construc\u021bii. Dar, pe l\u00e2ng\u0103 faptul c\u0103 a trebuit s\u0103 rescriu multe interog\u0103ri, a fost necesar s\u0103 inventez un mecanism care, la actualizarea Veliam Server la client, s\u0103 migrateze toate datele \u00een noua baz\u0103 de date \u0219i s\u0103 elimine pe cea veche. De asemenea, tranzac\u021biile nu func\u021bionau \u00een SQLite \u0219i aceasta a fost o problem\u0103 real\u0103. Dar dup\u0103 ce am citit pe internet, am g\u0103sit f\u0103r\u0103 probleme c\u0103 tranzac\u021biile \u00een SQLite pot fi activate, prin transmiterea unui simplu comenzi la conectare <\/p>\n<pre><code class=\"sql\">PRAGMA journal_mode=WAL;<\/code><\/pre>\n<p>\n\u00cen concluzie, sarcina a fost realizat\u0103 \u0219i acum partea de server pentru clien\u021bi func\u021bioneaz\u0103 pe SQLite. Nu am observat nicio modificare \u00een func\u021bionarea sistemului.<\/p>\n<h3>New HelpDesk<\/h3>\n<p>\nA fost necesar\u0103 portarea sistemului HelpDesk din versiunea intern\u0103 \u00een versiunea SaaS, \u00eens\u0103 cu anumite modific\u0103ri. Primul lucru pe care dorim s\u0103-l facem este integrarea cu domeniul clientului \u00een ceea ce prive\u0219te autentificarea transparent\u0103 a utilizatorilor \u00een sistem. Acum, pentru a accesa HelpDesk \u0219i a l\u0103sa o solicitare \u00een sistem, utilizatorul pur \u0219i simplu apas\u0103 pe scurt\u0103tura de pe desktop \u0219i se deschide browserul. Utilizatorul nu introduce nicio informa\u021bie de autentificare. Modulul pentru Apache SSPI, care face parte din Veliam Server, autentific\u0103 automat utilizatorul sub contul de domeniu. Pentru a l\u0103sa o solicitare \u00een sistem, atunci c\u00e2nd utilizatorul se afl\u0103 \u00een afara re\u021belei corporative, el apas\u0103 pe un buton, iar pe e-mailul s\u0103u prime\u0219te un link, prin care se autentific\u0103 \u00een sistemul HelpDesk f\u0103r\u0103 a folosi parole. Dac\u0103 utilizatorul este dezactivat sau \u0219ters din domeniu, contul s\u0103u din HelpDesk va \u00eenceta, de asemenea, s\u0103 func\u021bioneze. Astfel, administratorul de sistem nu trebuie s\u0103 urm\u0103reasc\u0103 conturile at\u00e2t \u00een domeniu, c\u00e2t \u0219i \u00een HelpDesk. Dac\u0103 un angajat a fost concediat \u2014 a dezactivat contul \u00een domeniu \u0219i tot, el nu va putea accesa sistemul nici din re\u021beaua corporativ\u0103, nici prin link. Pentru a activa aceast\u0103 integrare, administratorul de sistem trebuie s\u0103 fac\u0103 o GPO care <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\/\">adaug\u0103 site-ul intern \u00een zona intranet<\/a><\/noindex> \u0219i <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\/\">distribuie scurt\u0103tura tuturor utilizatorilor pe desktop<\/a><\/noindex>. <\/p>\n<p>Al doilea lucru pe care \u00eel consider\u0103m extrem de necesar pentru sistemele HelpDesk, cel pu\u021bin pentru noi \u00een\u0219ine \u2014 este conectarea la solicitant direct din cerere cu un singur clic. Mai mult, conexiunile trebuie s\u0103 fie posibile chiar dac\u0103 administratorul de sistem se afl\u0103 \u00eentr-o alt\u0103 re\u021bea. Acest lucru este obligatoriu pentru outsourcing, iar pentru administratorii de sistem angaja\u021bi este de asemenea adesea foarte necesar. Exist\u0103 deja c\u00e2teva produse care se ocup\u0103 excelent de sarcina conect\u0103rii de la distan\u021b\u0103. \u0218i am decis s\u0103 facem integr\u0103ri pentru ele. \u00cen prezent, am realizat o integrare pentru VNC \u0219i, \u00een viitor, planific\u0103m s\u0103 ad\u0103ug\u0103m Radmin \u0219i TeamViewer. Folosind transportul nostru de re\u021bea pentru conexiuni la distan\u021b\u0103 c\u0103tre infrastructur\u0103, am f\u0103cut astfel \u00eenc\u00e2t VNC s\u0103 se conecteze la sta\u021biile de lucru de la distan\u021b\u0103 prin NAT. Acela\u0219i lucru va fi valabil \u0219i pentru Radmin. Acum, pentru a te conecta la utilizator, trebuie doar s\u0103 apesi butonul \u201econecteaz\u0103-te la solicitant\u201d din cerere. Se deschide clientul VNC \u0219i se conecteaz\u0103 la solicitant, indiferent dac\u0103 e\u0219ti \u00een aceea\u0219i re\u021bea sau te afli acas\u0103 \u00een papuci. \u00cen prealabil, administratorul de sistem trebuie s\u0103 instaleze VNC Server pe toate sta\u021biile de lucru, prin GPO. <\/p>\n<p>Acum noi \u00een\u0219ine trecem la noul HelpDesk \u0219i folosim integrarea cu domeniul \u0219i VNC. Este foarte convenabil pentru noi. Acum putem s\u0103 nu mai pl\u0103tim pentru TeamViewer, pe care l-am utilizat timp de peste trei ani pentru a func\u021biona serviciul nostru de suport.<\/p>\n<h3>Ce pl\u0103nuim s\u0103 facem \u00een continuare<\/h3>\n<p>\nC\u00e2nd am lansat produsul, nu am creat planuri pl\u0103tite, ci am limitat planul gratuit la 50 de obiecte de monitorizare. Cinci zeci de dispozitive de re\u021bea \u0219i servere ar trebui s\u0103 fie suficiente pentru to\u021bi, ne-am g\u00e2ndit. Apoi, au \u00eenceput s\u0103 vin\u0103 cereri pentru cre\u0219terea limitei. S\u0103 spunem c\u0103 am fost pu\u021bin \u0219oca\u021bi \u2014 nu e nimic de spus. A\u0219a cum se poate s\u0103 fie interesate de software-ul nostru companii care au un num\u0103r at\u00e2t de mare de servere? Am extins gratuit limita pentru cei care au f\u0103cut astfel de cereri. La unii, \u00een r\u0103spunsul la cererea lor, am \u00eentrebat de ce le-ar trebui at\u00e2t de multe, nu cumva au un num\u0103r at\u00e2t de mare de servere \u0219i echipamente de re\u021bea. \u0218i s-a dovedit c\u0103 administratorii de sistem au \u00eenceput s\u0103 foloseasc\u0103 sistemul exact a\u0219a cum nu ne-am planificat deloc. Totul s-a dovedit a fi simplu \u2014 cu software-ul nostru au \u00eenceput s\u0103 monitorizeze nu doar servere, ci \u0219i sta\u021bii de lucru. De aici \u0219i multe cereri pentru extinderea limitelor. Acum am introdus planuri pl\u0103tite \u0219i limitele pot fi extinse autonom. <\/p>\n<p>Serverele lucreaz\u0103 aproape \u00eentotdeauna fie cu o stocare ierarhic\u0103 fie cu discuri locale \u00eentr-un RAID. \u0218i am creat ini\u021bial produsul pentru ele. Monitorizarea SMART nu era relevant\u0103 pentru aceast\u0103 sarcin\u0103. \u00cens\u0103, av\u00e2nd \u00een vedere c\u0103 oamenii au adaptat software-ul pentru monitorizarea sta\u021biilor de lucru, au ap\u0103rut cereri pentru implementarea monitoriz\u0103rii SMART. \u00cen cur\u00e2nd o vom implementa. <\/p>\n<p>Odat\u0103 cu apari\u021bia Veliam Connector, nu mai este necesar\u0103 desf\u0103\u0219urarea unui server VPN \u00een re\u021beaua corporativ\u0103, sau s\u0103 facem RDGW, sau pur \u0219i simplu s\u0103 deschidem porturi c\u0103tre ma\u0219inile necesare pentru conectarea prin RDP. Foarte mul\u021bi folosesc sistemul nostru doar pentru aceste conexiuni de la distan\u021b\u0103. Veliam Connector este disponibil doar pe Windows, iar unii utilizatori din companii se conecteaz\u0103 de pe laptopuri acas\u0103 care ruleaz\u0103 MacOS la sta\u021biile de lucru sau terminalele din re\u021beaua corporativ\u0103. \u0218i astfel, administratorul de sistem este nevoit din cauza c\u00e2torva utilizatori s\u0103 revin\u0103 la problema deschiderii de porturi sau VPN. De aceea, acum suntem aproape s\u0103 finaliz\u0103m versiunea Veliam Connector pentru MacOS. Utilizatorii tehnicii lor preferate Apple vor avea, de asemenea, posibilitatea de a se conecta la infrastructura corporativ\u0103 cu un singur clic.<\/p>\n<p>\u00cemi place foarte mult c\u0103, av\u00e2nd un num\u0103r mare de utilizatori \u00een sistem, nu trebuie s\u0103-mi fac griji cu privire la ceea ce le trebuie \u0219i ce ar fi mai convenabil. Ei \u00ee\u0219i scriu singuri dorin\u021bele, a\u0219a c\u0103 avem multe planuri de dezvoltare pentru perioada urm\u0103toare.<\/p>\n<p>\u00centre timp, planific\u0103m s\u0103 ne ocup\u0103m de traducerea sistemului \u00een limba englez\u0103 \u0219i de distribuirea acestuia \u00een str\u0103in\u0103tate. Deocamdat\u0103, nu \u0219tim cum ne vom distribui produsul \u00een afara \u021b\u0103rii noastre, c\u0103ut\u0103m op\u021biuni. Poate c\u0103 va exista un articol separat pe aceast\u0103 tem\u0103 mai t\u00e2rziu. Poate cineva dintre cei care au citit acest articol ne poate sugera direc\u021bia necesar\u0103, sau poate cunoa\u0219te \u0219i \u0219tie cum s\u0103 fac\u0103 acest lucru \u0219i s\u0103-\u0219i ofere serviciile. Am fi recunosc\u0103tori pentru ajutor.<br \/>\n<br \/>Sursa: <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.2.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\/ro\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Din outsourcing \u00een dezvoltare (Partea 2) | ProHoster","description":"\u00cen articolul anterior, am vorbit despre povestea din spatele cre\u0103rii Veliam \u0219i despre decizia de a-l r\u0103sp\u00e2ndi prin sistemul SaaS.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/iz-autsorsa-v-razrabotku-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/85605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=85605"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/85605\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=85605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=85605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=85605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}