Vad är middleware?
Middleware är mjukvarulagret som sitter mellan olika system och översätter, köar och förmedlar data, så att systemen slipper känna till varandra direkt. Det fungerar som en tolk mellan parter utan gemensamt språk. Konkreta former är meddelandeköer, integrationsmotorer och API-gatewayer. Nyttan märks tydligast vid systembyten – byt ena sidan utan att röra den andra.
Middleware är ett av de där orden som beskriver något genom var det sitter snarare än vad det gör. Det betyder ungefär mellanprogramvara, mjukvara i mitten, och det fångar poängen: middleware är limmet mellan system som annars skulle ha svårt att prata med varandra. För den som ska förstå hur ett systemlandskap hänger ihop är det ett nyckelbegrepp. Här är förklaringen.
Liknelsen: tolken
Tänk dig två personer som ska göra affärer men inte talar samma språk. De skulle kunna kämpa med gester och lösryckta ord, men det blir långsamt och fullt av missförstånd. Sätter man i stället en tolk mellan dem löser det sig. Var och en talar sitt eget språk till tolken, som översätter åt båda håll. Parterna behöver aldrig lära sig varandras språk – de behöver bara prata med tolken.
Middleware är den tolken mellan system. Två system kan vara byggda på helt olika sätt, tala olika format och ha olika tempo. I stället för att tvinga dem att förstå varandra direkt sätter man ett mellanlager emellan. Varje system pratar med middlewaren på sitt eget sätt, och den översätter och förmedlar. Systemen slipper känna till varandras inre.
Vad middleware faktiskt gör
Bakom tolkbilden ligger några konkreta uppgifter. Middleware brukar göra tre saker, ofta i kombination:
- Översätter. Olika system beskriver samma sak på olika sätt. Middlewaren omvandlar data från det ena formatet till det andra, så att mottagaren förstår vad avsändaren menar.
- Köar. Om mottagaren är upptagen eller tillfälligt nere kan middlewaren hålla meddelandena i kö och leverera dem när det går, i stället för att de tappas. Flödet överlever att en part inte är redo just nu.
- Förmedlar. Den ser till att rätt data tar rätt väg till rätt system, och dirigerar meddelanden dit de ska när många system är inblandade.
Tillsammans gör de att systemen kan samarbeta utan att vara hårt hopkopplade. Var och en gör sitt, och mellanlagret håller ihop det.
Konkreta former
Middleware är ett samlingsbegrepp snarare än en enskild produkt, och det tar sig flera former:
- Meddelandeköer. De tar emot meddelanden och håller dem tills mottagaren är redo. Så tappas inget om ena sidan är upptagen, och system som arbetar i olika takt kan ändå samverka.
- Integrationsmotorer. De översätter och dirigerar data mellan många system, och är navet när ett helt landskap ska hänga ihop.
- API-gatewayer. Den gemensamma ingången framför flera tjänster räknas också som en form av middleware, eftersom den sitter mellan konsumenterna och tjänsterna och förmedlar.
Gemensamt för alla: de sitter i mitten och sköter förmedlingen, så att systemen på var sida kan hållas oberoende av varandra.
Nyttan vid systembyten
Här ligger kanske det starkaste skälet att bry sig om middleware, även som beslutsfattare. När system pratar direkt med varandra blir de hårt sammanflätade. Byter ni ut det ena tvingas ni ofta ändra i allt som var kopplat till det, eftersom beroendena löper kors och tvärs. Ett systembyte blir då ett stort, riskabelt projekt som spretar långt utanför själva systemet.
Med middleware emellan bryts det beroendet. Systemen pratar med mellanlagret, inte direkt med varandra. Ska ni byta ut det ena räcker det i stort att justera dess koppling mot middlewaren – den andra sidan kan lämnas orörd, eftersom den bara känner till mellanlagret. Ni kan byta ena sidan utan att röra den andra.
Det gör systemlandskapet mer flexibelt och framtidssäkert. System kommer att bytas ut över tid, och ett mellanlager gör varje sådant byte mindre smärtsamt.
Ett konkret sätt att se det: säg att ni byter affärssystem, något de flesta organisationer gör förr eller senare. Utan middleware, där webb, lager och ekonomi pratar direkt med det gamla affärssystemet, måste var och en av de kopplingarna göras om mot det nya. Med ett mellanlager emellan pratar de i stället med middlewaren, och bara dess ena koppling – mot affärssystemet – behöver bytas ut. De andra systemen märker knappt av bytet. Det är skillnaden mellan att röra allt och att röra en punkt.
Vi på Weapp bygger integrationer med rätt mängd mellanlager – tillräckligt för att hålla systemen oberoende, utan onödig komplexitet. Titta på våra tjänster eller hör av dig.
Vanliga frågor
Vad betyder middleware?
Ordet betyder ungefär mellanprogramvara: mjukvara som sitter i mitten, mellan andra system. Dess uppgift är att förmedla mellan dem – översätta mellan olika format, köa meddelanden och se till att data når rätt ställe. Systemen på var sida behöver då inte känna till varandra i detalj, utan pratar var för sig med mellanlagret som sköter kopplingen.
Kan du ge ett exempel på middleware?
Meddelandeköer är ett vanligt exempel: de tar emot meddelanden från ett system och håller dem tills mottagaren är redo, så att inget tappas om ena sidan är upptagen. Integrationsmotorer översätter och dirigerar data mellan många system. Även en API-gateway räknas som en form av middleware. Gemensamt är att de sitter mellan systemen och förmedlar.
Vad är skillnaden mellan middleware och ett API?
Ett API är kontaktytan ett enskilt system erbjuder för att andra ska kunna prata med det. Middleware är lagret mellan systemen som använder och samordnar sådana kontaktytor – det översätter, köar och dirigerar. Man kan säga att API:er är dörrarna på systemen, medan middleware är förmedlaren som ser till att rätt sak tar rätt väg mellan dörrarna.
Varför är middleware bra vid systembyten?
För att det bryter det direkta beroendet mellan systemen. När system pratar via ett mellanlager i stället för direkt med varandra kan ni byta ut det ena utan att röra det andra – bara kopplingen mot mellanlagret behöver justeras. Utan middleware, med allt hårt sammankopplat, tvingar ett byte på en sida fram ändringar överallt det systemet rörde.
Behöver alla integrationer middleware?
Nej. Ska bara två system kopplas ihop kan en direkt integration räcka och vara enklare. Middleware kommer till sin rätt när flera system ska hänga ihop, när data behöver översättas mellan format, eller när flöden måste tåla att en part tillfälligt är nere. Ju fler och mer olikartade systemen är, desto större blir nyttan av ett samordnande mellanlager.