Het is een industrie mantra voor het jaar: monolieten zijn logge, inflexibele beesten die een halt toe te roepen en alle innovatie in zijn tracks. Maar veel bedrijven hebben monolieten in een of andere vorm dat ze hebben geprobeerd in te breken – zoals de traditionele ERP en MRP systemen of grootschalige transactie systemen.

Foto: Joe McKendrick
Geloof het of niet, er zijn een aantal goede dingen te zeggen over monolieten. Ellen Körbes, manager van ontwikkelaar betrekkingen aan de Tuin, voor een, gewezen in een recente presentatie “er is iets dat we hadden met monolieten omwille van de eenvoud van de magie van de programmering was er.” Ze herinnert zich hoe met monolieten, het is gemakkelijk te leren van het systeem voor de eerste keer. U heeft één groot systeem, dus je hebt een programmeertaal, je hebt een set van regels, een set van conventies, en je hebt een grote één-build-opdracht.”
Natuurlijk, Körbes niet zien monolithische systemen in iemands toekomst, en biedt een open-source platform te breken en bouwen van een microservices architectuur.
In een aparte presentatie, Kelly Sutton, engineering manager bij Gusto, bespraken de gevolgen van de monoliet-smashing, met name gebouwd op Ruby on Rails — maar zijn advies kan worden toegepast op vele programmeertalen en frameworks die gegroeid zijn te groot om te mislukken.
Voor starters, het probleem met het verplaatsen van de functionaliteit van een monoliet en in microservices is dat beide versies zal moeten worden onderhouden en bijgewerkt, Sutton punten uit. “We hebben eigenlijk gemaakt van een probleem dat erger is dan we hadden”, legt hij uit. “We letterlijk gemaakt waardevolle kennis in ons systeem. Als we nu willen is op zoek naar een HR-concept dat we moeten gaan vragen aan iemand, ‘hey, is dat een HR-v2 of is dat in de oude HR-uitsteeksel dat is gewoon een soort van steken rond?'”
De problemen groeien, applicaties of diensten schaal. Als de beslissing is gemaakt om uit te breken in een functie als service, zoals HR-namen, adressen en persoonlijke identificatienummer, gegevens en functies kan nog gedeeld worden tussen de oude en de nieuwe toepassingen — HR-v1-en HR-v2.
Sutton illustreert wat problemen ontstaan als monolieten zijn afgebroken:
“We inventariseren van alle van de dingen die HR-v1 vandaag doet. Laten we zeggen het is net 14, en dan kunnen we langzaam beginnen met het aansluiten van het terug naar het hoofdvenster van de toepassing, zorgvuldig één voor één en het verplaatsen van die 14 gedragingen over. Maar meestal over als halverwege het wordt iemand full-time job om maar te zeggen, ‘oke, wat is in HR v2 en wat in HR-v1.’ Ga een stukje verder en je bent nog steeds bugs in de oude HR-systeem, dus nu zeg je: ‘oké, dus ik denk dat we de bug in de oude HR-systeem, maar we opnieuw te maken in de nieuwe en dan fix it-er.'”
De volgende aanbevelingen voor het uit elkaar breken monolieten zonder complicerende zaken verder:
Vermijd circulaire afhankelijkheden. Hoe werkt een stuk van een monolithisch systeem en het ontwikkelen van een microservices-gebaseerde architectuur? “Het antwoord is ‘pijnlijk'”, zegt Körbes, die opmerkingen monolithische afhankelijkheden worden verwisseld van een andere vorm van afhankelijkheden. “Service afhankelijkheden een pijn te beheren. Als ik mijn shipping service, ik zou hebben om mijn bestellingen service, en als ik mijn bestellingen service, ik zou hebben om mijn front-end service, omdat de dingen cascade. Ik kan het niet veranderen en verwachten het niet te zijn.” Het verschil met monolithische applicaties is “heb je een compiler, en de compiler kan doen de afhankelijkheid grafiek voor je.”.
Gebruik waarde-objecten aan te pakken schalen problemen. Als een voorbeeld, Sutton zegt, “we hebben een service-klasse of object dat zorgt voor ‘wat er moet gebeuren wanneer een bedrijf inschrijft in onze applicatie?’ We ‘ re gonna stuur een e-mail en toename aantal statistieken trainer counter. Dit ziet er onschuldig genoeg. Kleine toepassingen kan dit doen. Maar wat hebben we eigenlijk gedaan is voor altijd in combinatie ons bedrijf mailer in onze statistieken tracker aan op de structuur van ons bedrijf model. Dit is waarschijnlijk niet zo groot van een deal, maar als onze applicatie groeit, kan het zeer, zeer moeilijk te ontwarren. Dus in plaats daarvan hebben we schil alleen de waarden die we moeten af van die rijke actieve record objecten, zet ze in waarden. misschien geven de bundels van waarden, en dan gewoon passeren die langs om wat daaropvolgende klasse of methode die ze nodig hebben om hun werk te doen.”
Beweeg langzaam. Het breekt monolieten in gedistribueerde services zal vergen een zorgvuldige beraadslagingen. “Je hebt een grote stapel van de code en je splitsen in 20 verschillende stukjes en je wat vulling in, en sommige van deze stukken zijn nu een andere programmeertaal,” zegt Körbes. Als je naar microservices, je dingen toe te voegen, dus het gaat langzamer.” Plus, er is misschien wel honderden extra programmering uur betrokken, Sutton zegt. “Je moet gaan zitten met je product teams en zeggen: ‘Oké, we gaan dit doen en dan de dingen sneller verloop van tijd, maar voor nu niets gaat veranderen. We gaan refactor recht. Je nodig hebt om een sterke business case voor de manier waarop dit gaat om u te helpen bij het versnellen en helpen u bij het ontwikkelen van een veiliger software, ongeacht hoe slecht de huidige code is vandaag.”
Verwante Onderwerpen:
HET Prioriteiten
Cloud
Big Data Analytics
Innovatie
Tech en Werk
Samenwerking