?

TNID, blockchain oplossingen voor telefoonnummers

4/4/2022
TSG is een Amerikaans bedrijf dat diensten levert aan telecom operators en resellers. Een van deze diensten is het aanmaken van sms-campagnes. Voordat een sms-campagnes goed en veilig kan worden uitgevoerd dient deze geregistreerd te worden bij verschillende organisaties via een API. Om dit proces makkelijker te maken hebben voor we TSG TNID ontwikkeld. Via TNID hoeft een operator een campagne maar eenmaal te registreren. De applicatie zorgt er vervolgens voor dat de campagne wordt geregistreerd bij alle API’s waar dit nodig is.

TNID, nieuwste technologie.

TNID is een webapplicatie die is gebouwd met C# en ASP .NET core 6.0 en draait in Azure App Services. Het bestaat uit een frontend die is gebouwd met React, een GraphQL API en enkele Azure functions en we gebruiken KeyCloak als identity provider. Via de frontend kunnen klanten die zijn aangesloten bij TSG SMS campagnes aanmaken met de gebruiksvriendelijke web GUI. TNID stuurt de campagnes vervolgens naar de juiste organisaties en zorgt ervoor dat iedere mutatie wordt vastgelegd in een blockchain implementatie die draait in AWS.

De GraphQL API is bedoeld voor operators die dit proces willen automatiseren en eventueel in bulk willen uitvoeren. Ook hier wordt iedere mutatie vastgelegd in onze blockchain. Zowel de frontend als de GraphQL API gebruiken KeyCloak als identity provider en dit draait in een container in Azure Container Instances. De Azure functions implementeren een retry mechanisme dat ervoor zorgt dat bij een probleem in een van de backend API’s de campagnes later nogmaals worden aangeboden.

We deployen met CI/CD pipelines vanuit Azure Devops en gebruiken Git based source control. Sonar Qube is geïntegreerd voor geautomatiseerde code quality assessment en we eisen minimaal 80% code coverage voor unit tests. We reviewen elkaars pull requests en na review deployen we direct naar de development omgeving en testomgeving. Nadat de klant in de testomgeving de wijzigingen heeft getest en zijn goedkeuring heeft gegeven, wordt de applicatie automatisch doorgezet naar de productieomgeving.

de persoonlijke rol en ervaring van Ricky.

Ik was tijdens dit project onder andere betrokken bij het ontsluiten van de back end API’s. Ik heb twee services gebouwd die door de Azure functions worden gebruikt bij het versturen van de campagnes naar de API’s. Aan de GraphQL API heb ik het deel toegevoegd om nieuwe campagnes aan te maken en daarnaast heb ik meegewerkt aan de blockchain implementatie.

Het leukste aan dit project waren de innovatieve technieken die ik mocht gebruiken.

Het was voor mij de eerste kennismaking met een tool als SonarQube en een nieuwe ontwikkeling op het gebied van API’s zoals GraphQL. Daarnaast vond de blockchain technologie vond ik erg interessant om mee te werken. Ik had al veel gelezen over blockchain, maar nu kon ik voor eerst zelf in de praktijk zien hoe blockchain werkt. Erg leerzaam.

Zo’n beetje iedere organisatie gebruikt meerdere softwareoplossingen voor administratieve zaken. Die systemen staan niet op zichzelf. Informatie die wordt vastgelegd in één systeem kan nodig zijn in een ander systeem. Een eenvoudig voorbeeld hiervan is urenverantwoording. De informatie die wordt vastgelegd in zo’n systeem is nodig voor facturatie dat weer met een ander systeem wordt gedaan. Het Hub-X project heeft als doel een applicatie te ontwikkelen waarmee we een laagdrempelige oplossing willen bieden voor dit soort “integratie” vraagstukken.

hub-x, microservices architectuur.

Hub-X is gebouwd volgens de microservices architectuur. Het bestaat uit connector services en customer services. De connector services zijn de componenten die informatie ophalen uit of versturen naar een specifiek systeem. De customer services maken gebruik van de connector services en zij zorgen ervoor de informatie die opgehaald wordt door een connector service, op de juiste manier getransformeerd wordt, zodat het door een andere connector service verstuurd kan worden naar een systeem dat deze informatie gebruikt. Zo kunnen we snel en gemakkelijk nieuwe klanten aansluiten door voor iedere nieuwe klant een customer service te bouwen die de gewenste transformaties uitvoert en gebruik maakt van bestaande of eventueel nieuwe connector services. Klanten kunnen kiezen om hun eigen customer service in ons shared platform te laten draaien, maar bij zware workloads of hoge eisen aan vertrouwelijkheid kunnen ze ook voor een dedicated oplossing kiezen.

Zo kunnen we snel en gemakkelijk nieuwe klanten aansluiten door voor iedere nieuwe klant een customer service te bouwen

gebruik van nieuwe, innovatieve technologie.

Waar mogelijk gebruiken we de nieuwste technieken en werkwijzen. Hub-X draait in Kubernetes en is gebouwd met C# en .NET core 6.0. We deployen met CI/CD pipelines vanuit Azure Devops en gebruiken Git based source control. Sonar Qube is geïntegreerd in de pipelines voor geautomatiseerde code quality assessment en we eisen minimaal 80% code coverage voor unit tests. We reviewen elkaars pull requests en na review deployen we direct naar de development omgeving. Op dit moment draait ons shared Hub-X platform in Azure Kubernetes Services. De bedoeling dat we Hub-X in toekomst ook als dedicated oplossing aan klanten aan kunnen bieden en hen de keuze kunnen geven om in Azure, AWS of op eigen infrastructuur op Rancher te draaien. Voor iedere klant die dit wenst definiëren we dan een eigen pipeline in Azure DevOps.

kubernetes in azure.

In dit project heb ik me voornamelijk bezig gehouden met het opzetten van de Kubernetes omgeving op Azure. Dat vond ik erg leuk, aangezien ik de ontwikkelingen rond Kubernetes en aanverwante technologieën al een tijdje volgde. In het verleden heb ik in het kader van kennisdeling al eens een presentatie voor collega’s verzorgd over dit onderwerp. Ik had daarvoor een kleine voorbeeld applicatie gebouwd die werd gehost in een lokaal testcluster. Leuk, maar te klein om echt alle aspecten van Kubernetes te leren kennen. Nu kreeg ik de kans om Kubernetes in de praktijk te gebruiken en de specifieke problemen waar ik in tegenaan liep bij het opzetten van een product waardige omgeving zorgden voor een versnelde verdieping van mijn kennis.

Ik begrijp dat Referit mijn gegevens zorgvuldig bewaart om zo nodig contact met mij op te kunnen nemen. Alle juridische details zijn te vinden in de privacyverklaring.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.