Artikelen

SynTouch op J-Fall

Dit jaar was de 9de editie van J-FALL in Ede, de grootste Java conferentie in Nederland.
Met 1800+ deelnemers, 64 (internationale) sprekers, 50+ stands en 50+ sessies!

Als ik het vergelijk met vorig jaar, lag dit jaar de focus meer op de nieuwe features en details van Java. We zien met de half jaarlijkse releases van de JDK, natuurlijk dat er veel functionaliteiten, in een snel tempo worden toegevoegd.

Veel nieuwe features

Tijdens J-FALL hebben ze veel nieuwe features toegelicht zoals Amber (Language features toevoegen), Loom (Virtual threads), Panama (Connectie tussen JVM en (non-Java) APIs) en Valhalla (Verrijken van objecten met value objects en user-defined primitives). Zelf ben ik erg enthousiast met de komst van het project Loom. Het introduceert virtual threads die niet verbonden zijn met OS threads om concurrency op te lossen. Meer hierover kan je hier vinden.

Dit event biedt ook een mooie kans om met verschillende bedrijven te sparren over hun applicatie architectuur en hun kijk op technologie en Java in de toekomst.

Natuurlijk heb ik ook wat leuke en interessante sessies bijgewoond, die ik graag wil toelichten. In de titel staat de spreker tussen haakjes:

Distributed tracing (Ana Maria Mihalceanu)

De komst van microservices heeft veel voordelen opgeleverd, echter brengt het ook extra complexiteit met zich mee. Een van deze zaken is bijvoorbeeld de tracing door je netwerk van services.

In afbeelding 1 is te zien welke tools en fameworks er gebruikt zijn op het gebied van tracing. Het is begonnen bij X-Trace waarna Zipkin kwam. Het populaire Spring framework maakt gebruik van dit framework. OpenTelemetry combineert het beste van OpenTracing en OpenCensus.

Sampling met behulp van OpenTelemetry

Grote softwaresystemen verwerken veel requests die idealiter worden getraceerd. Echter als je al deze tracing gaat verwerken en behandelen dan is het te veel. Een techniek die gebruikt kan worden is om deze requests te samplen om zo een algemeen beeld te krijgen van de requests.

Er werden 3 verschillende vormen van sampling beschreven:

  1. Bij latency sampling sample je requests die voorbij een bepaalde latency zijn.
  2. Status sampling is gebaseerd op status codes van je requests, denk bijvoorbeeld aan 404 of ERROR.
  3. Daarnaast is het mogelijk om te samplen op combinaties van policies.

Demo

In de demo werd een quarkus applicatie getoond die requests verwerkt en deze vervolgens doorstuurt naar de Jaeger server. Ook werden er verschillende implementaties getoond van de verschillende tracing policies binnen een microservice architectuur.

Link naar de code vind je hier.

Migratie van kritische systemen binnen de NS (Arjen Jansen, Marije de Heus)

Treinen zijn kritisch voor onze mobiliteit en infrastructuur. De NS beheert grote systemen die ons helpen om van A naar B te komen. Denk hierbij aan de software voor treinborden, in de trein en allerlei andere processen.

In deze sessie kregen we inzicht in hoe de NS een kritisch systeem aan het migreren is naar een nieuw IT-landschap.

In afbeelding 4 is te zien dat de applicatie gebruik maakt van de Oracle stack en de Enterprise Service Bus. Voor de NS is deze architectuur niet meer werkbaar. Ze kunnen hun deployments niet zelf doen, changes implementeren duurt uren, veel JMS endpoints, 23 EARs om te beheren, 13 database schema’s en 1 repository met 210 modules.

Volgens het team zorgt deze stack voor veel problemen waardoor doorontwikkeling niet soepel verloopt. Daarom hebben ze gekozen om over te stappen naar een microservice architectuur met PostgreSQL, Openshift, Kubernetes, Springboot, RedHat AMQ en meer.

