Een technisch kijkje in de development-keuken

Bij Freedom zijn we graag transparant in wat we doen en waar we naartoe willen. We geven jullie huis-tuin-en-keuken tips, informatie over nieuwe gebieden, nieuwe diensten en laten weten waar we mee bezig zijn op het gebied van public affairs. Maar voor de wat meer technisch onderlegden onder jullie, is het vast ook interessant om te weten wat er achter de schermen gebeurt. Vandaag geven we jullie daarom een eerste blik in de development-keuken van Freedom, met dank aan onze senior software engineer Loran.

Het recept voor SOMS

Men neme wat - zoals ze zichzelf noemen - enthousiaste Nerds, een webapplicatie en Freedom-abonnementen en voilà: een Order Management System genaamd SOMS. SOMS is volledig ‘from scratch’ ontwikkelt binnen Freedom en als je iets wilt weten over software development bij Freedom, dan begint dat bij SOMS. De applicatie is gebouwd in Ruby on Rails. Het is ontwikkeld als back-end om alles rondom abonnementen te automatiseren. SOMS staat ook wel voor Subscription and Order Management System. Een hele mond vol en daarom in de Freedom-volksmond omgedoopt tot ‘SOMS’. Het systeem is ontwikkeld als webapplicatie, zodat er geen specifieke server-client infrastructuur hoeft te worden opgezet. Een webapplicatie heeft als groot voordeel dat het in principe een website is die opgeroepen kan worden in de meest voorkomende browsers. Dit zijn browsers die praktisch alle gebruikers al geïnstalleerd hebben op hun computer.

Een spin in het web

SOMS is een systeem waar klanten nooit rechtstreeks mee te maken hebben, ook niet soms dus ;-). De applicatie wordt uitsluitend gebruikt door mensen van Freedom of via andere portals.

Wanneer je ons belt of mailt dan is de kans groot dat een van ons SOMS in beeld heeft staan – nadat we je geverifieerd hebben - om te bekijken wat je hebt besteld of wat je op dit moment afneemt van ons. Ook als je onze website of het persoonlijke dashboard op MIJNFreedom gebruikt, dan wordt er op de achtergrond vaak contact gemaakt met SOMS. Daarnaast wordt SOMS gebruikt als een bron voor managementinformatie. SOMS is daarom ook wel onze spin in het web.

SOMS is de ‘single source of truth’

Bestel je een internetverbinding? >> Het eindresultaat is een actief abonnement in SOMS
Bestel je ook televisie? >> Het eindresultaat is een actief abonnement in SOMS
Zeg je bellen op? >> Het eindresultaat is een niet meer actief abonnement in SOMS
Ga je verhuizen? >> Het eindresultaat is een actief abonnement in SOMS

Kortom, SOMS vormt de ‘single source of truth’ ten opzichte van andere interne systemen.

Privacy by design

De manier waarop wij werken heet privacy by design and privacy by default. Dat wil zeggen dat wij altijd proberen zo min mogelijk informatie van klanten uit te vragen. Maar het betekent ook dat we heel kritisch omgaan met het delen van deze informatie. SOMS is daarom ook op deze manier ontwikkeld, we plaatsen hierin alleen de noodzakelijke gegevens zoals wie je bent, waar je woont, wat je hebt besteld en wat je afneemt. Gegevens zoals je geslacht zijn voor het leveren van onze dienstverlening niet relevant en daarom worden die niet gevraagd.

In het volgende kijkje in de development-keuken vertellen we je meer over Ruby on Rails, het framework waarin SOMS gebouwd is. Kun je niet wachten? Op LinkedIn - een zakelijke online netwerksite, gericht op vakmensen - vertelt Loran meer. 


Zie het oorspronkelijke bericht op https://freedom.nl/nieuwsartikel/een-technisch-kijkje-in-de-development-keuken
9 likes

Heel erg leuk om te lezen !
Ook het meer uitgebreide verhaal op LinkedIn.
Kijk, daarvoor kies ik ook voor Freedom.

3 likes

