Voor een project bij mijn huidige opdrachtgever gingen we een oude applicatie, bestaand uit verschillende integraties en aangestuurd door verschillende BPM-processen, herbouwen op basis van een nieuwe microservices architectuur. Van integratie componenten, servicebus en SOAP-webservices naar microservices en op REST gebaseerde webservices. Het lijkt niet zo'n groot verschil maar de aanpak was compleet anders. In de nieuwe architectuur hadden we in plaats van verschillende integratie-componenten een enkele backend (welliswaar bestaand uit verschillende microservices) maar deze werd als op zichzelf staand project ontwikkeld. Integraties met andere systemen verliepen altijd via de API-gateway, waardoor er altijd een duidelijke scheiding was tussen applicatie en de rest van de organisatie.

Hoewel mijn expertise zich met name op het integratie vlak heeft ontwikkeld, was dit een heel andere benadering die we (kan ik achteraf zeggen) met goed gevolg hebben kunnen afronden. De technische requirements waren gelukkig niet heel erg veeleisend, de overgebeleven uitdagingen verschilden eigenlijk niet zo veel van een gewoon integratie project.

Dat gezegd hebbende zijn er wel degelijk verschillen tussen applicatie integratie enerzijds en applicatie ontwikkeling anderzijds. Hieronder een duidelijke vergelijking tussen applicatieontwikkeling en applicatie-integratie, met focus op doel, technologieën, rolverdeling, uitdagingen en typische use-cases.

Kenmerk Applicatieontwikkeling Applicatie-integratie
Doel Ontwikkelen van nieuwe softwareapplicaties of functionaliteiten Koppelen van bestaande systemen zodat ze samenwerken
Focus Businesslogica, UI/UX, dataverwerking Data-uitwisseling, procesafstemming, interoperabiliteit
Gebruikte technologieën Java, Python, .NET, JavaScript frameworks (Angular, React) ESB, API gateways, EAI-tools, BPM, messaging, ETL-tools
Datamodel Gericht op domeinmodellering en persistentie Gericht op datatransformatie en mapping tussen systemen
Communicatie Binnen de applicatie (interne methodes, services) Tussen applicaties (via API’s, messaging, events, bestanden)
Typische tools IDE’s, CI/CD-pipelines, versiebeheer (Git) Integration platforms (MuleSoft, TIBCO, Apache Camel), maar ook: CI/CD-pipelines, versiebeheer (Git)
Testing Unit tests, integration tests, UI tests Contract testing, end-to-end tests, interface monitoring
Beheer DevOps voor eigen applicatie Monitoring van koppelingen, foutafhandeling en retries
Rol(len) Frontend/backend developer, DevOps engineer Integration engineer, solution architect
Voorbeelden van werk Bouwen van een webshop, mobiele app, interne portaal Koppelen van webshop aan ERP, synchronisatie klantdata tussen CRM en marketingtool
Uitdagingen Performance, schaalbaarheid, security, gebruiksvriendelijkheid Data-transformatie, foutafhandeling, versies, afhankelijkheden
Benadering Greenfield of uitbreiding op bestaande codebase Meestal brownfield, afhankelijk van bestaande systemen

Samengevat

  • Applicatieontwikkeling gaat over het creëren van functionaliteit voor gebruikers.
  • Applicatie-integratie draait om het laten samenwerken van bestaande systemen.

Ze vullen elkaar aan: zonder goede integratie is een applicatie vaak niet bruikbaar in het bredere IT-landschap, en zonder applicaties valt er niets te integreren.