Wat ik mooi vind is dat dit een klassiek geval is van een migratie. Men wil van een grote monoliet, gemaakt met behulp van Oracle, over naar een microservice architectuur met behulp van OpenSource frameworks.

Migratie strategieën

In de sessie zijn meerdere strategieën besproken. Om maar met iets simpels te beginnen, de big bang. Hopelijk hoef ik niemand te overtuigen dat dit geen goede oplossing is, en zeker niet voor kritische systemen. Bij de uitrol van het nieuwe systeem wil ik ook nog graag de trein kunnen nemen.

Er zijn twee opties besproken die ik wel interessant vond en waar ik dieper op in wil gaan:

Uitfaseren

De eerste optie die besproken is, is het uitfaseren van delen, en dit lijkt op het Strangler Pattern. Hierbij zouden delen van het nieuwe BAM-systeem geleidelijk worden toegevoegd en het oude systeem worden vervangen.

Echter zou dit met integriteit van data lastig worden. Dan zou het BAM geleidelijk de data persistence moeten overzetten naar de nieuwe BAM en dan zit de integriteit in beide systemen. En zoals we weten is dit heel verwarrend en kan dit voor onstabiele situaties zorgen. Daarnaast wil het team de oude code niet of nauwelijks nog aanpassen wegens de hoge complexiteit.

Shadowing

Het team heeft uiteindelijk gekozen om een nieuwe BAM naast de oude te ontwikkelen.
Ze gaan het nieuwe systeem ontwikkelen en vervolgens de data van het oude systeem ‘kopiëren’ naar het nieuwe systeem. De data die wordt uitgestuurd vanuit de oude BAM en de nieuwe BAM worden vervolgens gecontroleerd door middel van hun custom validator. Hiermee garanderen ze dat de output in ieder geval gelijk blijft.

Waar ik zelf benieuwd naar ben is hoe ze garanderen dat de input op eenzelfde manier ontvangen wordt. Dus de interfaces van de systemen zouden gelijk moeten zijn. Hierop is niet verder ingegaan.

De oplossing vind ik wel heel logisch, aangezien dit systeem zeer belangrijk is voor de NS. Men wil zeker zijn dat het nieuwe systeem op z’n minst zo goed is als het oude systeem, gegeven de input en de output.

In mijn optiek is het een ingewikkeld traject, omdat ze complexiteit weg willen halen zonder functionaliteit te veranderen. Dus ze gaan hun database en code versimpelen. Daarbij is het noodzakelijk om goede tests te ontwikkelen die het bewijs leveren van de integriteit en stabiliteit van het nieuwe systeem.

Tot slot

J-Fall was weer heel interessant dit jaar. De grote bedrijven zoals AWS, Red Hat, de overheid en ING waren aanwezig. Ook waren er veel nieuwe stands die ik zelf niet had verwacht zoals Randstad, IKEA, Postcode Loterij etc. We zien dus dat veel bedrijven interesse hebben in Java en de ontwikkeling daarin. Zelf zie ik dat veel bedrijven overgaan op microservices gemaakt met een Java framework in Java of Kotlin. Er zijn grote ambities om systemen te vernieuwen en te verbeteren. Ik denk dat dit een goede insteek is en ben blij om het te zien. Door middel van vernieuwing gaat het makkelijker worden om systemen uit te breiden en te beheren.

De sprekers waren zoals elk jaar weer top. Het is fijn om live informatie te kunnen krijgen over de laatste ontwikkelingen en waar de markt tegenaan loopt en hoe men dit oplost. Dit heeft mij in ieder geval nieuwe inzichten gegeven en een beter beeld gegeven van het Java landschap.

SynTouch de “Open Source Way”

Ook binnen SynTouch hebben we een Open Source practice, die bedrijven helpt om oplossingen te bieden met behulp van open source producten zoals bijvoorbeeld ook via Java frameworks.

Mocht je hier meer over willen weten, neem dan contact met ons op.