LinkedIn, bekend van de belofte, wij gaan foto’s van leden niet gebruiken voor reclame doeleinden en dan het lekker wel doen.

“Once bitten, twice shy”, jammer dat je dan naar zo’n site verwezen wordt. Een degradatie van de Freedom Community op deze manier.

2 likes

Dank je, leuk om te horen! :smiley:

Welkom @loran ,

vriendelijk verzoekje van mij:
omdat ik niet koekjes-vrij bij Linked-IN terecht kan (wil) ,
zou ik graag de bewuste video hier al willen zien (op deze F-Community)

Is dat mogelijk ?

( is wens, geen eis )

De tekst van LinkedIn (Een technisch kijkje in de development-keuken van Freedom Internet):

Samenvatting

Een technisch kijkje in de development-keuken van Freedom Internet

Published on July 18, 2022

Vanzelfsprekend automatiseren we zoveel mogelijk bij Freedom Internet. Behalve dat dit bedrijfseconomisch verstandig is, zijn we echte nerds en dus vinden we processen automatiseren ook leuk. Vanuit mijn perspectief als senior software engineer wil ik jullie graag meenemen met de technische kant van ons order management systeem genaamd SOMS, een applicatie gebouwd in Ruby on Rails.

SOMS

Ons order management systeem is omgedoopt tot SOMS: Subscription and Order Management System. (Alle grappen over dat het heel soms niet werkt zijn al gemaakt, maar wees vooral creatief). Het systeem is ontwikkeld als een webapplicatie zodat er geen specifieke server-client infrastructuur hoeft te worden opgezet. Een webapplicatie heeft als groot voordeel dat het in principe een website is die opgeroepen kan worden in de meestvoorkomende browsers: browsers die praktisch alle gebruikers al geïnstalleerd hebben op hun computer. SOMS is een systeem waar klanten nooit rechtstreeks mee te maken hebben; de applicatie wordt uitsluitend gebruikt door mensen van Freedom of via andere portals. Als je ons belt of mailt dan is de kans groot dat een Freedommer SOMS in beeld heeft staan om te bekijken wat je hebt besteld of wat je op dit moment afneemt van ons. Maar ook als je onze website of het persoonlijke dashboard op mijn.freedom.nl gebruikt, dan wordt er op de achtergrond vaak contact gemaakt met SOMS. Verder wordt SOMS ook gebruikt als een bron voor managementinformatie. SOMS vormt op die manier een spin in het web voor Freedom.

SOMS is ontwikkeld als back-end (met een UI voor Freedommers) om alles rondom abonnementen te automatiseren. Bestel je bij ons een internetverbinding? Dan is het eindresultaat een actief abonnement in SOMS. Bestel je vervolgens tv? Ook dan is het eindresultaat een abonnement in SOMS. Zeg je iets op? Dan wordt in SOMS dat abonnement verwijderd. Ga je verhuizen? Dan gaan we in SOMS de noodzakelijke gegevens wijzigen. SOMS vormt op die manier de ‘single source of truth’ ten opzichte van andere interne systemen.

Uiteindelijk bewaren we in SOMS wie je bent, waar je woont, wat je hebt besteld, wat je afneemt en vervolgens ook niet meer dan dat. We streven er naar om alleen het noodzakelijke in SOMS te bewaren. Dat betekent bijvoorbeeld dat we opslaan op welk adres je internetverbinding wordt geleverd maar dat we andere gegevens zoals je geslacht niet opslaan omdat dat gegeven niet relevant is voor onze dienstverlening.

Ruby on Rails

We ontwikkelen SOMS in het framework Ruby on Rails. Daarin is ruby de programmeertaal zoals javascript, c++, python en go dat ook zijn. Rails is dan het web application framework gebouwd in ruby. Het is een zogenaamd ‘opiniated’ framework. Dat betekent dat de ontwikkelaars van het framework al bepaalde keuzes hebben gemaakt zodat we als gebruiker van het framework daar niet over hoeven na te denken. Denk aan bijvoorbeeld formulieren, cookies, databasetoegang en security. Zo’n opiniated framework als Rails is vaak een zegen en soms een vloek. Maar hier geldt: maak een verstandige keuze en ga uit van datgene wat het vaakst van toepassing is. Daarbij geldt ook dat je in Rails praktisch altijd de mogelijkheid hebt om af te wijken van wat al besloten is voor je. Rails wordt/werd o.a. gebruikt door GitHub, Twitter, Shopify en Netflix. Je ziet met Rails vaak dat het in de start-up fase wordt gebruikt waarin functionaliteit en opleveringssnelheid de belangrijkste voorwaarden zijn.

