Het experimenteren met nieuwe apps in de gratis sandbox-omgeving van Mendix

Inhoudsopgave

Ben je nieuw in de wereld van Mendix en wil je zelf hands-on met het platform experimenteren? Of werken jullie al met Mendix, maar wil je een kleine applicatie gebruiken om te experimenteren of een idee te valideren? Dan kun je gebruikmaken van de gratis ‘sandbox-omgeving’. Dit is namelijk de ideale plek om te testen of een applicatie-idee toegevoegde waarde kan hebben. Binnen een sandbox kun je uitgebreid experimenteren en testen. Slaat het idee aan en heeft het business-waarde? Dan kun je overstappen naar een omgeving met een licentie en uitgebreidere afspraken.

Wat is een sandbox?

De letterlijke betekenis van sandbox is zandbak. De term gebruikt men vaak in softwareontwikkelprojecten om aan te geven dat de omgeving die je gebruikt tijdelijk, beperkt of kleiner is dan omgevingen die meer eisen stellen aan functionaliteit, beschikbaarheid of performance.

Volgens Wikipedia worden sandbox-omgevingen vaak gebruikt om software te testen in een volledig geïsoleerde IT-omgeving (zonder netwerk of verbinding met de buitenwereld).

Wat is een Mendix-sandbox?

Elke Mendix-app die je maakt op je eigen lokale machine, draait binnen Mendix Studio Pro, de ontwikkelomgeving van het platform. Maar Studio Pro leent zich niet zo goed voor het beschikbaar maken van apps voor andere gebruikers. En dan komt de sandbox om de hoek kijken. Vanuit Mendix Studio Pro kun je namelijk met een enkele druk op de knop de applicatie naar een sandbox-omgeving overzetten. De applicatie draait nu ‘in de cloud’ en is toegankelijk voor meerdere personen om gebruikt te worden.

Aan een enkel Mendix-project kun je 1 sandbox koppelen. Deze koppeling ontstaat als je een nieuw project aanmaakt voor het bouwen van een Mendix-app. De sandbox is gelimiteerd in functionaliteit, schaalbaarheid, beschikbaarheid en performance. De verschillen met een betaalde omgeving zullen we verderop in dit artikel uitgebreid behandelen.

Vanuit technisch oogpunt draait een sandbox-applicatie in een Docker-container. Die container draait in de Mendix Cloud v4 (free tier) op het cloudplatform van AWS (Amazon Webservices). De specificaties zijn:

  • 1 GB geheugen
  • 1 GB voor bestandsopslag
  • 0,5 GB maximale databasegrootte De applicatie gaat in slaapmodus tijdens inactiviteit en herstart wanneer deze opnieuw wordt gebruikt. In de praktijk zal een app die overdag vaak wordt gebruikt 's nachts vaak in slaapstand gaan.

Verschillen tussen een gratis sandbox en een betaalde licentie

Een betaalde omgeving waarvoor je jaarlijks een licentie moet betalen, noem je een gelicenseerde cloudnode. Zo’n node wordt standaard geleverd met minimaal een productie- en acceptatie-omgeving, maar vaak wordt er ook nog een testomgeving gebruikt waar je applicaties eenvoudig naar kunt deployen.

Dit zijn de 11 verschillen tussen een sandbox en een gelicenseerde cloudnode:

Sandbox-Node Gelicenseerde cloudnote
  • U kunt uw eigen domein niet instellen
  • Maximaal 50 gebruikers tegelijkertijd
  • Met live-log kun je de voortgang van je implementatie volgen
  • Geen logbestanden die je kunt downloaden
  • Geen uitgebreide monitoring en waarschuwingen mogelijk
  • Je kunt geen pakket maken van een applicatieversie en deze uitrollen naar een sandbox
  • Geen geplande evenementen
  • Constanten moeten worden ingesteld in het model
  • Dagelijkse back-ups worden slechts 2 weken bewaard
  • Clientcertificaten en toegangsbeperkingsprofielen kunnen niet worden ingesteld
  • De omgeving stopt tijdens inactiviteit en start opnieuw wanneer er nieuwe implementaties plaatsvinden of wanneer je de applicatie start. Dit duurt 10 tot 20 seconden
  • U kunt uw eigen domein instellen
  • Aantal gebruikers volgens de licentieovereenkomsten
  • In de projectomgeving kun je de implementatie live volgen
  • Je hebt toegang tot de huidige logbestanden en een logarchief
  • Standaard bewaking van je CPU, geheugen, threads, sessies, enzovoort
  • Elke keer dat je een nieuwe versie naar de sandbox overbrengt, wordt de huidige versie overschreven. Je hebt meer controle over het maken van pakketten van een versie en het uitrollen ervan naar verschillende omgevingen (test, acceptatie en productie)
  • Je kunt geplande gebeurtenissen in- en uitschakelen
  • Constanten per omgeving instellen
  • Back-ups worden dagelijks/continu en op verzoek tot 1 jaar bewaard
  • Clientcertificaten en profielen voor toegangsbeperkingen kunnen worden ingesteld
  • Je kunt de omgeving zelf starten en stoppen

