phone_fill 0591 - 794 120 list_dash phone_fill0591 - 794 120 envelope_fillmail@alwinlubbers.nl
Dev Diary: Servconnect FileSync performance boost.

Servconnect

Dev Diary: Servconnect FileSync performance boost.

Soms wil ik even stilstaan bij de hoeveelheid werk dat in Servconnect gepropt zit. Één van mijn favorieten is de 'Servconnect Sync'-service, een bundel bestaande uit: FileSync, PeopleSync en CalendarSync. Met deze services krijg je de mogelijkheid om bepaalde data buiten Servconnect om te bekijken en te bewerken. Met CalendarSync is het bijvoorbeeld mogelijk om agenda's vanuit Servconnect te beheren met een 'normale' agenda app op iPhone, iPad, Mac, Windows-PCs en Android-telefoons.

Bestanden in Servconnect

Servconnect genereert ongelofelijk veel bestanden. Van afbeeldingen die jij of bezoekers uploaden tot de huisstijl van het bedrijf. Veel Content Management Systemen hebben wel een simpele browser voor bestanden of afbeeldingen, maar dit is lang niet optimaal.

In Servconnect worden bestanden anders beheerd, omdat ze anders worden opgeslagen. Servconnect maakt, als het ware, twee bakjes aan:

Als dat nog niet genoeg is worden alle bovenstaande afbeeldingen twee keer opgeslagen:

Dus voor elke afbeelding die je naar Servconnect upload, worden er (5*2 =) 10 versies opgeslagen. En dan heb ik het nog niet eens gehad over afbeeldingen die het logo er over geplakt krijgen om te gebruiken op Facebook of WhatsApp. Je snapt wel waarom een lange lijst met alle afbeeldingen gewoon niet voldoende is. Je ziet dit wel gebeuren in WordPress; populaire webshop plugin 'WooCommerce' maakt ook afbeeldingen kleiner en heeft 3 of 4 verschillende versies per afbeelding, maar deze staan allemaal naast elkaar in die gigantische waslijst aan foto's.

Het andere bakje is voor:

Hoe Servconnect afbeeldingen organiseert

Zoals je net hebt kunnen lezen maakt Servconnect voor elke afbeelding die je upload, 10 bestanden aan. Bestanden worden onder 2 albums verdeeld:

We proberen zo veel mogelijk in logisch gemaakte mapjes te stoppen. Hierdoor is later makkelijker iets terug te vinden. Daarnaast biedt Servconnect Network ongelimiteerde opslagruimte, wel zo makkelijk voor het portaal van je bedrijf.

Wat is FileSync dan?

Nu je weet hoe Servconnect met bestanden omgaat, is het nu tijd om die bestanden weer uit Servconnect te krijgen. Het is wel zo gemakkelijk dat je een paar klikken verwijderd bent van het logo van je bedrijf of die foto's van het voertuig wat je op Marktplaats wilt zetten. Dit is waar Servconnect FileSync voor ontworpen is.

Je kunt FileSync het beste zien als een externe harde schijf die altijd aan je computer gekoppeld is; hij komt tussen je andere schijven te staan en functioneert precies zoals een harde schijf dat ook doet. In plaats van dat je helemaal naar Servconnect toe moet om vervolgens speciaal iets te downloaden, kan je nu gelijk bij de bestanden en ze naar een programma zoals Photoshop of Marktplaats toe slepen als je wilt.

De WebDAV-standaard die Servconnect gebruikt zit standaard in Windows, Linux, macOS en iPadOS. Je hebt geen aparte applicaties meer nodig, zoals bij Microsoft OneDrive of Google Drive wel het geval is. Dat maakt Servconnect FileSync zo fantastisch; je hoeft niet te wachten tot Servconnect een specifiek besturingssysteem of platform ondersteunt.

Basis van FileSync

Deze sectie bevat veel technische praat.

Servconnect is gebaseerd op PHP. Normaal gesproken ontwikkelen wij elke functie zelf, alleen hebben wij voor WebDAV een uitzondering gemaakt, mede omdat de 'Servconenct Sync'-services compleet los staan van de 'normale' Servconnect code. Servconnect Sync is gebaseerd op een voor 78% aangepaste versie van sabre/dav (GitHub). Zo goed als elke functie is aangepast om performance te waarborgen; alleen de 'core' is intact gebleven. In Servconnect 3.1 hebben we veel optimalisaties doorgevoerd omdat het gewoon te sloom werkte in Finder op macOS. De performance was om te janken. Het is nog steeds niet helemaal hoe ik het wil zien, maar het is al een hele verbetering ten opzichte van de huidige versie van Servconnect.

Wat Finder in macOS 'bijzonder' maakt

De implementatie van WebDAV in de Finder is belachelijk slecht. Ik weet zeker dat er nog code rondzwerft uit de 'Leopard' dagen. Sterker nog, het zal mij niet verbazen als blijkt dat de hele implementatie is geschreven in 2007.

Stel, FileSync zegt tegen Finder: "Deze map heeft 3 bestanden: één, twee en drie". Wat Finder dan vervolgens aan de server vraagt is: "Doe mij deze bestanden: één, ._één, twee, ._twee, drie en ._drie. Oh, en ik moet ook nog ._DS_STORE van je hebben.". Voor elke map die je in de Finder opent vraagt hij bestanden aan de server die helemaal niet bestaan. Het probleem is echter dat de server wel op zoek gaat naar die bestanden, wat weer extra tijd kost. Daarom is WebDAV in Finder zo'n rotzooi. Niet alleen dat, maar ik krijg sterk het vermoeden dat de Finder maximaal 3 tot 5 bestanden in één keer opvraagt, wat dus ook weer voor vertraging zorgt. Finder is by far de traagste WebDAV client die te vinden is. Dus, hoe gaan we dit oplossen?

In Servconnect 3.1 stuurt FileSync meteen een reactie terug dat het bestand niet gevonden kon worden wanneer Finder vraagt om een bestand met '._' aan het begin van de bestandsnaam; de server gaat niet meer 'op zoek' naar het bestand. Alleen deze tweak zorgt al voor een +/- 1.5x boost in performance.

Gigantische boost in Servconnect 3.1

We hebben ongelofelijk veel kleine optimalisaties toegepast. FileSync is nu wel 3x tot wel 500x sneller in vergelijking met Servconnect 3.0.62.

Ik heb Servconnect 3.0.62 uiteindelijk maar gestopt. Niemand gaat hier op zitten wachten.

Nog maar een week tot Servconnect 3.1

Servconnect 3.1 is vanaf 27 Augustus beschikbaar als gratis update voor alle Servconnect3-gebruikers.