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.