{"id":23874,"date":"2023-02-15T11:00:07","date_gmt":"2023-02-15T09:00:07","guid":{"rendered":"https:\/\/www.hiberus.com\/crecemos-contigo\/?p=23874"},"modified":"2023-11-28T09:13:06","modified_gmt":"2023-11-28T08:13:06","slug":"que-son-los-microservicios-basados-en-eventos-rompiendo-el-modelo-sincrono","status":"publish","type":"post","link":"https:\/\/www.hiberus.com\/crecemos-contigo\/que-son-los-microservicios-basados-en-eventos-rompiendo-el-modelo-sincrono\/","title":{"rendered":"\u00bfQu\u00e9 son los microservicios basados en eventos? Rompiendo el modelo s\u00edncrono"},"content":{"rendered":"<p>Una <a href=\"https:\/\/www.hiberus.com\/crecemos-contigo\/de-una-arquitectura-tradicional-a-microservicios\/\" target=\"_blank\" rel=\"noopener\"><strong>arquitectura de microservicios<\/strong><\/a> est\u00e1 formada por numerosas unidades funcionales peque\u00f1as, cada una encargada de gestionar una parte del negocio. Es la tendencia hacia la que est\u00e1n evolucionando muchas empresas que quieren moverse hacia <a href=\"https:\/\/www.hiberus.com\/crecemos-contigo\/devops-da-el-salto-al-desarrollo-agil\/\" target=\"_blank\" rel=\"noopener\">DevOps<\/a> puesto que son muy numerosos los <a href=\"https:\/\/www.hiberus.com\/crecemos-contigo\/cuales-son-los-beneficios-de-una-arquitectura-microservicios\/\" target=\"_blank\" rel=\"noopener\">beneficios de una arquitectura de microservicios<\/a>.\u00a0 De forma habitual, estos microservicios necesitar\u00e1n comunicarse entre s\u00ed para llevar a cabo algunas de sus funciones. Pero, \u00bfc\u00f3mo pueden hacerlo? En este art\u00edculo veremos los tipos de comunicaci\u00f3n entre microservicios, las limitaciones del modelo de comunicaci\u00f3n s\u00edncrono y, en contraposici\u00f3n, explicaremos en qu\u00e9 consisten los <strong>microservicios basados en eventos y las ventajas que ofrecen.<\/strong><\/p>\n<h2>Tipos de comunicaci\u00f3n entre microservicios<\/h2>\n<p>La comunicaci\u00f3n entre dos microservicios puede ser:<\/p>\n<ul>\n<li><strong>S\u00edncrona<\/strong>: secuencial. Un servicio realiza una petici\u00f3n a otro y espera a su respuesta.<\/li>\n<li><strong>As\u00edncrona<\/strong>: no es secuencial. Un servicio no necesita esperar a que termine otro para continuar su ejecuci\u00f3n.<\/li>\n<\/ul>\n<h2>Modelo de comunicaci\u00f3n s\u00edncrona. Llamadas entre microservicios<\/h2>\n<p>La<strong> comunicaci\u00f3n s\u00edncrona entre dos microservicios<\/strong> es conceptualmente sencilla. Veamos un ejemplo:<\/p>\n<p>Tenemos un microservicio A, que recibe \u00f3rdenes de pedidos. Cuando le llega una orden, entre otras cosas, deber\u00e1 actualizar el stock del producto. Para ello debe llamar a otro microservicio B que se encarga de gestionar el inventario.<\/p>\n<p>En un modelo de comunicaci\u00f3n s\u00edncrona el microservicio A mandar\u00e1, por ejemplo, una petici\u00f3n HTTP hacia el microservicio B. El microservicio realizar\u00e1 las operaciones necesarias para actualizar el stock y devolver\u00e1 una respuesta. Finalmente, el microservicio A recibir\u00e1 esta respuesta y continuar\u00e1 su ejecuci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23883 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-2-ms.png\" alt=\"Diagrama secuencial mostrando la interacci\u00f3n entre dos microservicios al crear un pedido\" width=\"396\" height=\"271\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-2-ms.png 396w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-2-ms-300x205.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-2-ms-360x246.png 360w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/p>\n<p>Esta comunicaci\u00f3n parece muy natural. Tanto, que se podr\u00eda comparar con la que podr\u00edan tener dos personas que est\u00e1n hablando por tel\u00e9fono. En algunos casos este modelo se ajusta bien a las necesidades del sistema. No obstante, tiene sus limitaciones.<\/p>\n<h3>Inconvenientes del modelo s\u00edncrono de comunicaci\u00f3n<\/h3>\n<p>En primer lugar, <strong>la comunicaci\u00f3n es bloqueante<\/strong>. El microservicio A no puede continuar su ejecuci\u00f3n hasta que el microservicio B haya terminado de actualizar el inventario. \u00bfQu\u00e9 pasar\u00eda si el microservicio B estuviera temporalmente inaccesible, por ejemplo, por problemas de red? El servicio A permanecer\u00eda en espera hasta que el servicio B respondiera. En realidad, existen mecanismos, como timeouts, para evitar que un servicio est\u00e9 a la espera indefinidamente. No obstante, si situaciones como estas son comunes, <strong>ser\u00edan sintom\u00e1ticas de que tal vez el modelo de comunicaci\u00f3n s\u00edncrono no es el m\u00e1s apropiado para el caso de uso<\/strong>.<\/p>\n<p>Continuando con el ejemplo. Supongamos que el microservicio de inventariado finaliza su operaci\u00f3n y responde con un c\u00f3digo de estado exitoso. El procesamiento del pedido no acaba ah\u00ed. Implicar\u00e1 varios pasos m\u00e1s, por ejemplo, crear la orden de env\u00edo del producto, que podr\u00eda estar implementada en otro microservicio C distinto. Del mismo modo que se introduce este tercer microservicio, podr\u00edan estar implicados un cuarto, un quinto, etc. hasta llegar a n microservicios.<\/p>\n<p>No solo eso, sino que adem\u00e1s algunos microservicios no dependen de otros. Un microservicio que gestione el env\u00edo del producto seguramente no necesite la respuesta de otro microservicio que calcule el precio final del producto, y, aun as\u00ed, en una comunicaci\u00f3n s\u00edncrona, como se deben llamar de manera secuencial, uno de ellos deber\u00e1 esperar a que termine el otro.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23882 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-n-ms.png\" alt=\"Diagrama secuencial que muestra la interacci\u00f3n entre n microservicios a la hora de crear un pedido\" width=\"796\" height=\"461\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-n-ms.png 796w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-n-ms-300x174.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-n-ms-768x445.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/sequence-n-ms-360x208.png 360w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/p>\n<p>Por estos motivos surge la necesidad de un modelo de comunicaci\u00f3n diferente.<\/p>\n<h2>Microservicios basados en eventos o modelo de comunicaci\u00f3n as\u00edncrona<\/h2>\n<p>Imaginemos ahora otra alternativa, un sistema donde los microservicios no se tienen que \u201cllamar\u201d directamente entre s\u00ed. Esto es lo que nos proporcionar\u00edan <strong>los microservicios basados en eventos<\/strong>.<\/p>\n<p>En lugar de peticiones y respuestas, los microservicios trabajar\u00e1n con el concepto de eventos. <strong>Un evento es un mensaje o registro que representa un acontecimiento en el dominio de nuestra aplicaci\u00f3n<\/strong>.<\/p>\n<p>Al trabajar con eventos tendremos dos roles implicados, productores y suscriptores.<\/p>\n<ul>\n<li><strong>Productores<\/strong>: generan eventos en el sistema.<\/li>\n<li><strong>Suscriptores<\/strong>: consumen eventos y reaccionan a ellos.<\/li>\n<\/ul>\n<p>Un microservicio puede ser productor de eventos, suscriptor o ambos roles simult\u00e1neamente.<\/p>\n<p>Tomando el ejemplo anterior, podemos identificar un evento muy claro: \u00abSe ha creado un pedido con referencia X\u00bb. En una comunicaci\u00f3n por eventos, el microservicio de pedidos no invocar\u00e1 directamente a los otros microservicios, sino que publicar\u00e1 este evento en el sistema.<\/p>\n<p>Tanto el microservicio de inventario como el de log\u00edstica estar\u00e1n a la escucha de eventos de creaci\u00f3n de pedidos. Como suscriptores, cuando se publique un evento de este tipo, ser\u00e1n notificados y realizar\u00e1n sus operaciones.<\/p>\n<p>De esta manera <strong>se consigue un desacoplamiento entre los microservicios<\/strong>. El microservicio de pedidos ya no tiene que llamar a los microservicios de log\u00edstica o inventario. Simplemente publicar\u00e1 un evento. Por su parte, los microservicios suscriptores <strong>dejan de verse limitados por la ejecuci\u00f3n secuencial<\/strong> vista en el caso de las peticiones s\u00edncronas.<\/p>\n<p>La comunicaci\u00f3n basada en eventos supone un cambio de paradigma. Hemos pasado de microservicios que <strong>se dan \u00f3rdenes entre s\u00ed<\/strong> (\u00abActualiza el inventario del producto X\u00bb) a microservicios que <strong>informan de cambios en el dominio<\/strong> mediante eventos, <strong>y reaccionan a ellos<\/strong>.<\/p>\n<p>Pero, \u00bfd\u00f3nde se gestionan estos eventos? Para ello se utiliza una pieza intermedia, el bus de eventos. Normalmente se usa una tecnolog\u00eda destinada a tal fin, como <a href=\"https:\/\/kafka.apache.org\/\" target=\"_blank\" rel=\"noopener\">Apache Kafka<\/a> o <a href=\"https:\/\/www.rabbitmq.com\/\" target=\"_blank\" rel=\"noopener\">RabbitMQ<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23884 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/event-bus.png\" alt=\"Diagrama que muestra la comunicaci\u00f3n entre tres microservicios mediante un bus de eventos\" width=\"516\" height=\"369\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/event-bus.png 516w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/event-bus-300x215.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/02\/event-bus-360x257.png 360w\" sizes=\"auto, (max-width: 516px) 100vw, 516px\" \/><\/p>\n<h3>Ventajas de los microservicios basados en eventos<\/h3>\n<p>Una arquitectura de microservicios basada en eventos nos ofrece numerosas ventajas:<\/p>\n<ul>\n<li><strong>Desacoplamiento<\/strong> entre los microservicios. La implementaci\u00f3n de los microservicios no requiere conocer qui\u00e9n va a consumir los eventos.<\/li>\n<li>Aumenta la <strong>agilidad de desarrollo<\/strong>. El menor acoplamiento permite que se puedan implementar distintos microservicios en paralelo y por equipos independientes.<\/li>\n<li><strong>Escalabilidad<\/strong>. Permite responder a <strong>aumentos de tr\u00e1fico<\/strong> en el sistema. Si un microservicio experimenta gran carga, se pueden a\u00f1adir m\u00e1s instancias de este. Por su parte, las tecnolog\u00edas del bus de eventos como Kafka tambi\u00e9n est\u00e1n pensadas para ser escalables.<\/li>\n<li><strong>Extensibilidad<\/strong>. El modelo productor\/suscriptor permite a\u00f1adir suscriptores a un bus de eventos, sin necesidad de modificar el productor o el resto de consumidores.<\/li>\n<li>Gracias a la comunicaci\u00f3n as\u00edncrona, se consigue <strong>mayor resistencia ante fallos<\/strong>. La ca\u00edda de un servicio no producir\u00eda un fallo en cascada.<\/li>\n<\/ul>\n<p>Esto no quiere decir que no haya lugar para la comunicaci\u00f3n s\u00edncrona. En ocasiones es necesario disponer de la respuesta de un servicio para continuar con la ejecuci\u00f3n de la operaci\u00f3n (operaciones transaccionales). No es imposible tener operaciones transaccionales en una arquitectura basada en eventos, pero su implementaci\u00f3n puede ser m\u00e1s tediosa. Con una comunicaci\u00f3n s\u00edncrona, la transaccionalidad surge de forma m\u00e1s natural.<\/p>\n<p>En conclusi\u00f3n, ser\u00eda preferible <strong>utilizar un sistema basado en eventos<\/strong> y representar los cambios en el dominio como tales siempre que sea viable. La comunicaci\u00f3n basada en eventos potencia y expande los microservicios, desacopl\u00e1ndolos, facilitando su desarrollo y mantenimiento.<\/p>\n<p>En Hiberus podemos ayudarte a mover tu empresa hacia a una arquitectura de microservicios con un sistema basado en eventos puesto que contamos con un equipo de expertos en <a href=\"https:\/\/www.hiberus.com\/modern-applications\/microservicios\" target=\"_blank\" rel=\"noopener\">microservicios<\/a> con la capacidad de analizar y aconsejarte acerca de las mejores opciones para ti y para tu empresa.<\/p>\n        <div class=\"row\">\n            <div class=\"block-cta-form\" style=\"background-color: #003664;\">\n                <div class=\"content-cta-form\">\n                    <div class=\"text-cta-form\">\n                        <p class=\"title-cta-form\">\u00bfQuieres m\u00e1s informaci\u00f3n sobre nuestra \u00e1rea de Microservicios?<\/p>\n                        <p>Contacta con nuestro equipo de Microservicios<\/p>\n                    <\/div>\n                    <div class=\"form-fields\">\n                        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f33973-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"33973\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/23874#wpcf7-f33973-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Formulario de contacto\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"33973\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f33973-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div id=\"responsive-form\" class=\"clearfix\">\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"nombre\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Nombre *\" value=\"\" type=\"text\" name=\"nombre\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"apellido\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Apellido *\" value=\"\" type=\"text\" name=\"apellido\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"correo\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Correo corporativo *\" value=\"\" type=\"email\" name=\"correo\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"telf-contacto\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Tel\u00e9fono *\" value=\"\" type=\"tel\" name=\"telf-contacto\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"compania\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Compa\u00f1ia *\" value=\"\" type=\"text\" name=\"compania\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"mensaje\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Mensaje *\" name=\"mensaje\"><\/textarea><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"politica\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"politica\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">He le\u00eddo y acepto la <a href=\"https:\/\/www.hiberus.com\/politica\" target=\"_blank\"><u>Pol\u00edtica de privacidad<\/u><\/a><\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"marketing\"><span class=\"wpcf7-form-control wpcf7-acceptance optional\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"marketing\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">Me gustar\u00eda recibir comunicaciones de marketing de Hiberus y sobre sus productos, servicios y eventos.<\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Contacta con nosotros\" \/>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div id=\"campos_ocultos\" class=\"hidden\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new1\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new1\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new1\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new2\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new2\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new3\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new3\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new3\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new4\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new4\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new4\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new_p\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new_p\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new_p\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<!--end responsive-form--><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n","protected":false},"excerpt":{"rendered":"<p>Una arquitectura de microservicios est\u00e1 formada por numerosas unidades funcionales peque\u00f1as, cada una encargada de gestionar una parte del negocio. Es la&#8230;<\/p>\n","protected":false},"author":283,"featured_media":23921,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_ayudawp_aiss_exclude":false,"footnotes":""},"categories":[7,237],"tags":[56],"class_list":{"0":"post-23874","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-next-tech","8":"category-microservicios","9":"tag-microservicios"},"acf":[],"_links":{"self":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/23874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/users\/283"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/comments?post=23874"}],"version-history":[{"count":10,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/23874\/revisions"}],"predecessor-version":[{"id":36259,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/23874\/revisions\/36259"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media\/23921"}],"wp:attachment":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media?parent=23874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/categories?post=23874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/tags?post=23874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}