Qun WangSynTouch op J-Fall
lees meer

SIDAF: SynTouch Integrated Data Architecture Framework voor houvast in de digitale transitie

Dat de digitale transitie in volle gang is zal je niet ontgaan zijn. Net als dat jouw data grote strategische en operationele waarde heeft voor de bedrijfsvoering en dat goed management hiervan vitaal is. Maar de grote vraag is: hoe anticipeer je op al deze snelle ontwikkelingen?

Het antwoord is een goed fundament. Eentje die de vragen van nu beantwoordt en tevens voorbereid is op de dag van morgen. SynTouch Integrated Data Architecture Framework (SIDAF) is zo’n fundament dat business, data en technologie binnen jouw organisatie met elkaar verbindt en strategische uitdagingen van nu en morgen op integrale wijze beantwoordt. In mijn nieuwste blogserie neem ik je graag mee in deze visie.

Wat is SIDAF – SynTouch Integrated Data Architecture Framework?

Met SIDAF kun je jouw data aanwenden waar en wanneer deze voor jou de meeste waarde oplevert. Dat impliceert een aantal zaken, die uiteraard rekening dienen te houden met de steeds strenger wordende juridische kaders rond data:

  • je dient te weten welke data er beschikbaar is en welke data je nodig hebt om je doelen te bereiken;
  • je dient deze data met afdoende kwaliteit in bruikbare vorm op de juiste plek beschikbaar te krijgen;
  • je bent in staat om waarde te genereren met data door bijvoorbeeld een uitstekende klantervaring te bieden of de concurrenten te slim af te zijn via goede inzichten;
  • je bent in staat om snel te veranderen als de markt daar om vraagt.

SIDAF helpt je om aan al deze vereisten te voldoen. Het integrale framework begeleidt je namelijk op verschillende niveaus:

  • Business – De organisatie wordt efficiënt en wendbaar gemaakt door het rond data te organiseren en deze te alignen met de processen.
  • Data – Data wordt beter te organiseren, te beheren, beschikbaar te maken en uit te wisselen.
  • Applicatie – Applicaties alignen met de business en data en tevens worden applicaties zodanig opgezet dat ze jou optimaal ondersteunen.
  • Technologie – Leverancier onafhankelijke standaardtechnologiefuncties worden beschreven en concrete voorbeelden van bijbehorende producten uit verschillende ecosystemen worden weergegeven.

Wat is kenmerkend voor SIDAF?

SIDAF wordt gekenmerkt door zeven interessante elementen, die hieronder nader worden toegelicht.

1.     Domeinoriëntatie

De organisatie wordt op basis van data in domeinen opgedeeld. Elk domein heeft een hoge mate van autonomie en verantwoordelijkheden op het vlak van data.

2.     Data management

SIDAF is opgezet met data management in het achterhoofd. Zo wordt data voorzien van informatie over de betekenis, de structuur en het doelgebruik van de data. Elk producerend domein definieert zelf de betekenis van de data en is verantwoordelijk voor de datakwaliteit.

3.     Dataplatforms en -analyse

De domeindata wordt vooral binnen een domein zelf gebruikt voor de operatie, rapportages en analyses. Dat verlaagt de afhankelijkheden tussen domeinen en verhoogt de autonomie en daarmee de wendbaarheid. Voor rapportage doeleinden heeft elk domein een eigen Domein Datastore – een lokaal datawarehouse. Indien nodig kan daarbij ook data uit andere domeinen gebruikt worden. Voor data science- doeleinden kan indien nodig een domein-datalake worden ingericht.

4.     Data integratie tussen domeinen

Als domeindata ook buiten het domein nodig is, kunnen data producerende domeinen deze op de volgende standaard manieren aanbieden aan (consumerende) domeinen:

  • via het sturen van events;
  • middels data uit API’s;
  • door hele datasets uit te wisselen met een Read-only Datastore (RDS).

