В , jag pratade om bakgrunden till skapandet av Veliam och beslutet att distribuera det genom SaaS-systemet. I den här artikeln kommer jag att prata om vad jag var tvungen att göra för att göra produkten inte lokal, utan offentlig. Om hur distributionen började och vilka problem de stötte på.
planering
Den nuvarande serversidan för användare var på LinuxNästan varje organisation har Windows servrar, vilket inte kan sägas om LinuxVeliams främsta styrka är fjärranslutningar till servrar och nätverksutrustning bakom NAT. Denna funktionalitet var dock strikt knuten till det faktum att routern måste vara en Mikrotik. Detta skulle uppenbarligen inte tillfredsställa många. Jag övervägde initialt att lägga till stöd för routrar från de mest populära leverantörerna. Men jag insåg att detta skulle bli en oändlig kapplöpning för att utöka listan över företag som stöds. Dessutom kan även de som redan stöds ha olika uppsättningar kommandon för att ändra NAT-regler beroende på modell. En VPN verkade vara den enda lösningen.
Eftersom vi bestämde oss för att distribuera produkten, men inte som öppen källkod, kunde vi inte inkludera olika bibliotek med öppna licenser som GPL. Detta är en helt annan sak: efter att vi bestämt oss för att sälja produkten var vi tvungna att omarbeta hälften av biblioteken eftersom de var GPL. När vi skrev för oss själva var detta okej. Men det är inte lämpligt för distribution. Den första VPN-tjänsten som kommer att tänka på är... OpenVPNMen det är GPL. Ett annat alternativ var att använda det japanska SoftEther VPN. Dess licens tillät att det inkluderades i produkten. Efter ett par dagar av olika tester på hur man integrerar det så att användaren inte skulle behöva konfigurera någonting eller veta någonting om SoftEther VPN, kom vi fram till en prototyp. Allt fungerade som förväntat. Men av någon anledning störde oss fortfarande detta system, och vi övergav det slutligen. Naturligtvis övergav vi det efter att ha kommit på ett annat alternativ. Till slut gjordes allt med vanliga TCP-anslutningar. Vissa anslutningar fungerar via en koordinator, andra direkt med Nat Hole Punching (NHP)-teknik, som också implementerades i Free Pascal. Jag måste säga att jag aldrig ens hade hört talas om NHP förut. Och det slog mig aldrig att man direkt kunde ansluta två nätverksenheter, som båda är bakom en NAT. Jag studerade ämnet, förstod principen och satte mig ner för att skriva. Idén har implementerats: användaren ansluter med ett klick till önskad enhet bakom en NAT via RDP, SSH eller Winbox, utan att ange lösenord eller konfigurera en VPN. Dessutom kringgår majoriteten av dessa anslutningar vår koordinator, vilket har en positiv effekt på ping och kostnaden för att underhålla dessa anslutningar.
Översättning av serverdelen från Linux på Windows
Problem med övergången till Windows Det fanns flera. För det första tillåter inte den inbyggda wmic-funktionen i Windows WQL-frågor. Och vårt system var redan byggt på dem. Och det fanns några andra saker, men jag har glömt varför vi slutligen övergav det. Kanske finns det skillnader mellan versionerna. WindowsOch det andra problemet är multitrådning. Eftersom jag inte kunde hitta ett bra tredjepartsverktyg under en acceptabel licens, startade jag Lazarus IDE igen och skrev det nödvändiga verktyget. Det tar den obligatoriska listan med objekt och de specifika frågor som ska göras som indata och tar emot data som svar. Och allt detta i multitrådningsläge. Utmärkt.
Efter att jag konfigurerat pthreads för PHP Windows Jag trodde att allt skulle fungera bra, men det gjorde det inte. Efter lite felsökning insåg jag att pthreads verkade fungera, men det fungerade inte på vårt system. Det blev tydligt att det fanns en del egenheter med pthreads i WindowsSå var det. Jag läste dokumentationen, och det stod att för Windows Antalet trådar är begränsat, och så vitt jag minns är det implicit. Detta blev ett problem. För när jag började minska antalet trådar som applikationen kördes på, körde den väldigt långsamt. Jag öppnade IDE:n igen, och samma verktyg hade uppdaterats med funktionalitet för pingning av flertrådade objekt. Och portskanning lades också till. Efter det försvann behovet av pthreads för PHP, och det används inte längre. Flera fler funktioner lades senare till i detta verktyg, och det fungerar fortfarande än idag. Efter det kompilerades ett installationsprogram för Windows, vilket inkluderade Apache, PHP, MariaDB, själva PHP-applikationen och en uppsättning verktyg för att interagera med systemet, allt skrivet i Free Pascal. När det gäller installationsprogrammet tänkte jag att jag snabbt skulle lösa det här problemet, eftersom det är extremt vanligt och nödvändigt för nästan all mjukvara. Antingen letade jag inte på rätt ställe, eller så var det något helt annat. Men jag stötte hela tiden på produkter som antingen var otillräckligt flexibla eller dyra och även oflexibla. Till slut hittade jag ett gratis installationsprogram som kan tillgodose alla behov: InnoSetup. Jag skriver om det här eftersom jag var tvungen att leta efter det, ifall det sparar någon lite tid.
Avslag på plugin till förmån för din klient
Jag skrev tidigare att klientsidan var en webbläsare med ett "plugin". Så det fanns tillfällen då Chrome uppdaterades och layouten blev lite klumpig, eller Windows Jag kommer att uppdatera och det anpassade UR-schemat kommer att försvinna. Jag ville verkligen inte ha den här typen av överraskning i den offentliga versionen av produkten. Dessutom började de anpassade UR-schemana försvinna efter varje uppdatering. WindowsMicrosoft tog helt enkelt bort alla grenar som inte tillhör Microsoft i den relevanta sektionen. Google Chrome kommer inte längre ihåg valet att öppna ett program från en anpassad URL, utan ställer denna fråga varje gång man klickar på ett övervakat objekt. Slutligen krävdes korrekt interaktion med användarens lokala system, vilket webbläsaren inte tillhandahåller. Det enklaste alternativet i det här scenariot verkar vara att helt enkelt skapa sin egen webbläsare, som många nu gör med Electron. Men mycket var redan skrivet i Free Pascal, inklusive serversidan, så de bestämde sig för att skapa klienten i samma språk istället för att skapa en blandning. Så en klient skrevs med Chromium inbyggt. Efter det började den få olika bindningar.
Släpp
Slutligen valde vi ett namn för systemet. Vi gick hela tiden igenom olika alternativ medan processen med att konvertera från den lokala versionen till SaaS pågick. Eftersom vi från början planerade att inte bara gå in på den inhemska marknaden, var huvudkriteriet för att välja ett namn närvaron av en ledig eller inte särskilt dyr domän i ".com"-zonen. Vissa funktioner/moduler har ännu inte porterats från den lokala versionen till Veliam, men vi beslutade att vi skulle släppa dem med nuvarande funktionalitet och komplettera resten som uppdateringar. I den allra första versionen fanns ingen HelpDesk, Veliam Connector, det var omöjligt att ändra tröskelvärdena för aviseringsutlösare och mycket mer. Vi köpte ett Code Sign Certificate och signerade klient- och serverdelarna. Vi skrev en webbplats för produkten, påbörjade procedurer för att registrera programvara, ett varumärke osv. I allmänhet är vi redo att börja. En lätt eufori från det utförda arbetet och från det faktum att någon kanske kommer att använda din produkt, även om vi inte hade några tvivel om detta. Och sluta sedan. Partnern sa att det är omöjligt att komma in på marknaden utan aviseringar via messengers. Det är möjligt utan många andra saker, men inte utan detta. Efter lite debatt tillkom integration med Telegram, vilket passade oss. Av alla nuvarande instant messengers är detta den enda som ger tillgång till sina API:er gratis och utan några komplicerade godkännandeprocedurer. Samma WhatsApp föreslår att du kontaktar leverantörer som tar bra pengar för att använda deras tjänster; alla brev som ber om åtkomst utan packningar ignorerades. Tja, Viber... Jag vet inte vem som använder det nu, för... skräppost och reklam finns utanför listorna. I slutet av december, efter en rad interna tester och tester bland vänner, öppnades registreringen för alla och mjukvaran gjordes tillgänglig för nedladdning.
Start av distribution
Redan från början förstod vi att vi behövde ett litet flöde av systemanvändare så att de kunde testa produkten i stridsläge och ge lite första feedback. Flera köpta inlägg på VK bar frukt. De första anmälningarna har kommit.
Här måste sägas att det är väldigt svårt att komma in på marknaden när ditt företag inte har ett känt namn, och samtidigt tillhandahålla agentlös övervakningsfunktion där du behöver lägga in konton från dina servrar och arbetsstationer. Detta skrämmer många människor. Vi förstod redan från början att det skulle bli problem med detta och var förberedda på detta både tekniskt och moraliskt. Alla fjärranslutningar, trots att RDP och SSH redan är krypterade som standard, krypteras dessutom av vår programvara med AES-standarden. All data från lokala servrar överförs till molnet via HTTPS. Konton lagras i krypterad form. Krypteringsnycklar för alla delsystem är individuella för alla klienter. För fjärranslutningar används vanligtvis sessionskrypteringsnycklar.
Allt vi kan göra i den här situationen för att få människor att känna sig lugnare är att vara så öppna som möjligt, arbeta med säkerheten och aldrig tröttna på att svara på människors frågor.
För många uppväger mjukvarans bekvämlighet och funktionalitet rädslan, och de registrerar sig. Vissa individer skrev i publicerade inlägg på VK att denna programvara inte kan användas pga Detta är en samling av deras lösenord och i allmänhet ett företag utan namn. Det måste sägas att mer än en person hade denna åsikt. Många människor förstår helt enkelt inte att när de installerar annan proprietär programvara på en server som körs som en tjänst, har den också fullständiga rättigheter i systemet och de behöver inte konton för att göra något olagligt (det är klart att du kan ändra användare från vilken tjänsten lanseras, men även här kan du ange vilket konto som helst). Faktum är att människors rädslor är förståeliga. Att installera programvara på en server är en vanlig sak, men att ange ett konto är lite läskigt och intimt, eftersom drygt hälften av människorna har samma lösenord för alla tjänster, och att skapa ett separat konto även för ett test är lat. Men för närvarande finns det ett stort antal tjänster som folk litar på med sina referenser och mer. Och vi strävar efter att bli en av dem.
Det var många kommentarer som sa att vi stal den någonstans. Detta förvånade oss lite. Tja, okej, åsikten från en person, men sådana kommentarer hittades i olika publikationer från olika människor. Först visste de inte hur de skulle reagera på detta. Antingen för att vara ledsen över att vissa har åsikten att i Ryssland kan ingen göra något på egen hand, utan bara stjäla, eller för att vara glad över att de tror att detta bara kan stjälas.
Vi har nu slutfört proceduren för att få ett EV Code Sign Certificate. För att få det måste du gå igenom en rad kontroller och skicka ett gäng dokument om företaget, varav några måste intygas av en advokat. Att erhålla ett EV Code Sign-certifikat under en pandemi är ett separat ämne för en artikel. Proceduren tog en månad. Och det var inte en månad av väntan, utan av ständiga förfrågningar om ytterligare dokument. Kanske hade pandemin ingenting med det att göra, och proceduren tog så lång tid för alla? Dela med sig.
Vissa säger att vi inte kommer att använda det eftersom det inte finns något FSTEC-certifikat. Vi måste förklara att vi inte kan få det och inte kommer att få det eftersom kryptering måste vara i enlighet med GOST för att få det här certifikatet, och vi planerar att distribuera programvaran inte bara i Ryssland och använda AES.
Alla dessa kommentarer ställer vissa tvivel om att det är möjligt att marknadsföra en produkt som kräver att du anger konton utan att vara allmänt känd. Även om vi visste att det skulle finnas de som hade en väldigt negativ inställning till detta. Efter att antalet anmälningar översteg tusen slutade vi tänka på det. Särskilt efter, förutom negativiteten hos dem som inte ens hade provat produkten, började mycket trevliga recensioner dyka upp. Det måste sägas att dessa positiva recensioner är den största drivkraften för produktutveckling.
Lägga till fjärråtkomstfunktioner för anställda
En av de vanligaste förfrågningarna från kunder är "ge Ivan tillgång till hans dator hemifrån". Vi satte upp ett VPN på Mikrotik och skapade användarkonton. Men detta är ett verkligt problem. Användare kan inte följa instruktionerna och följa steg-för-steg-instruktionerna för att ansluta via VPN. Olika versioner WindowsI ett Windows-system ansluter allt utan problem, men i ett annat krävs ett annat protokoll. Och generellt sett innebar detta alltid att nätverksutrustningen som fungerade som VPN-server konfigurerades om, och alla anställda hade inte tillgång till den, vilket var obekvämt.
Men vi har redan fjärranslutningar till servrar och nätverksutrustning. Varför inte använda en färdig transport och skapa ett separat litet verktyg som du helt enkelt kan ge till användaren för att ansluta. Jag ville bara försäkra mig om att användaren inte skrev in något abstrut där. Bara en knapp "anslut". Men hur ska det här verktyget förstå var det ska anslutas om det bara har en knapp? Det fanns en idé att bygga den nödvändiga applikationen online på våra servrar. Systemadministratören klickar på knappen "ladda ner genväg" och ett kommando skickas till vårt moln för att bygga en individuell binär med fast information för anslutning till önskad server/dator via RDP. I allmänhet skulle detta kunna göras. Men detta tar lång tid, administratören måste vänta först tills binären kompileras och sedan laddas ner. Naturligtvis skulle det vara möjligt att helt enkelt lägga till en andra fil med konfigurationen, men detta är redan 2 filer, och för enkelhetens skull behöver användaren en. En fil, en knapp och inga installationsprogram. Efter att ha läst lite på Google kom jag till slutsatsen att om du lägger till lite information i slutet av den kompilerade ".exe", så försämras den inte (nåja, nästan). Du kan åtminstone lägga till krig och fred där, och det kommer att fungera som tidigare. Det vore synd att inte utnyttja detta. Nu kan du helt enkelt packa upp applikationen när du är på språng, direkt i själva klienten, förresten den heter Veliam Connector, och helt enkelt lägga till den information som behövs för att ansluta till den i slutet. Och applikationen själv vet vad den ska göra med den. Varför skrev jag "nåja nästan" inom parentes lite högre? Eftersom du måste betala för denna bekvämlighet i och med att applikationen förlorar sin digitala signatur. Men i det här skedet tror vi att detta är ett litet pris att betala för en sådan bekvämlighet.
Tredje parts modullicenser
Jag skrev redan ovan att efter att man beslutat att göra produkten allmänt tillgänglig, och inte bara för eget bruk, fick vi jobba hårt och leta efter ersättare för några moduler som inte lät oss ingå i vår produkt. Men efter släppet upptäcktes en mycket obehaglig sak av misstag. Veliam Server, som fanns på klientsidan, inkluderade MariaDB DBMS. Och den är GPL-licenserad. GPL-licensen innebär att programvaran måste vara öppen källkod, och om vår produkt inkluderar MariaDB, som har denna licens, måste vår produkt vara under denna licens. Men lyckligtvis är syftet med denna licens öppen källkod, inte att straffa dem som av misstag gör misstag i domstol. Om upphovsrättsinnehavaren har ett krav, meddelar han överträdaren skriftligen och han måste undanröja kränkningen inom 30 dagar. Vi upptäckte själva vårt misstag och fick inga brev och började genast överväga alternativ för hur vi skulle lösa problemet. Lösningen visade sig vara självklar – byt till SQLite. Denna databas har inga licensbegränsningar. De flesta moderna webbläsare använder SQLite och en massa andra program. Jag hittade information på Internet om att SQLite anses vara den mest utbredda DBMS i världen, just på grund av webbläsarna, men jag letade inte efter bevis, så detta är felaktig information. Jag började studera farorna med att byta till SQLite.
Detta blir en icke-trivial uppgift när klienter har flera hundra servrar installerade med MariaDB och data i den. Vissa MariaDB-funktioner är inte tillgängliga i SQLite. Tja, till exempel i koden använde vi frågor som
Select * FROM `table` WHERE `id`>1000 FOR UPDATE
Denna konstruktion gör inte bara ett urval från tabellen, utan låser också raddata. Och flera fler mönster måste också skrivas om. Men förutom det faktum att vi var tvungna att skriva om många frågor, var vi också tvungna att komma på en mekanism som vid uppdatering av klientens Veliam-server skulle porta all data till det nya DBMS och radera det gamla. Dessutom fungerade inte transaktioner i SQLite och detta var ett verkligt problem. Men efter att ha läst det stora World Wide Web, fann jag utan problem att transaktioner i SQLite kan aktiveras genom att skicka ett enkelt kommando när du ansluter
PRAGMA journal_mode=WAL;
Som ett resultat slutfördes uppgiften och nu körs klientens serverdel på SQLite. Vi har inte märkt några förändringar i driften av systemet.
Ny HelpDesk
Det var nödvändigt att porta HelpDesk-systemet från den interna versionen till SaaS-versionen, men med några ändringar. Det första jag ville göra var integration med klientens domän när det gäller transparent användarbehörighet i systemet. Nu, för att logga in på HelpDesk och lämna en förfrågan i systemet, klickar användaren helt enkelt på genvägen på skrivbordet och webbläsaren öppnas. Användaren anger inga inloggningsuppgifter. Modulen för Apache SSPI, som är en del av Veliam Server, auktoriserar automatiskt användaren under ett domänkonto. För att lämna en förfrågan i systemet när användaren är utanför företagets nätverk klickar han på en knapp och han får en länk i sin e-post genom vilken han loggar in i HelpDesk-systemet utan lösenord. Om en användare inaktiveras eller tas bort i en domän, slutar även HelpDesk-kontot att fungera. Systemadministratören behöver alltså inte själv övervaka konton i både domänen och HelpDesk. En anställd slutar - han kopplar bort sitt konto i domänen och det är det, han kommer inte att logga in i systemet inte från företagets nätverk, inte via en länk. För att denna integration ska fungera måste systemadministratören skapa en GPO, som и .
Det andra vi anser vara ytterst nödvändigt för HelpDesk-system, åtminstone för oss själva, är att ansluta till sökanden direkt från applikationen med ett klick. Dessutom måste anslutningar passera om systemadministratören är på ett annat nätverk. För outsourcing är detta obligatoriskt, för heltidsanställda systemadministratörer är det också ofta mycket nödvändigt. Det finns redan flera produkter som gör ett utmärkt jobb med fjärranslutningar. Och vi bestämde oss för att göra integrationer för dem. Vi har nu integrerat för VNC, och i framtiden planerar vi att lägga till Radmin och TeamViewer. Genom att använda vår nätverkstransport för fjärranslutningar till infrastruktur fick vi VNC att ansluta till fjärrarbetsstationer bakom NAT. Samma sak kommer att hända med Radmin. Nu, för att ansluta till en användare, behöver du bara klicka på knappen "anslut till sökande" i själva applikationen. VNC-klienten öppnar och ansluter till den sökande, oavsett om du är på samma nätverk eller sitter hemma i tofflor. Först måste systemadministratören, med hjälp av GPO, installera VNC Server på allas arbetsstationer.
Nu går vi själva över till nya HelpDesk och använder integration med domänen och VNC. Detta är väldigt bekvämt för oss. Nu kan vi slippa betala för TeamViewer, som vi har använt i mer än tre år för att driva vår supporttjänst.
Vad planerar vi att göra härnäst?
När vi släppte produkten gjorde vi inga betalda tariffer utan begränsade helt enkelt gratistaxan till 50 övervakningsobjekt. Fem dussin nätverksenheter och servrar borde räcka för alla, tyckte vi. Och sedan började förfrågningar komma in för att höja gränsen. Att säga att vi blev lite chockade är att inte säga något. Är företag som har så många servrar verkligen intresserade av vår programvara? Vi utökade gränsen gratis för de som gjorde sådana förfrågningar. Som svar på deras förfrågan frågade vi några varför de behövde så mycket, om de verkligen hade ett så stort antal servrar och nätverksutrustning. Och det visade sig att systemadministratörer började använda systemet på sätt som vi inte alls hade planerat. Allt visade sig vara enkelt - vår programvara började övervaka inte bara servrar utan också arbetsstationer. Därför finns det många önskemål om att utöka gränserna. Nu har vi redan infört betalda tariffer och gränserna kan utökas oberoende.
Servrar fungerar nästan alltid med antingen lagringssystem eller lokala diskar i en RAID-array. Och vi gjorde först produkten åt dem. Och SMART-övervakning var inte intressant för denna uppgift. Men med tanke på att människor har anpassat mjukvara för att övervaka arbetsstationer har det dykt upp önskemål om implementering av SMART-övervakning. Vi kommer att implementera det snart.
Med tillkomsten av Veliam Connector finns det inte längre något behov av att distribuera en VPN-server i företagsnätverket, eller skapa en RDGW, eller helt enkelt vidarebefordra portar till de nödvändiga maskinerna för RDP-anslutningar. Många använder vårt system enbart för dessa fjärranslutningar. Veliam Connector är endast tillgängligt under Windows, och vissa företagsanvändare ansluter från bärbara datorer hemifrån med MacOS till arbetsstationer eller terminaler i företagsnätverket. Det innebär att systemadministratören tvingas återkomma till frågan om vidarebefordran eller VPN på grund av flera användare. Därför håller vi för närvarande på att slutföra utvecklingen av MacOS-versionen av Veliam Connector. Användare av sina favorit-Apple-enheter kommer också att kunna ansluta till företagets infrastruktur med ett enda klick.
Jag gillar verkligen det faktum att du, med ett stort antal systemanvändare, inte behöver tänka på vad folk behöver och vad som är bekvämare. De skriver själva sina önskemål, så det finns en hel del utvecklingsplaner för den närmaste framtiden.
Parallellt planerar vi nu att börja översätta systemet till engelska och distribuera det utomlands. Vi vet ännu inte hur vi kommer att distribuera produkten utanför vårt land, vi letar efter alternativ. Kanske kommer det en separat artikel om detta senare. Kanske kommer någon som har läst den här artikeln att kunna föreslå den nödvändiga vektorn, eller så vet och vet han själv hur man gör det och kommer att erbjuda sina tjänster. Vi skulle uppskatta din hjälp.
Källa: will.com