Kun je de beperkingen anders oplossen?

Als je bij het gebruiken van sandbox-omgevingen echt tegen problemen aanloopt, moet je een betaalde omgeving met een licentie aanschaffen. Je kunt er dan voor kiezen om in de Mendix Cloud je Mendix-projecten te deployen. Je kunt bovendien ook gebruikmaken van een eigen cloudomgeving als je licentie die optie ondersteunt. Denk bijvoorbeeld aan Azure, Google Cloud, SAP-cloud en Pivotal. Mendix kent daarvoor de Mendix for Private Cloud waarbij gebruik wordt gemaakt van een Kubernetes cluster (zie Mendix for Private Cloud), je hebt dan als ontwikkelaar dezelfde mogelijkheden via het platform portal als die in de publieke Mendix Cloud. Wanneer je hier niet gebruik van maakt houd er dan rekening mee dat je zelf alles moet regelen voor de infrastructuur, inrichting en het beheer van applicaties op deze cloudplatformen.

Een aantal beperkingen die gelden kun je soms met een workaround oplossen, maar deze oplossingen zijn vaak niet ideaal. Denk hierbij aan de onderstaande problemen en oplossingen:

Geen inzicht in de monitoring van grafieken en informatie → Zet de widgets van Google Analytics in je model. Deze laten al wat meer informatie zien over het gebruik van de applicatie. Ze laten bijvoorbeeld zien hoeveel gebruikers er zijn en wanneer deze gebruikers inloggen.

Geen logbestanden beschikbaar van de laatste periode dat de applicatie draaide → Zet de logging-module uit de Mendix Appstore in om logberichten weg te schrijven naar de database. Zo bouw je zelf een archief van logging op. Let op dat je maar beperkte ruimte hebt in je database. Je kan deze logberichten ook extern wegschrijven via een REST-interface naar bijvoorbeeld Datadog of een vergelijkbaar platform. Je kunt ook kiezen voor een alternatieve database.

Geen eigen domeinnaam waarop de app draait → Om de URL van de sandbox te verbergen, kun je een domein registreren of een pagina op een bestaand domein gebruiken waarop een iframe zichtbaar is met de URL van de sandbox(voorbeeldcode vind je hier). Je kunt de applicatie dan aanroepen via deze eigen domeinnaam. Iframes hebben beperkingen, bijvoorbeeld wanneer de schermgrootte van je app verandert.

Tip voor gevorderden: Als je deeplinks gebruikt, moet je daar rekening mee houden (geef de deeplink door aan het iframe, bijvoorbeeld met JavaScript).

Geen geavanceerde back-upfunctionaliteit → Stel regelmatig een back-up veilig door deze lokaal te downloaden. Voor een sandbox worden back-ups maximaal 2 weken bewaard. Een nog betere optie is om functionaliteit te ontwikkelen voor het exporteren en importeren van je data. In een sandbox kun je alleen een door Mendix gemaakte back-up terugzetten en kun je deze niet zelf uploaden.

Meer dan 1 GB aan bestanden willen opslaan → Als je een applicatie gebruikt die veel bestanden wil opslaan, overweeg dan om gebruik te maken van externe cloudopslag en deze te integreren via een REST API. Denk bijvoorbeeld aan AWS S3 of Dropbox, solutions die een lage prijs per GB bieden.

Geen scheduled events → Om processen te triggeren die u dagelijks moet uitvoeren, moet u uw sandboxapplicatie aanroepen vanuit een andere cloudapplicatie. Bijvoorbeeld data synchronisatie kan nog steeds dagelijks worden uitgevoerd. Google Scheduler, AWS Cloudwatch of de (CRM-)applicatie die u al gebruikt, kunnen dit probleem voor u oplossen.

Kan ik productie-applicaties draaien in een sandbox?

Ja, dat kan. Je moet echter wel rekening houden met bovenstaande (technische) beperkingen. Daarnaast hebben sandbox-omgevingen een lagere SLA en beperktere uptime-garanties. Natuurlijk is Mendix Support beschikbaar als er problemen optreden in je omgeving. Je kunt hiervoor een ticket aanmaken.

Is dit, eventueel in combinatie met workarounds, voldoende voor de eisen die je stelt aan de omgeving voor je applicatie? Dan kun je met een gerust hart een sandbox gebruiken voor productie applications!

