
Skirbi · 3 mar 2020
Arkitektura di software monolítiko versus microservices
Skohe e desèño korekto pa desaroyo di bo app
E siman aki mi a bula bai Gothenburg pa kon hende di un kompania internashonal grandi di transporte marítimo, pa papia tokante desaroyo di software di nivel empresarial. Durante e reunion tabata tin varios eksperto den kamber, i un di nan a puntra mi kon skohe e arkitektura korekto di software (pa app grandi i konplikó di nivel empresarial). Un pregunta mashá bon, digno di un artíkulo den e blog.

Arkitektura di software
Ora bo desèñá app, bo no mester pensa so riba e aparensia i e sintimentu, un bon desèño ta inkluí tambe kon tur kos ta traha huntu. Arkitektura di software ta referí na e struktura fundamental di un sistema di software, kada struktura ta konsistí di elemento, relashon entre nan, i propiedat di tantu e elementonan komo nan relashonnan.
E ta komparabel ku e arkitektura di un edifisio. Ora un arkitektura a wòrdu definí i implementá, e ta bira kostoso pa kambia dje despues. Pesei ta un bon idea pa skohe e arkitektura di software korekto promé ku bo kuminsá konstruí.

Pa app simpel e arkitektura di software por ta obvio, pero ora bo aplikashon ta krese na grandura i funshonalidat, e kantidat di struktura den un sistema por krese lihé. Esaki por pasa ku tempu, miéntras e nesesidatnan di bo kliente ta krese. Mas struktura, mas relashon entre nan, mas konplikó e ta bira.

Manehá desèño di software konplikó
Si bo ta spera ku bo software lo manehá hopi kos diferente, e chèns ta grandi ku bo lo tin ku trata ku konplikashon. For di un punto di bista di arkitektura tin diferente manera pa trata ku e konplikashon aki di software.
Arkitektura monolítiko
Mihor deskribí komo ‘un bloke grandi’ ta e arkitektura monolítiko. Aki, tur loke bo app ta hasi ta parti di mes base di kódigo.

Den un “arkitektura monolítiko” e software ta hopi bia den kapa, kaminda kada kapa ta konsistí di diferente tipo di komponente:
- kapa di presentashon: responsabel pa e interfas di usuario i/òf di programashon di aplikashon (UI / API).
- lógika di negoshi: aki ta kaminda e reglanan real di negoshi ta wòrdu definí. E ta e kurason di e aplikashon ku ta kuadra mashá serka ku e prosesonan real di negoshi.
- kapa di akseso na obhekto di data: ta duna un interfas komun entre e aplikashon ku ta kore i e almasenamentu persistente di backend.
- database i sistema di file: aki ta kaminda tur e data i rekursonan estátiko (file, imagen, etc) ta wòrdu warda.
Mas grandi e aplikashon ta bira, mas grandi kada kapa ta bira. Esaki ta hasi mas difísil pa eskalá un arkitektura monolítiko, na un sierto punto kosnan ta bira djis muchu grandi i konplikó.
Kada biaha ku bo hasi un kambio den e aplikashon, henter e base di kódigo ta wòrdu afektá. Pa aplikashon (mashá) grandi esaki ta hasi mas difísil pa mantené e software, pasobra e ta rekerí un komprenshon kompletu di henter e aplikashon.
Komo henter e aplikashon ta dependé di otro, problema den un parti di e aplikashon hopi bia ta afektá henter e sistema hopi. Komunikashon entre diferente parti di e sistema ta wòrdu hasi dentro di e sistema mes, na nivel di kódigo. Esaki ta nifiká ku e diferente partinan mester wòrdu programá den mes lenga di programashon (òf kompatibel). Esaki ta un barera pa adoptá teknologia nobo (den futuro) pasobra bo no por kambia e lenga di programashon di un parti di e sistema fásil.
Arkitektura di microservices
Na lugá di konstruí un aplikashon monolítiko grandi, bo por separá bo aplikashon den servisio mas chikí ku ta konektá. Kada microservice ta un aplikashon chikí di su mes, kompletu ku su mes arkitektura (pero mas chikí + mas simpel), lógika di negoshi i kapanan di data.
E diferente servisio ta komunik ku otro dor di usa API ku ta wòrdu definí independiente di e teknologia usá, hopi bia den un “struktura di API” komun manera REST, JSON, Redis i XML. Esaki ta laga e kombinashon di microservices funshoná komo “un sistema”.

