Applicatie integratie is een specifieke tak van sport binnen IT-organisaties. Simpel gezegd gaat het over alle methodieken en technologieën die worden aangewend om er voor te kunnen zorgen dat applicaties met elkaar informatie kunnen uitwisselen of functies kunnen aanbieden aan elkaar.
De manier waarop dit geïmplementeerd wordt, kent allerlei gezichten. Sommige geraken weg met wat custom scripting, terwijl anderen een ‘enterprise service bus’-architectuur hebben neergezet die gecontrolleerd wordt door een intern competence center. Welke integratie-oplossing er ook is, elke oplossing heeft soortgelijke uitdagingen:
- Op functioneel, architecturaal vlak: Gebruiken we een gemeenschappelijk (canoniek) datamodel? Doen we een ‘point-to-point’-integratie? Waar worden de processen over de applicaties heen beheert?
- En meer technologisch: Gebruiken we een integratie-framework of bouwen we zelf iets? Kopen we een (duur) pakket of gaan we opensource? Gebruiken we cloud technologieën of blijven we on premise?
Voor deze laatste vraag kunnen we een vergelijking maken met applicatie modernisatie. Bij applicatie modernisatie kijk je naar je bestaande applicatie en zoek je manieren om de applicatie op te delen in kleinere stukken om deze beter om te laten gaan met de voornamelijk niet functionele vereisten. Dat is iets waar cloud technologieën natuurlijk in excelleren.
Voor applicatie integratie kun je met die zelfde blik kijken naar je integratie problematiek. Dan hebben we het over integratie modernisatie.
Een van de mogelijke pistes, is gebruikmaken van Azure Integration Services. In deze blog leg ik kort uit hoe we deze binnen Spikes aanwenden, wat de verschillen zijn tussen andere cloud integratie-oplossingen en waarom Azure Integration Services een interessante bouwsteen is om aan integratie modernisatie te doen.
Azure Integration Services heeft meerdere componenten en binnen Spikes maken we vooral gebruik van de volgende:
- API manager : De API manager is de component die toelaat om verschillende API’s op een veilige en uniforme manier te ontsluiten naar externe (of interne) applicaties. Het zorgt ook voor een portaal waar ontwikkelaars de verschillende beschikbare API’s kunnen bekijken en toegang kunnen aanvragen.
- Azure Service Bus: De Service Bus is de messaging component. Deze zorgt voor het transportmechanisme tussen de verschillende applicaties en ondersteunt meerdere EAI patterns (Publish and subscribe, Queueing, Deadletter queues, Request/Response, etc). De Azure Service Bus is een volwaardige enterprise service bus en dit voor een redelijk prijskaartje.
- Azure (Durable) Functions: Azure functions laat toe om eenvoudig een aantal functionaliteiten beschikbaar te maken als ‘micro-services’. Als je bijvoorbeeld een custom mapping moet maken, dan kan je die perfect ontsluiten in een functie. Nog een voordeel is dat je de functies kan ontwikkelen in een reeks van verschillende technologieën (Java, .net, python, etc.). Heb je een use case waar een ‘long running’-transactie ondersteund moet worden, dan kan je aan de slag met durable functions.
- Logic apps: Logic apps geeft enerzijds de mogelijkheid om de business processen te orkestreren op een visuele manier en de instanties van de verschillende processen te bekijken. Anderzijds geeft het ook toegang tot honderden connectoren die ‘out of the box’-integraties voorzien met de meest gangbare platformen (Meer info). Zelf ben ik meer te spreken over een recente ontwikkeling binnen logic apps, nl. de logic app standard, die toe laat om de logic apps lokaal te ontwikkelen (op een lokale runtime) en dan te deployen in de cloud. Los van dit voordeel, werd er ook een kostenefficiënte manier toegevoegd om logic apps in een virtueel netwerk te hosten. Iets wat voordien ook wel ging, maar waar het kostenplaatje nog niet klopte, mijns inziens.
Wat als we kijken naar de Mulesofts en de Dell Boomi’s van deze wereld? Er zijn heel wat gelijkenissen te vinden. Zelf heb ik ervaring met Mulesoft en ik was zeer tevreden over Mulesoft als product. Alle bovenstaande functionaliteiten zijn aanwezig en geïntegreerd. Daarnaast zijn ook ‘on premise vs. cloud’-problematieken mooi afgedekt. Dus in die zin zijn ze zeer vergelijkbaar. Echter, kiezen voor Azure Integration Services heeft volgende interessante voordelen:
- Azure integration services zijn losse componenten die mooi samen werken, eerder dan dat het één groot (en log) integratieplatform is. Het grote voordeel is dat je voor elke integratieproblematiek een eigen oplossing kan voorzien. Stel je hebt een batterij java-ontwikkelaars in één afdeling, maar een andere afdeling die voornamelijk python genegen is. In Azure functions kan je beide afdelingen gebruik laten maken van dezelfde technologie. Heb je in je omgeving een aantal profielen die vertrouwd zijn met integratieplatformen zoals Biztalk, waar je eerder met een grafische tool-integratie werkt dan kan dit met logic apps. Ondanks dat het verschillende componenten zijn, gebruiken ze hetzelfde platform met eenzelfde manier van werken betreft monitoring, scaling, authenticatie en authorizatie, etc.
- De verschillende integraties zijn dan ook nog eens gemakkelijk te tweaken naar je non-functional requirements per integratie case. Een integratie flow die high available, super secure en super performant moet zijn, kan je perfect inrichten langs een occasionele integratie flow die maar af en toe moet draaien. Zo kan je zeer granulair omgaan met deze non-functionals.
- Aangezien je niet 1 groot platform moet kopen, is het prijsmodel ook flexibel. Je hoeft dus niet te kiezen voor een platform waar je voor betaald voor een jaar en waar alle integraties op draaien, maar je betaalt per component. Stel dat je bijvoorbeeld elke maand 1 dag een verwerking moet doen van betaalgegevens en die gegevens moeten worden verspreid over je IT landschap (intern en eventueel extern), dan betaal je 1 dag per maand aan gebruikte resources. Deze flexibiliteit heb je veelal niet bij andere integratie-oplossingen voor cloud-oplossingen. En al zeker niet voor een ‘on premise’-integratieframework, waar je dan vaak de infrastructuur moet voorzien voor die ene dag waar je een piek hebt.
- Azure is eveneens gekend voor IAAS- en ‘Cloud native’-oplossingen. Dus kiezen voor Azure Integration services zorgt er voor dat je in dezelfde omgeving waar je applicaties staan (of komen te staan) kan werken. Het zijn dezelfde gebruikers, zelfde manier van deployment, zelfde monitoring tools die je gebruikt als voor andere Azure oplossingen.
Bovenstaande geeft een goed beeld van wat de verschillen zijn met andere oplossingen. Er zijn echter nog een aantal andere (strategische) overwegingen om te kiezen voor Azure als integratie platform:
- Wat als je nog niet vertrokken bent met ‘cloud’-technologieën en alles nog on premise staat. Het is vaak niet eenvoudig om die eerste stap te maken. Een strategie kan zijn om juist te beginnen met je integratie platform te migreren. Zo kan je kennis op doen met Azure als een platform voor integratie doeleinden, die je dan later ook kan gebruiken om de rest van het applicatielandschap in fases mee te trekken. Door de al eerder vernoemde granulariteit kan je gemakkelijk klein beginnen en hoef je geen grote initiële investeringen te doen.
- Het gebruik van Azure functions en de kennis ervan kan het mogelijk maken om eventuele functionaliteiten die nu in één grote applicatie zitten, eruit te halen en aan te bieden als een service. Een service die bijvoorbeeld niet vaak gebruikt wordt, maar heel resource intensief is en draait op een gemeenschappelijke infrastructuur, is een goede kandidaat om in een cloud resource te steken en op die manier ook aan applicatie modernisatie te doen.
- Als je momenteel met een on premise integratieframework zit (bv. biztalk) dan zijn de running kosten vaak onder te verdelen in een licentiestuk (wat je jaarlijks betaalt) en een infrastructuurstuk (wat je over meerdere jaren zal afschrijven). Het prijsmodel voor Azure Integration Services zit net iets anders in elkaar. Onlangs hebben we een vergelijkende studie gedaan en hebben we kunnen aantonen dat het overschakelen van de ‘on premise’-infrastructuur naar het ‘Azure cloud’-platform een jaarlijkse besparing van 40% kan opleveren. Dan is de business case snel gemaakt…
Ik ben nu bijna 20 jaar bezig met applicaties en het integreren van applicaties, gebruikmakend van verschillende technieken en platformen, maar het Azure platform geeft een nieuwe manier om naar applicatie integratie te kijken. Toegegeven, niet alles is rozengeur en maneschijn. De grote keuze en verschillende componenten die allemaal moeten samenwerken kunnen soms een overweldigende indruk geven. Bijvoorbeeld inzicht krijgen in een transactie die over die verschillende componenten heen gaat is iets waar over nagedacht moet worden.
Hoe je dat dan weer oplost en hoe je de juiste keuzes maakt, is iets waar we bij Spikes de nodig ervaring in hebben en jou graag in ondersteunen.
Wout Vanduffel
Solution Architect
Applicatie Innovatie Spikes