SIDAF ondersteunt al deze smaken middels duidelijke implementatiepatronen.

5.     Business Process Management

Om jouw medewerkers efficiënt taakgedreven te laten werken, beschrijft SIDAF hoe je het beste business process management en case management kunt toepassen. Ook hiervoor zijn implementatiepatronen beschikbaar.

6.     Koppelbare applicaties

SIDAF introduceert zogenaamde ‘Applicatie Service Componenten’ (ASC). Dit zijn autonone applicatiecomponenten binnen één domein die verantwoordelijk zijn voor het beheer van en de transacties rond specifieke duidelijk omschreven data-objecten die tot het domein behoren. ASC’s zijn door hun opzet goed integreerbaar.

7.     Standaard technologie services (STS)

SIDAF definieert diverse generieke ‘Standard Technology Services’. Deze kunnen met verschillende producten en tools worden ingevuld. SIDAF heeft al vier verschillende ecosystemen uitgewerkt; Tibco, Mule, Apache en Azure.

Harald van der WeelSIDAF: SynTouch Integrated Data Architecture Framework voor houvast in de digitale transitie
lees meer

Weg met data driven en op naar data informed besluitvorming

Voorheen zei ik altijd dat bedrijven data driven moesten worden. Een tijd lang waren organisaties process driven en data driven was een goede ontwikkeling. Echter heeft de definitie van data driven tekortkomingen. Dus een stap verder is data informed. Dit licht ik nader toe in deze blog.

Sander van LaarWeg met data driven en op naar data informed besluitvorming
lees meer

Het implementeren van bestandoverdrachten met Azure Functions

In mijn vorige blog ben ik ingegaan op het realiseren van een bestandsoverdracht integratie middels Azure Logic Apps. Een andere methode om dit te realiseren is middels Azure Functions. In dit laatste deel van mijn Azure-reeks licht ik dan ook het stappenplan toe om een bestandoverdracht in de cloud te realiseren met Azure Functions. Verder sta ik nog kort stil bij mijn persoonlijke voorkeur voor Azure Logic Apps of Azure Functions.

Zoals ik in deel twee van deze Azure blogreeks beschreef, is het functioneel ontwerp van de Azure Functions oplossing bijna identiek aan die van Azure Logic Apps. Het grote verschil is dat Azure Logic Apps workflow-gebaseerd is en Azure Functions op code-gebaseerd. Voor alle voor- en nadelen van beide opties verwijs ik je dan ook graag terug naar deze vorige blog.

Michel ChristianenHet implementeren van bestandoverdrachten met Azure Functions
lees meer

Bestandsoverdrachten in de cloud automatiseren met Azure Logic Apps

Veel organisaties zijn bezig met de digitale transformatie. Dit gaat niet zonder slag of stoot en kent een aantal uitdagingen. Processen automatiseren, bedrijfskritische applicaties verhuizen naar de cloud, gegevens online delen met collega’s, klanten en partners, etc. Als je al deze uitdagingen van begin af aan moet programmeren en ontwikkelen, is dit behoorlijk arbeidsintensief en vooral ook duur. Gelukkig bestaan er een aantal oplossingen. Eén waar ik zelf erg te spreken over ben, is Azure Logic Apps. Momenteel ben ik voor een onderwijsinstelling bezig met het implementeren van bestandsoverdracht integraties in de cloud. In deze blog licht ik toe hoe simpel dit proces eigenlijk kan zijn met Azure Logic Apps.

Michel ChristianenBestandsoverdrachten in de cloud automatiseren met Azure Logic Apps
lees meer

Hoe je een bestandsoverdracht integratie moeiteloos realiseert met Microsoft Azure