Dor di deskompone e aplikashon di ‘bloke grandi’ den servisio mas chikí, ta bira mas fásil pa komprondé diferente parti di e sistema. Esaki ta hasi mas fásil pa mantené e sistema pasobra kada microservice por wòrdu desaroyá independiente di otro. Tambe e ta redusí e barera pa adoptá teknologia nobo pasobra bo ta liber pa skohe e teknologia ku ta mihor pa un servisio spesífiko. Un parti di e sistema por wòrdu programá den un lenga diferente di e otro partinan. Esaki ta hasi posibel pa diferente team (ku diferente eksperensia) traha huntu.
E arte i e habilidat pa hasi e arkitektura di microservices bon ta bin di e kapasidat pa defini un microservice di manera korekto. Muchu general òf muchu detaya por destruí e arkitektura. Bo por usa prosesonan di negoshi, separashon jerárkiko òf separashon pa dominio pa defini kada microservice.
E reto ku e arkitektura di microservices ta ku e ta agregá konplikashon na henter e sistema pasobra e ta rekerí un mekanismo di komunikashon distribuí. E diferente API ku ta konektá ku otro por ta difísil pa prueba i pa debug. Ta bira mas difísil pa implementá kambionan ku ta kubri varios servisio.
Defini, desèñá i implementá e diferente API entre servisio ta rekerí un akuerdo riba e data ku ta wòrdu kompartí, esaki por ta difísil pa logra ora bo tin intenshon pa kompartí struktura di data ekstenso i no universal.
Monitoreá i implementá un arkitektura di microservices por ta konplikó ora e kantidat di servisio ta krese. Djis tin mas pa manehá, i esei ta rekerí mas planifikashon i koordinashon pa kada un di e servisionan.
Skohe e arkitektura korekto
Mi tata finadu a bisa mi un bes ku bo por “gana mas ku e kosnan ku bo no ta hasi”. Konstruí aplikashon konplikó ta difísil pa naturalesa, e mihor kos ku bo por hasi ta purba hasi kosnan mas simpel dor di no hasi tur kos. Konsentrá riba e kosnan ku di berdat ta importante, i hasi nan bon.
Si bo aplikashon ta simpel i lihé, un arkitektura monolítiko ta e kaminda pa tuma. Desaroyo, implementashon, mantenimentu, tur kos ta mas fásil ora kosnan ta chikí.
Si bo no por skapa di konplikashon, anto bo mester konsiderá e arkitektura di microservices di sigur. Puntra bo mes e preguntanan aki:
- Bo por defini un “lenga komun” entre bo microservices?
- Tin prosesonan di negoshi ku ta kla i diferente?
- Kuantu e prosesonan di negoshi aki ta dependé di otro?
- Kon bo ta spera ku bo aplikashon lo evolushoná ku tempu, bo ta spera ku e lo krese òf bira mas chikí?
- Kuantu teknologia di programashon diferente bo ta planifiká pa usa? Bo ta spera ku esaki lo kambia den futuro?
- Ken lo konstruí i mantené e software, nan tin eksperensia ku manehá un arkitektura asina?
Konklushon
No tin un kontestashon “bala di plata” riba e pregunta kua arkitektura di software ta korekto. Tur dos enfoke tin nan ventaha i desventaha.
E mihor kos ku bo por hasi ta tuma un desishon konsiente (bon pensá) i keda ku dje ku tur forsa!