In een wat verder verleden - voordat ik werkte voor Freedom - was de beslissing al gemaakt om het order management systeem SOMS als webapplicatie te ontwikkelen in Ruby on Rails. Wat mij betreft een goede beslissing. Ruby on Rails is erg geschikt om start-ups zoals Freedom te faciliteren. Ervaren Rails-developers kunnen zeer snel een webapplicatie (door)ontwikkelen in Ruby on Rails. Natuurlijk zijn er andere en vergelijkbare frameworks. Denk aan Laravel in PHP of Django in Python. Maar uiteindelijk moet je praktisch en economisch zijn: welke developers heb je beschikbaar, waar zijn ze handig mee en zijn de huidige developers relatief snel op te leiden om te programmeren in het gekozen framework? Vanuit die vragen is Ruby on Rails naar voren gekomen. Op basis van de huidige situatie zien we ook geen redenen om te kiezen voor een ander framework.

Persoonlijk ben ik een groot fan van Ruby on Rails en ik heb er meer dan 15 jaar ervaring mee. Het verhaal met web application frameworks zoals Rails is hetzelfde als met besturingssystemen. Er zijn mensen fan van Windows, van Apple’s besturingssystemen of van Linux. En ze hebben allemaal gelijk. Het punt is uiteindelijk namelijk erg simpel: werk met datgene waar je het makkelijkst, snelst en fijnst in werkt. Dat is voor jezelf leuk en voor je werkgever/opdrachtgever het slimste. Zo geldt dat ook voor web application frameworks zoals Rails. Ik heb gewerkt met Symfony (de basis van Laravel), met Java’s Spring Boot, met Django en dus met Rails. En in mijn optiek doen ze niet voor elkaar onder. De een is schaalbaarder, de andere trekt meer developers aan en weer een andere heeft een actievere community en betere support. Uiteindelijk blijft de manier van kiezen voor een framework hetzelfde: kies wat voor de huidige situatie verstandig is en probeer niet te veel de toekomst in te vullen.

Bestellen

Om wat begrip te krijgen van SOMS is het handig om een veel gebruikt orderproces te doorlopen waarbij we beginnen met de postcodecheck. De meeste aspirantleden bestellen via onze website. Tijdens het bestelproces wordt voortdurend contact gelegd met SOMS en zelfs al vóór het bestellen. Het start namelijk op het moment dat je de beschikbaarheid checkt met een postcode en huisnummer. Bij de postcodecheck op de website wordt in SOMS gecheckt wat er leverbaar is op jouw postcode. Die informatie over leverbaarheid hebben we zelf meestal niet en halen we op bij onze partners via zogenaamde API’s. Nadat de postcodecheck klaar is levert SOMS aan de website een lijst met beschikbare internetverbindingen die jij in je browser te zien krijgt. Nadat je een keuze hebt gemaakt uit de beschikbare verbindingen, start je het bestelproces.

Tijdens het bestelproces maak je keuzes over de producten die je wilt hebben en hoe je de installatie wilt uitvoeren. Denk aan huren/kopen van een modem, wel/geen monteur en wel/geen tv of telefonie. Ook vul je bepaalde gegevens in zoals je mailadres en tenslotte klik je op de knop ‘bestellen’ waarmee je bestelorder definitief wordt. Zoals eerder genoemd wordt er voortdurend contact gelegd met SOMS. Bij elke stap in het orderproces wordt in SOMS gecontroleerd of de order in de huidige staat bevestigd kan worden. Nadat je definitief bestelt, gaat SOMS voor je aan de slag.

Orders, taken en abonnementen