De afgelopen jaren heb ik bij heel wat organisaties meegedraaid in mooie projecten om verscheidene integraties te ontwikkelen en realiseren. Hierbij had ik te maken met zowel zeer complexe als de wat simpelere integraties. Heerlijk afwisselend dus. Bij een van mijn laatste opdrachtgevers had ik te maken met een wat simpelere integratie, namelijk bestandsoverdrachten. Wat ik hierbij vaak tegenkom is dat bestandsoverdrachten worden geïntegreerd in producten die niet bedoeld zijn om dergelijke taken uit te voeren. Dit leidt tot een hoop problemen. Waar je dit dan wel gemakkelijk en snel mee kunt implementeren? Het antwoord is met Azure. In mijn vorige blog gaf ik al een introductie over de wondere wereld van Microsoft Azure. In deze blog licht ik toe hoe je in een handomdraai een bestandsoverdracht integratie realiseert aan de hand van een casus bij een van mijn opdrachtgevers in het onderwijs.

Michel ChristianenHoe je een bestandsoverdracht integratie moeiteloos realiseert met Microsoft Azure
lees meer

De wondere wereld van Microsoft Azure

De vraag naar cloudoplossingen neemt sterk toe. Zeker nu we massaal thuiswerken. Naast dat het voor je medewerkers makkelijker is om met de vertrouwde bedrijfsapplicaties vanuit huis te kunnen werken, verloopt het aanschaffen van hardware de laatste tijd erg moeizaam. Veel leveranciers kunnen niet leveren, neem bijvoorbeeld de computerchips. Er is een enorm tekort en dat blijft voorlopig ook nog wel aanhouden. Kortom, de overstap naar cloud is een goed idee. Maar er zijn zoveel cloudaanbieders, waar moet je beginnen? Ik neem je graag mee in de wereld van Microsoft Azure.

Michel ChristianenDe wondere wereld van Microsoft Azure
lees meer

In sneltreinvaart digitaal transformeren en innoveren

Door alle beschikbare technologieën stellen klanten steeds hogere verwachtingen aan organisaties. Bedrijven die willen meetellen, moeten gebruikmaken van een groot aantal technologieën zoals SaaS-applicaties, blockchain, AI, cloudservices en ga zo maar door. Klanten willen tegenwoordig snelle digitale ervaringen die altijd beschikbaar zijn. Krijgen ze die niet? Dan gaan ze veel liever naar de concurrent.

Eelco VerslootIn sneltreinvaart digitaal transformeren en innoveren
lees meer

Het realiseren van een omnichannelstrategie met API’s

Technologieën en social mediakanalen bepalen steeds meer de manier van communiceren. Deze ontwikkelingen zorgen ervoor dat klanten hoge verwachtingen stellen aan organisaties. Mensen willen het liefst bepalen waar, wanneer en vooral hoe ze contact leggen met organisaties. Vandaag de dag gaat het niet meer om slechts een transactie, maar om het beleven van een ervaring. Voor veel bedrijven ligt hier een uitdaging. Zij dienen hun business te transformeren en de nieuwste technologieën te gebruiken. Alleen zo kan aan de klantverwachtingen worden voldaan. Hoe optimaler kanalen worden afgestemd op de klant, hoe beter de ervaring en hoe hoger de tevredenheid. Dit is precies waar een omnichannelstrategie aan bijdraagt.

Martijn PortmanHet realiseren van een omnichannelstrategie met API’s
lees meer

Vier redenen waarom een headless architecture een goed idee is

Technologische ontwikkeling volgen elkaar in een rap tempo op. Het is uiteraard belangrijk om dit bij te houden en tijd vrij te maken om te innoveren. Alleen zo kun je de concurrentie bijblijven. Ben je binnen je huidige architectuur veel tijd kwijt aan randzaken, zoals upgrades? Of is je omgeving momenteel zeer complex? Dan kan een headless architecture weleens de oplossing zijn. In deze blog neem ik je graag mee in wat dit is en wat de voordelen hiervan zijn. Een tipje van de sluier: de voordelen zijn veelbelovend.

Martijn PortmanVier redenen waarom een headless architecture een goed idee is
lees meer