menu sluiten
Contact

Antwerpen
Veldkant 33B, 2550 Kontich
België +32 (0)3 444 11 08

Breda
Rithmeesterpark 50-A1, 4838GZ Breda
Nederland +32 (0)3 444 11 08

info@jstack.eu

11 May 2022

De Zero-Dollar Infrastructure Stack

Hoe je jouw apps kan laten draaien zonder ervoor te betalen

Artikel door Tom Buyse

Ik was nieuwsgierig of het mogelijk zou zijn om een infrastructuuropzet te kiezen die me helemaal niets zou kosten. Dat zou heel voordelig kunnen zijn voor persoonlijke hobbyprojecten of voor start-ups, bijvoorbeeld. In dit artikel deel ik de services en technologieën die ik zou gebruiken om de kosten voor de infrastructuur tot een minimum te beperken.

Om dat te illustreren heb ik een simpel platform in gedachten dat een statische website, wat server-side business logica en een database nodig heeft. Natuurlijk zal deze stack niet altijd volledig gratis zijn. Als het verbruik toeneemt, zullen de kosten uiteraard ook toenemen. Ik wil vooral bekijken of ik een stack kan bouwen die (bijna) gratis is wanneer je er in eerste instantie mee van start gaat.

Website hosting

Er zijn een paar goede keuzes wanneer je zoekt naar een geschikte provider om je website te hosten. Mijn favorieten zijn Vercel en Netlify. Ze bieden beiden vergelijkbare features aan: continuous deployment, ongeveer 100 GB aan bandbreedte per maand en een ingebouwde CDN. Een ander voordeel is dat ze beiden serverless functies aanbieden, zoals ik later in het artikel ook nog zal aanhalen. Dat vermindert het aantal services dat we moeten integreren voor onze volledige stack. 

Een static site generator zoals Gatsby is een perfecte match met deze providers. Het sluit ook mooi aan bij een headless CMS. Zo kan de website ook bewerkt worden door mensen die geen technische achtergrond hebben.

Back-end

Als we de meeste businesslogica uit de front-end willen laten, hebben we een back-end nodig. Een scenario waarvoor we een back-end zouden kunnen gebruiken, is wanneer er gebruikers geauthentificeerd of geregistreerd moeten worden. Als we de kosten tot een minimum willen beperken, is het uit den boze om een traditionele back-end service te hosten.

De oplossing zou kunnen zijn om te kiezen voor serverless functies. Dat betekent dat de back-end in plaats van een volledige server te benutten enkel servercapaciteit gebruikt wanneer de functie moet draaien. Een voorbeeld van zo’n functie is het voorzien van een login endpoint die checkt of de gebruiker de juiste credentials heeft ingevoerd. De meeste providers bieden royalty-free tiers voor deze functies. 

Hieronder noem ik enkele providers die deze functionaliteit aanbieden.

Netlify

Netlify heeft een uitgebreide free tier. Binnen deze tier kan je tot 125.000 requests ontvangen en heb je 100 uren runtime per maand. De functies zijn ook heel makkelijk te integreren wanneer je besluit om Netlify te gebruiken om je website te hosten. Deze functies kunnen binnen hetzelfde project geplaatst worden en zullen opgepikt worden door Netlify.

Vercel

Vercel heeft ook serverless functies. In de free tier is er geen limiet op het aantal requests, maar heb je ook 100 uur runtime per maand wanneer je 1GB RAM gebruikt. Ze hebben wel een bijkomende limiet op de uitvoeringstijd: functies kunnen maar 10 seconden lopen. Dat zou in de meeste gevallen voldoende moeten zijn, maar het is iets om in het achterhoofd te houden.

AWS

Amazon heeft de meest uitgebreide royalty-free tier van alle providers. AWS staat je toe om tot 1 miljoen gratis requests te maken per maand. Waar je wel rekening mee moet houden, is dat je een credit card nodig hebt om je te registreren bij AWS. Dat is niet nodig bij de andere providers of services die die ik in dit artikel vermeld.

Database

Ons platform zal ook data moeten opslaan, voor het beheren van gebruikers bijvoorbeeld. Er zijn niet veel managed databases met free tiers, en ze zijn allemaal NoSQL. Hieronder vernoem ik de spelers die ik het meest interessant vind.

FaunaDB

Dit is een interessante nieuwe speler op vlak van databases. FaunaDB noemt zichzelf een “Relational NoSQL database” en heeft een vrij uitgebreide free tier:

  • 5 GB opslag
  • 3M read ops per maand
  • 1,5 GB data transfer out per maand

Het voorziet een GraphQL API om te integreren met de database. Iets om in het achterhoofd te houden is dat het ook een makkelijke integratie biedt met Netlify en Vercel.

MongoDB Atlas

Het officiële hosting platform van MongoDB heeft een free tier. In deze tier krijg je een instantie van 512MB. Deze instantie is niet beschikbaar in alle landen, dus je zal even moeten nakijken of je het kan gebruiken.

Firebase

Firebase is een real-time database gemaakt door Google. De free tier is vergelijkbaar met die van FaunaDB:

  • 5GB opslag per maand
  • Downloadlimiet van 10GB per maand

CMS

Qua platform gaan we voor een CMS dat ervoor zorgt dat we makkelijk websitepagina’s kunnen aanmaken, bewerken en beheren. Een headless CMS integreert mooi in onze bestaande stack. Er zijn een paar gratis opties waar ik weet van heb.

Sanity.io

Sanity is een flexibel CMS waarin data models worden gedefinieerd in de code. De interface die je nodig hebt om te interageren met de data is ook vrij personaliseerbaar. Het biedt een vrij uitgebreide free tier aan:

  • 100K API requests per maand
  • 10GB bandbreedte
  • 2 datasets
  • 3 gebruikers

Prismic 

Prismic is vergelijkbaar met Sanity.io, maar er is een verschil in de free tier:

  • Slechts 1 gebruiker
  • “Fair usage” policy

De vraag is natuurlijk wat Prismic als “fair usage” beschouwt, maar het zal waarschijnlijk voldoende zijn als je net van start gaat.

Overzicht

Een vereenvoudigd overzicht van de architectuur

Maar hoe passen al die puzzelstukjes samen? In de afbeelding hierboven zie je een vereenvoudigd overzicht van de architectuur van de verschillende technologieën en providers.

  • De static site generator zal data uit het CMS ophalen voor publieke pagina’s.
  • De static site generator kan ook de serverless functies voor business logic aanroepen, bijvoorbeeld voor het authenticeren van een gebruiker.
  • Alleen de serverless functies hebben toegang tot de database. Op die manier moeten we de credentials niet in de static site generator bewaren.

Conclusie

Hopelijk heeft dit artikel jou voldoende opties gegeven voor het creëren van een setup die (bijna) gratis is. Er zijn waarschijnlijk nog meer gratis providers beschikbaar, maar ik heb in dit artikel alleen de providers vernoemd waar ik zelf al positieve ervaringen mee gehad heb.

Meer weten?

Neem contact op met Tom. Hij denkt graag met u mee in een persoonlijk gesprek.