Op het moment van daadwerkelijk bestellen treedt er op de achtergrond van alles in werking. Dit merk je aan mailtjes die je krijgt, een thuisbezorgd pakket hardware, een monteur die langskomt en een internetverbinding die opgeleverd wordt. Dit wordt geheel geautomatiseerd aangestuurd door SOMS via een systeem van orders en taken.

Elke bestelling die je doet, levert in SOMS een order op die afgerond moet gaan worden. Een order is een breed begrip. Ook het wijzigen van je snelheid is een order. Of zelfs het aanpassen van je IBAN. Simpel gezegd: alles wat wijzigt aan jouw abonnement of je gegevens wordt realiteit via een nieuwe order. Een order is gekoppeld aan een klant en bestaat uit meerdere taken. Alle taken worden in principe automatisch uitgevoerd. Mocht een taak niet uitgevoerd kunnen worden om welke reden dan ook, dan kan een Freedommer ingrijpen en de taak opnieuw laten uitvoeren en desnoods eerst aanpassen. Pas als álle taken zijn voltooid, is ook de order voltooid. Het eindresulaat van een order zijn een of meerdere nieuwe of aangepaste abonnementen.

Ook een taak is een breed begrip, maar het komt erop neer dat een taak invoer ontvangt, iets geautomatiseerd doet en uitvoer produceert. Die uitvoer kan gebruikt worden als invoer voor een andere taak of om informatie op te slaan in SOMS. Zo is er een taak genaamd EmailHardwareSent, deze taak wacht tot de hardware verzonden is van onze partner naar een klant. Als dat het geval is, dan stuurt de taak een mailtje naar de klant. Een andere taak is CanalDigitaalCreate, met deze taak wordt bij Canal Digitaal een tv-abonnement besteld en gekoppeld aan onze klant. Nog een ander voorbeeld is de taak InternetConnectivityCheck: we controleren uiteindelijk of je interverbinding daadwerkelijk ‘up’ is door heen en weer te pingen tussen jouw aansluiting en onze servers. Daar zorgt deze taak voor. Voor een internetorder zijn er soms meer dan 20 taken nodig om uiteindelijk de order te voltooien. Sommige taken worden uitgevoerd direct nadat een andere taak is voltooid. Maar er zijn ook taken waarbij SOMS om de zoveel tijd checkt of ze uitgevoerd kunnen worden omdat er gewacht moet worden op bepaalde condities. Kortom, taken doen in SOMS het meeste werk en zijn noodzakelijk om orders te voltooien.

Als een order met al z’n taken is afgerond dan levert dat een of meerdere nieuwe of gewijzigde abonnementen op. Vanuit één order kan bijvoorbeeld internet en tv zijn besteld. Dan is het resultaat twee abonnementen: een voor de internetaansluiting en een voor tv. We hebben SOMS zo ingericht dat abonnementen uiteindelijk los kunnen bestaan van orders. Op die manier kunnen we orders verwijderen terwijl de abonnementen blijven bestaan. Dit sluit mooi aan op onze constante jacht op dataminimalisatie.

Ondanks dat ik het hier voornamelijk over orders en taken heb gehad, vormen uiteindelijk de abonnementen in SOMS de bron van wat er op dit moment aan klanten geleverd wordt. Anders gezegd: orders en taken in SOMS vertellen ons wat er staat te gebeuren, abonnementen vertellen ons wat er gebeurt op dit moment.

Tot slot

Wat ik hierboven beschrijf is een ‘high over’ van onze SOMS-applicatie. Hopelijk heb ik hiermee een mooie aanzet gegeven voor een goed inzicht in onze automatisering en specifiek het order- en abonnementendeel ervan. Wil je ergens meer van weten? Wil je misschien zelfs dat we eens stukje broncode behandelen? Laat het mij vooral weten!

9 likes

Bedankt voor dit leuke kijkje in de technische keuken van Freedom :+1:
Ook bedankt voor het hier delen van de inhoud van de linkedin pagina zodat ik zonder privacy inbreuk mee kan genieten.

2 likes

Dit topic is 14 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.