Wat een gebeurtenissen, mede door de Corona.

Corona melding mogelijk maken

Max is op dit moment nog bezig met een mogelijkheid dat we een melding aan alle gebruikers kunnen tonen. Een soort van system-wide melding, bij deze wordt dus niet per persoon bijgehouden of die al gelezen is of niet. Iets met cookies en kruimels. Uiteraard komt dit wel uit de backend dus daar heb ik wat gerommeld met meldingstypes. We komen er wel uit.

Wijslijst en Inge brengen hopelijk heel wat traffic

Fijn, zo'n bestuurder die mensen aanspoort om Eddie te bezoeken! Wijslijst gaat ook helpen, maar ik vind het wel wat spannend onder meer omdat de UI nog bij lange na niet gebruikersvriendelijk is. De UI is voor een deel weer afhankelijk van de backend... Max en ik teamen hierin samen.

  1. Zo moet de Aap verdwijnen, en heeft Elisa alvast een nieuwe plaat gemaakt ter vervanging.
  2. De grootte van plaatjes wijzigen moet nog altijd met onleesbare knoppen.
  3. Aanmeld e-mails komen nu aan.
  4. Permalinks werken niet meer.
  5. Het contact formulier werkt wel! En daarmee onderscheiden we ons van andere platformen.
  6. De API-test machine (die nog steeds de productie draait) is opgeschaald naar 8GB ram. 3 regels nodig. Me ❤ openstack.
  7. ... En zo nog wat meer van die dingen...

Manon kreeg hoofdpijn

Telkens als zij een item verhuisde dan werd die pas 'later' op magische wijs overgezet. Deels. Want: in de zoekresultaten zie je de nieuwe gebruiker gekoppeld, en dan open je het artikel en dan is de vorige eigenaar nog actief. Kak! Want dan kan de nieuwe eigenaar niet editen (dat knopje komt niet te voorschijn) en de oude kan wel bewerken, maar geen wijzigingen opslaan (want die is niet meer de eigenaar volgens een ander deel van de backend).😕

Na enig onderhoud met de ingewanden van ons backend, blijkt dat Facebook's dataloader mij weer bij de neus had. Voornamelijk omdat de cache een {}is en dat een b'waarde' toch echt iets anders is dan een 'waarde' die eventueel zelfs nog opgeslagen kon zijn als uuid.UUID(waarde). Gelukkig was het geen green thread probleem zoals bij de e-mails.  Kennelijk heeft Facebook dit probleem ook gehad en hebben zij er een oplossing mogelijkheid ingebouwd. Dus nu heb ik met een paar try ... except ... blokken gewoon alles geconverteerd naar een str . Klaar. Duidelijk. Aanpassingen zijn direct zichtbaar, cache wordt nu geflushed voor enkel het ID dat geupdate moet worden, maar (dankzij Nameko en Rabbit) wel op alle GraphQL nodes die draaien. 😎

Manon hopelijk weer blij.

Over die e-mails die niet meer aankwamen

De overgang naar green threads leverde wat 'onwennigheden' op. Naast veel voordelen (zie hierboven) is het duidelijk geworden dat requests niet lekker werken in een groene-draadjes-omgeving. Oplossing: spawn een 'regulier' python proces voor elke e-mail die verzonden moet worden. Verstuur de parameters als json over sys.stdin en zorg zo dat requests.post weer werkt en Mailgun's aapje wordt gevoerd met onze template variabelen! Bam. Mail (Subopti-mail, ik weet het, maar het is werkzaam voor nu).

Backups en voegen  

Backblaze B2 is best wel goedkoop maar 750GB aan PostgreSQL backups is misschien toch wat veel voor ons.  @Kevin en @Jesper hadden hier een oplossing voor gemaakt en die hebben we nu ook live gezet. Het retentie backup script werkt naar behoren en onze opslag is drastisch verminderd. Dank, heren!

Productie is test, wordt ontwikkel, want ontwikkel is test maar draait productie ... en andere 😲

Samen met @Jesse en @Fady gekeken naar een slimme opzet voor onze huidige productie backend (wat voorheen een ontwikkel omgeving was) en hoe we die slimmer kunnen omzetten naar een productie omgeving. Want met meer load wordt dat belangrijk. Het werk dat zij doen met Docker sluit hier geweldig op aan.

Een paar basisprincipes die wij nu hanteren:

  1. Hou het zo simpel mogelijk.
  2. Flexibiliteit is voor high availability en scalability is belangrijk.
  3. Tot het niveau dat wij koppijn krijgen en terugvallen op punt 1  (oftewel, de overhead wordt te groot).  Het plan tot dusver: de oude productie wordt een nieuwe ontwikkel, de oude ontwikkel/test draaide toch al productie dus die richten we ook als zodanig in en verschuiven onderdelen naar losse servers tot wij alle vitale delen op de juiste plek hebben. Dan brengen we het restantje functionaliteit van de oude productie over naar de nieuwe productie en gooien we de oude productie weg, om ruimte te maken voor een nieuwe ontwikkel. Tadaa!

Heel toevallig liepen we toen zo-maar-spontaan-en-ineens tegen een docker repository op code.dutveul.nl waar al heel wat van dit werk in stond, gemaakt door @Gerjan. Wederom bedankt!

Discord is ♥

Discord met Nitro classic is ❤❤ want schermen zijn leesbaar als die gestreamed worden op 1080!  En zo verblijven wij, dankbaar, in de voice-chat.

Tot de volgende microblog!

Grabbelton