Mijn ervaring is dat voor kleine, niet-missie- of proceskritische applications een sandbox prima werkt, vooral als er niet veel gebruikers tegelijkertijd gebruik maken van de applicatie. Sinds de introductie van sandbox-omgevingen zijn er nog steeds apps die ik stabiel gebruik in een sandbox.

Hoe deploy ik naar een sandbox?

Wanneer je een nieuwe applicatie aanmaakt in het Mendix platform, wordt ook de URL van je applicatie bepaald. Opmerking: deze URL kan achteraf niet worden gewijzigd!

Je app is dan beschikbaar op de URL: https://<app-naam-nummerXXX-sandbox.mxapps.io. Deze URL wordt gegenereerd op basis van de naam die je hebt gebruikt bij het maken van je nieuwe app. Na je eerste implementatie zal je app toegankelijk zijn via deze URL.

Om een nieuwe versie uit te rollen naar een sandboxomgeving, klik je op 'Uitvoeren' in het menu 'Uitvoeren'. Let op: je wijzigingen worden onmiddellijk vastgelegd op de teamserver (SVN) en je versie wordt overschreven op de zandbakcloud. Als je lokaal test, zorg er dan voor dat je de optie 'Lokaal uitvoeren' kiest.

Kan ik een productie- en test-sandbox hebben?

In de basisopstelling is dit niet direct mogelijk vanuit één Mendix project. Er is echter een workaround om een testomgeving aan te maken. Dit biedt voordelen als je nieuwe functies eerst wilt testen voordat je ze overbrengt naar de 'productie' sandbox.

Helaas zijn er altijd enkele handmatige acties nodig. Volg het onderstaande stappenplan om naast je applicatie een testomgeving te maken:

  • 1. Maak een nieuw leeg project met dezelfde naam als je .mpr-bestand als de bestaande applicatie die draait in de 'productie' sandbox.

Advanced tip: wil je echt een afwijkende URL hebben voor je testomgeving? Geef dan bij de naam van het project bijvoorbeeld op: “SurveyBuilder-test”. Je hernoemt daarna in dit project de .mpr via TortoiseSVN of SmartSVN naar exact dezelfde naam als je productie app .mpr en commit dit eerst voordat je naar stap 4 gaat.

  • Implementeer dit naar de sandbox (zie "Hoe implementeer ik naar een sandbox").
  • Je hebt nu een leeg Mendix project met een zandbak die je kunt gebruiken als testomgeving.

Als je de wijzigingen aan je applicatie eerst wilt testen op de testomgeving, doe dan het volgende:

Kopieer/plak alle bestanden uit de directory van je productietoepassing, behalve de .svn en .mendix-cache directories (als je ze niet ziet, controleer View->Hidden items).

Tips en ideeën voor het experimenteren met nieuwe apps in de gratis sandbox-omgeving van Mendix

  • Je hebt nu je lege testapplicatie overschreven met het Mendix model van je productietoepassing.
  • Breng nu de gewenste wijzigingen aan.
  • Als je nu implementeert naar je 'testapplicatie' (zie "Hoe implementeer ik naar een sandbox"), kun je een paar dingen testen.
  • Als de wijzigingen bevredigend zijn, kun je dezelfde copy/paste stappen herhalen in je productietoepassing en uiteindelijk implementeren op je 'productieomgeving'. Zoals ik al zei, vereist het maken van een testomgeving in een sandbox veel handmatig werk. In de betaalde versie is dit natuurlijk allemaal netjes geautomatiseerd.

Laatste tips

  • Als je met sandboxes werkt, moet je soms geduld hebben. Het implementatieproces verloopt niet altijd zo snel als in een gelicentieerde omgeving.
  • Je kunt de debugger gebruiken die je ook in je lokale omgeving gebruikt.
  • Zorg ervoor dat u een beheerder en gebruiker aanmaakt in de After Startup van uw model als deze er nog niet zijn.
  • Zorg ervoor, net als bij Mendix apps die op een gelicentieerd knooppunt draaien, dat uw beveiligings- en toegangsregels in orde zijn.

Ik wens je veel plezier met het gebruik van de Mendix zandbak. Experimenteer en leer! En als je vragen hebt, aarzel dan niet om contact met ons op te nemen.

Wil je meer weten?

Er zijn volop mogelijkheden om de digitale transformatie in de technologiesector te stimuleren. Wil je de digitale staat van je organisatie verbeteren? En ben je op zoek naar een partner die je kan helpen dit doel te bereiken? In dat geval is Emixa de juiste partner voor jou. Wij vertalen complexe vraagstukken in eenvoudige, gebruiksvriendelijke IT-oplossingen die jouw digitale transformatie versnellen en je bedrijf naar een hoger niveau tillen. Aarzel niet om contact met ons op te nemen. We ontmoeten je graag!