![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Huk atikuq, ancha tarikuq, escalable rakisqa sistema ruwayqa, sapanchasqa técnicas, principios, chaymanta patrones nisqakunaman hapipakuyta munan. Chayna sistemakunapa ruwakuyninqa achka sasachakuykunatam allichana. Aswan mastarisqa hinaspa sapaqchasqa asuntokuna ukhupiqa iskay qillqay sasachakuymi .
“Iskay qillqana sasachakuy” huk sasachakuymi, rakisqa sistemakunapi rikuriq, aswantaqa achka willakuypa pukyuta utaq willakuypa qullqisapankunawan ruwasqa kaptin, chaykunam hukllawasqa kananku. Willayta tikrakuykuna imaymana willay waqaychasqakunaman sapa kuti qillqasqa kasqanmanta sasachakuymanta riman, ahinataq willaypa tiyapuynin utaq waqaychasqakuna, mana willaypa mana tupaqnin, ch'aqwaykuna utaq ruway cuellos de botellakuna hina sasachakuykunata riqsichispa.
Microserviciokuna arquitectura chaymanta patrón willaypa tiyapuynin sapa yanapakuymanta achka yanapakuykunata apamun, sapanchasqa mast'ariy chaymanta escalay, sapanchasqa pantay, chaymanta wiñariy utqaylla kallpachay atiy. Ichaqa, llamkanakuna achka microserviciokunapura tikraykunata munanku, kay sasachakuy allichaypaq huk atikuq allichaypi yuyayta tanqasunki.
Huk escenariota qhawarisun maypichus dominioyku manukuy mañakuykunata chaskiy, chaninchay, chaymanta willay alertas rantiqkunaman apachiy.
Huklla responsabilidad kamachiypa espiritunpi, Conwaypa kamachiyninpi, chaymanta dominio-driven diseño enfoque kaqpi, achka evento-storming sesiones kaqmanta, tukuy dominio kimsa subdominios kaqpi rakisqa karqa, contextos limitados definidos kaqwan sut'i linderosniyuq, modelos de dominio kaqwan, tukuyniqpi simiyuq ima.
Ñawpaq kaqmi llank’akun onboarding nisqapi, mosoq manukuy mañakuykunata huñunanpaqpas. Iskay kaq sistemaqa kay aplicacionkunatam chaninchan, chaymantapas chay datos qusqaman hinam tantean. Kay chaninchay ruwayqa, KYC/KYB, antifraude, chanta riesgo crediticio qhaway ima, pachata hap’inman, waranqa waranqa mañakuykunata huk kutillapi ruwayta atiyta necesitan. Chayhina, kay ruwana huk dedicado microservicio kaqman qusqa kachkan kikin willaypa tiyapuyninwan, sapanchasqa escalacionta saqispa.
Chaymanta, kay subsistemakuna iskay chikan equipokuna kamachisqa kanku, sapa huk kikin kachariy ciclokunayuq, servicio nivel acuerdokuna (SLA), chaymanta escalabilidad mañakuyniyuq.
Lastly , huk especializado willay servicio ruwasqa kachkan alertas rantiqkunaman apachinapaq.
Kaypi huk ch'uyanchasqa willakuy kachkan llamkanamanta ñawpaq llamk'ana casomanta:
Chayqa huk allin sasan chaymanta primitivo sistema ñawpaq qhawaypi, ichaqa buceasun imaynatachus Préstamo mañakuy servicio ruwan chaymanta manukuy mañakuy kamachiyta.
Iskay ruwaykunata qhawayta atiykuman servicio interaccionkunapaq:
Ñawpaq-Local-Commit-Chay-Publish: Kay ruwaypi, yanapakuy llaqta willaypa qullqisapan (commits) musuqyachin chaymanta huk ruwayta utaq willayta wak yanapakuykunaman lluqsichin.
Ñawpaq-Qillqa-Chaymanta-Llaqta-Qillqa: Hukninpi, kay ñanqa huk ruwayta utaq willayta lluqsichiyta ruwan manaraq tikraykunata llaqta willay tantanaman quchkaspa.
Iskaynin métodokuna mana allinninpaq kanku chaymanta wakinlla mana pantayniyuq kanku rakisqa sistemakunapi willanakuypaq.
Kayqa ñawpaq kaq ruwayta churanapaq secuencia diagrama nisqa.
Kay escenario kaqpi, Servicio de Aplicación de Préstamos llamk'achin Ñawpaq-Local-Commit-Chay-Publish ruwayta, maypi ñawpaqta huk ruwayta ruwan chaymanta huk willayta wak sistemaman apachiyta munan. Ichaqa, kay ruwayqa pantayman atina kanman sichus, huk rikch'anapaq, llika sasachakuykuna kan, Chaninchay Servicio mana kanchu, utaq Manukuy Mañakuy Servicio huk pantaywan tupan Fuera de Memoria (OOM) kaqwan chaymanta urmaykun. Chayna kaptinqa, willakuyqa chinkapunmanmi, chaymi Evaluación nisqa mana willasqalla qipanman musuq manukuy mañakuymanta, mana huk ruwaykunata ruwaptinkuqa.
Hinaspa iskay kaq.
Ñawpaq-Publish-Chay-Local-Commit nisqa escenario nisqapi, Servicio de Solicitud de Préstamos nisqa aswan hatun riesgokunawan tupan. Huk musuq ruwanamanta Chaninchay Servicioman willanman ichaqa mana kay musuqyachiyta kitipi waqaychayta atinmanchu sasachakuykunarayku imaynachus willaypa tiyapuynin sasachakuykuna, yuyarina pantaykuna utaq codigo pantaykuna. Kay ruwayqa hatun mana tupachiykunata willaykunapi apayta atin, chaytaq hatun sasachakuykunata apamunman, imaynatachus Servicio de Revisión de Préstamos nisqa yaykuq mañakuykunata ruwan chaymanta.
Chayrayku, huk allichayta riqsichinanchik tiyan, mayqinchus huk sinchi mecanismota qun, hawa rantiqkunaman ruwaykunata lluqsichinapaq. Ichaqa, manaraq atikuq allichaykunaman ukhunchachkaspa, ñawpaqta ch'uyanchanayku tiyan ima laya willay quy garantiakuna rakisqa sistemakunapi aypay atiy.
Tawa laya garantiakuna kanmi chayayta atisunman.
Mana garantiayuq
Manan garantia kanchu chay willakuy maymanchus chayananku chayman chayananpaq. Ñawpaq-Local-Commit-Chay-Publish nisqa enfoqueqa kaymantapunim kachkan. Mikhuqkuna huk kuti, achka kutita utaq mana hayk'aqpas willakuykunata chaskinkuman.
Aswanpas huk kutilla apachiy
Aswan huk kuti apachiyqa niyta munan willakuy chayachisqa kanqa maymanchus chayanapaq aswan 1 kuti. Ñawpaq-Llaqta-Commit-Chay-Qillqay ruwayqa kayhinata ruwayta atikunman chaymanta huk chaninwan kallpachakuy kamachiywan.
Huk kutillapas apachiy\Mikhuqkuna sapa willayta chaskinqaku chaymanta ruwanqaku ichaqa aswan kuti kikin willayta chaskinkuman.
Huk kutilla quy\Exactamente huk kuti quy niyta munan chaymanta rantiq willayta allinta huk kuti chaskinqa.
Técnicamente, atikunmi chayayta Kafka ruwaykunawan chaymanta específica idempotent implementación productor chaymanta consumidor kaqwan.
Yaqa llapanpi, ‘huk kutillapas’ quy garantiakuna achka sasachakuykunata allichanku willakuykunata huk kutillapas chayachisqankuta qhawaspa, ichaqa rantiqkuna idempotent kananku tiyan. Ichaqa, mana hark'ay atina llika pantaykunata qusqa, llapa rantiqpa lógican idempotent kanan tiyan mana iskay kuti willakuykunata ruwanapaq, ruruchiqpa garantiakuna mana qhawaspa. Chayrayku, kay mañakuyqa mana anchatachu mana allinchu, aswanpas chiqap kaqta rikuchin.
Kay sasachakuypaqqa achkam allichakuykuna kan, chaykunam allinninpaq hinaspa mana allinninpaq kan.
Wikipidiya nisqanman hinaqa, Iskay Fase Commit (2PC) nisqaqa rakisqa ruwana protocolo nisqa, computadora yachaypi, willay tantana kamachiy sistemakunapi llamk'achisqa, rakisqa ruwaykunap huklla kayninta, atikuq kayninta qhawanapaq. Kayqa ruwasqa situacionkunapaq maypi achka yanapakuykuna (kayhina, willaypa tiyapuynin) huk ruwaypi participananku tiyan, chaymanta qhawan icha llapanku ruwayta ruwanku utaq llapanku chayta abortanku, chaywan willaypa huklla kayninta waqaychan. Necesitasqanchikman hinam uyarikun, ichaqa Iskay Fase Commit achka mana allinkunayuqmi:
Microserviciokuna arquitecturapaq aswan rikukuq allichayqa huk patrón (utaq wakin kuti anti-patrón kaqpas) — huk rakisqa willaypa tiyapuynin — churaymi. Kay ruwayqa ancha intuitivo kan sichus transaccional consistenciata necesitanki achka tablakunapura hukniray willaypa tiyapuyninkunapi, huk rakisqa willaypa tiyapuyninlla kay microserviciokunapaq llamk'achiy.
Kay ruwaypa mana allinninkuna huk sapalla pantayniyuq punto riqsichiy, sapanchasqa willaypa tiyapuynin escalayta hark'ay, chaymanta hukniray willaypa tiyapuynin solucionkuna aswan allin tupaq sapanchasqa mañakuykunapaq chaymanta llamkana casokuna llamk'achiyta limitay. Chaymanta, microserviciokuna codigo bases kaqpi tikraykunaqa necesario kanman chayhina forma rakisqa ruway yanapakuypaq.
' Ruwaypa lluqsiynin ' huk ruway ruwaymi rakisqa llamkanakunapi llamk'achisqa, atiyniyuq willay mast'ariyta qhawanapaq, mana atikuq willay llamkanakunap ñawpaqinpipas. Chayqa huk sutichasqa 'OutboxEvents' tablapi ruwaykunata waqaychayta ruwan kikin ruway ukhupi kikin ruwaywan. Kay ruwayqa allintam tupachin propiedades ACID nisqawan bases de datos relacionales nisqawan. Hukninpi, achka No-SQL willaypa tiyapuyninkuna mana tukuyninpi ACID kaqninkunata yanapankuchu, aswanpas CAP teorema kaqmanta chaymanta BASE filosofía kaqmanta kamachiykunata akllanku, mayqinkunachus tarikuy chaymanta qhipaman kaqlla kayninta ñawpaqman churanku sinchi chiqan kayninmanta.
Huk transaccional salida caja huk kutillapas garantiata qun chaymanta achka enfoques kaqwan ruwayta atikun:
Transacción registro tailing nisqa
Encuesta nisqamanta willakuq
Transacción registro tailing enfoqueqa CDC (Change Data Capture) hina willaypa tiyapuyninpaq específico solucionkuna llamk'achiyta munan. Chay ruwaypa hatun mana allinninkunaqa kaymi:
Base de datos nisqapi específicos solucionkuna
Latencia yapasqa CDC implementacionkunamanta específicos kaqrayku
Huk ruwayqa Polling Publisher , chaymi outbox descargata yanapan, outbox tablata encuesta ruwaspa. Kay ruwaypa ñawpaq mana allinninqa, willakuypa qullqisapan yapasqa atiymi, chaymi aswan hatun qullqita apayta atin. Chaymanta, mana llapa No-SQL willay tantanakunachu allin tapuyta yanapanku sapanchasqa qillqa t'aqakunapaq. Llapan qillqakunata hurquyqa, chayraykum, ruway pisiyachiyta atinman.
Kaypi huk huch’uy secuencia diagrama imayna llamk’asqanmanta sut’inchaspa.
Ñawpaq sasachakuy Transactional Outbox patrón kaqwan kachkan chaymanta willakuypa qullqisapan ACID kaqninkunamanta hapipakuyninpi. Chiqan kanman típico OLTP willaypa tiyapuyninkunapi ichaqa NoSQL suyupi sasachakuykunata churan. Kayta allichanapaq, huk atikuq allichayqa yapay registro (kayhina, Kafka) mañakuy ruwayta qallariymantapacha aprovechay.
‘Manukuy mañakuyta apachiy’ kamachiyta chiqamanta ruwanamantaqa, chaylla huk ukhu Kafka temaman apachiyku chaymanta huk ‘chaskisqa’ ruwayta clienteman kutichiyku. Ichaqa, ancha chaninniyuq kamachiy ruwasqaraq kasqanrayku, mana chaylla rantiqman willayta atiykuchu chaymanta ruwasqamanta. Kay qhipa kaqlla ruwayta kamachinapaq, técnicas llamk'achiyta atiykuman kayhina unay tapuy, cliente qallarisqa tapuy, sumaq UI musuqyachiy utaq WebSockets utaq Server-Sent Events willakuykunapaq llamk'achiy. Ichaqa kayqa llapanpiqa sapaq temam, chaymi qallariypi yachachisqanchikman kutisun.
Willakuyta apachirqayku huk ukhu Kafka temamanta. Chaymanta Manukuy Mañakuy Servicio kay willayta mikhun — kikin kamachiyta rantiqmanta chaskisqan — chaymanta ruwayta qallarikun. Ñawpaqtaqa, wakin negocio lógica nisqakunatan ruwan; kay lógica allinta ruwasqa kaptin, chaymanta ruwasqakuna mana saqisqa kaptinlla, musuq willakuykunata Kafka llaqtapaq temamanta lluqsichin.
Huk chikan pseudo-código nisqamanta qhawarisunchis.
public async Task HandleAsync(SubmitLoanApplicationCommand command, ...) { //First, process business logic var loanApplication = await _loanApplicationService.HandleCommandAsync(command, ...); //Then, send new events to public Kafka topic producer.Send(new LoanApplicationSubmittedEvent(loanApplication.Id)); //Then, commit offset consumer.Commit(); }
¿Imataq kanman negociopa lógicanpa procesamienton mana allin kaptinqa? Mana llakikuychu, offset manaraq ruwasqa kasqanrayku, willakuyqa wakmanta pruebasqa kanqa.
¿Imataq kanman Kafkaman musuq ruwaykunata apachiy mana allin kaptinqa? Mana llakikuychu, negocio lógica idempotent kasqanrayku, mana iskay kuti manukuy mañakuyta ruwanqachu. Aswanpas, Kafka llaqtapaq temaman willakuykunata musuqmanta apachiyta munanqa.
¿Imataq kanman sichus willakuykunata Kafkaman apachinku, ichaqa offset commit mana allintachu ruwan? Mana llakikuychu, negocio lógica idempotent kasqanrayku, mana iskay kuti manukuy mañakuyta ruwanqachu. Aswanpas, willakuykunata Kafka llaqtapaq temaman wakmanta apachinqa, chaymanta suyakunqa kay kutipi offset commit allinta ruwananta.
Kay ruwaypa hatun mana allinninkuna huk musuq programacion estilowan tinkisqa yapasqa complejidad kaqwan, qhipaman consistencia kaqwan (imaraykuchus cliente mana chayllachu yachanqa ruwayta), chaymanta llapa negocio lógica idempotent kananpaq mañakuy.
¿Imataq evento sourcing, hinaspa imaynatataq kaypi churakunman? Sucedimientokuna tariyqa huk software arquitectura ruwaymi llamk'achisqa huk sistemap estadonta modelopaq llamk'achisqa, llapa tikraykunata willayninpi hap'ispa huk serie mana tikray atikuq ruwaykuna hina. Kay sucesokuna chiqa kaqkunata utaq estado tikraykunata riqsichinku chaymanta sapalla chiqap pukyuta hina sistemapa kunan kayninpaq llamk'anku. Chaymi, técnicamente, huk sistema evento-sourcing kaqwan ruwaspa, llapa eventokuna EventStore kaqpi kapuwanchikña, chaymanta kay EventStore rantiqkuna huk sapalla chiqap pukyuta hina ima ruwasqamanta llamk'achiy atikunku. Mana necesidad kanchu huk específico willaypa tiyapuynin solucionta qatiypaq llapa tikraykunata utaq llakikuykunata kamachiymanta, sapalla sasachakuyqa ñawiriy ladopi tiyasqa kachkan chaymanta chiqa estado entidad kaqmanta tariyta atinapaq llapa ruwaykunata wakmanta pukllanapaq mañasqa.
Kay qillqasqapi, achka ruwanakunata qhawarqayku rakisqa sistemakunapi atikuq willakuykunata ruwanapaq. Kay ruwaykunawan sistemakuna ruwachkaspaqa achka yuyaychaykunam qawarisunman
Qatiq kutipi, aswan ruwaypaq ejemplota qhawarisunchis huk Salida Transaccional nisqa ruwanapaq. Qaway
qam!