{"id":30785,"date":"2019-10-31T21:37:25","date_gmt":"2019-10-31T18:37:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\/"},"modified":"2019-10-31T21:37:25","modified_gmt":"2019-10-31T18:37:25","slug":"stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","title":{"rendered":"Elementos b\u00e1sicos de aplicaciones distribuidas. Aproximaci\u00f3n cero","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Elementos b\u00e1sicos de aplicaciones distribuidas. Aproximaci\u00f3n cero\" src=\"\/wp-content\/uploads\/2019\/04\/88d4e363538bdfc67690c8339dca790b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El mundo no se detiene. El progreso crea nuevos desaf\u00edos tecnol\u00f3gicos. De acuerdo con los requisitos cambiantes, la arquitectura de los sistemas de informaci\u00f3n tambi\u00e9n debe evolucionar. Hoy hablaremos sobre la arquitectura orientada a eventos, la concurrencia, la paralelizaci\u00f3n, la asincron\u00eda y c\u00f3mo se puede convivir pac\u00edficamente con todo esto en Erlang.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"vvedenie\">Introducci\u00f3n<\/h2>\n<p><\/p>\n<p>Dependiendo del tama\u00f1o del sistema que se est\u00e1 dise\u00f1ando y sus requisitos, nosotros, los desarrolladores, elegimos el m\u00e9todo de intercambio de informaci\u00f3n en el sistema. En la mayor\u00eda de los casos, para organizar la interacci\u00f3n de los servicios, una opci\u00f3n adecuada puede ser un esquema con un corredor, por ejemplo, basado en RabbitMQ o Kafka. Pero a veces el flujo de eventos, los SLA y el nivel de control sobre el sistema son tales que una soluci\u00f3n de mensajer\u00eda lista no es adecuada. Por supuesto, se puede complicar un poco el sistema, asumiendo la responsabilidad por el nivel de transporte y la formaci\u00f3n de cl\u00fasteres, utilizando, por ejemplo, ZeroMQ o nanomsg. Pero si el sistema tiene suficiente capacidad de procesamiento y las capacidades del cl\u00faster est\u00e1ndar de Erlang son adecuadas, la cuesti\u00f3n de incorporar una entidad adicional requiere un estudio detallado y una justificaci\u00f3n econ\u00f3mica.<\/p>\n<p><\/p>\n<p>El tema de las aplicaciones distribuidas reactivas es bastante amplio. Para ajustarnos al formato del art\u00edculo, el objeto de discusi\u00f3n de hoy ser\u00e1n solo entornos homog\u00e9neos basados en Erlang\/Elixir. El ecosistema Erlang\/OTP permite implementar una arquitectura reactiva con el menor esfuerzo posible. Sin embargo, en cualquier caso, necesitaremos una capa de intercambio de mensajes. <\/p>\n<p><\/p>\n<h2 id=\"teoreticheskiy-bazis\">Base te\u00f3rica<\/h2>\n<p><\/p>\n<p>El dise\u00f1o comienza con la definici\u00f3n de objetivos y restricciones. El objetivo principal no radica en desarrollar por desarrollar. Necesitamos obtener una herramienta segura y escalable, sobre la cual se puedan crear, y lo m\u00e1s importante, desarrollar aplicaciones modernas de diferentes niveles: desde aplicaciones en un solo servidor que atienden a una peque\u00f1a audiencia, que luego pueden evolucionar hacia cl\u00fasteres de 50-60 nodos, hasta federaciones de cl\u00fasteres. As\u00ed, el objetivo principal es maximizar las ganancias reduciendo el costo de desarrollo y posesi\u00f3n del sistema final.<\/p>\n<p><\/p>\n<p>Identifiquemos 4 requisitos principales para el sistema final:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Con<\/strong>orientaci\u00f3n a eventos.<br \/>\nEl sistema siempre est\u00e1 listo para dejar pasar un flujo de eventos y realizar las acciones necesarias;<\/li>\n<li><strong>M<\/strong>escalabilidad.<br \/>\nLos bloques individuales pueden escalar tanto vertical como horizontalmente. Todo el sistema debe tener la capacidad de crecer horizontalmente de manera infinita;<\/li>\n<li><strong>A<\/strong>lta disponibilidad.<br \/>\nTodos los niveles y todos los servicios deben tener la capacidad de recuperaci\u00f3n autom\u00e1tica ante fallos;<\/li>\n<li><strong>G<\/strong>arant\u00eda de tiempo de respuesta.<br \/>\nEl tiempo es valioso y los usuarios no deben esperar demasiado tiempo.<\/li>\n<\/ul>\n<p><\/p>\n<p>Recuerda el antiguo cuento de \u201cEl peque\u00f1o motor que pudo\u201d, tambi\u00e9n conocido como \u201cEl trenecito que pudo\u201d? Para que el sistema dise\u00f1ado salga exitosamente de la fase de prototipo y sea progresivo, su fundamento debe satisfacer requisitos m\u00ednimos. <strong>PUDO<\/strong>.<\/p>\n<p><\/p>\n<p>Al mensajer\u00eda como una herramienta de infraestructura y base para todos los servicios se a\u00f1ade otro punto: la facilidad de uso para los programadores.<\/p>\n<p><\/p>\n<h3 id=\"orientirovannost-na-sobytiya\">Orientaci\u00f3n a eventos<\/h3>\n<p><\/p>\n<p>Para que una aplicaci\u00f3n pueda crecer de uno <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/server\/dts-los-angeles\/\"   title=\"servidores\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3480\">servidores<\/a> a un cl\u00faster, su arquitectura debe asegurar un bajo acoplamiento. Este requisito es satisfactorio para el modelo as\u00edncrono. En \u00e9l, el remitente y el destinatario se ocupan de la carga informativa del mensaje y no se preocupan por la transmisi\u00f3n y enrutamiento dentro del sistema.<\/p>\n<p><\/p>\n<h3 id=\"masshtabiruemost\">Escalabilidad<\/h3>\n<p><\/p>\n<p>La escalabilidad y la eficiencia del sistema van de la mano. Los componentes de la aplicaci\u00f3n deben ser capaces de utilizar todos los recursos disponibles. Cuanto m\u00e1s eficientemente podamos utilizar la capacidad y cuantas m\u00e1s \u00f3ptimas sean nuestras t\u00e9cnicas de procesamiento, menos dinero gastaremos en hardware. <\/p>\n<p><\/p>\n<p>Dentro de una sola m\u00e1quina, Erlang crea un entorno de alta concurrencia. El equilibrio entre concurrencia y paralelismo se puede establecer eligiendo la cantidad de hilos del sistema operativo disponibles para la VM de Erlang y el n\u00famero de planificadores que utilizan esos hilos.<br \/>\nLos procesos de Erlang no tienen estado compartido y funcionan en modo no bloqueante. Esto garantiza una latencia relativamente baja y un mayor rendimiento en comparaci\u00f3n con las aplicaciones tradicionales construidas sobre sincronizaci\u00f3n bloqueante. El planificador de Erlang se encarga de la distribuci\u00f3n justa de CPU e IO, y la ausencia de bloqueos permite que la aplicaci\u00f3n responda incluso en modo de carga m\u00e1xima o fallos. <\/p>\n<p><\/p>\n<p>A nivel de cl\u00faster, tambi\u00e9n existe un problema con la utilizaci\u00f3n. Es importante que todas las m\u00e1quinas del cl\u00faster est\u00e9n equilibradamente cargadas y que la red no est\u00e9 sobrecargada. Imaginemos la situaci\u00f3n: el tr\u00e1fico de usuarios llega a los balanceadores de carga entrantes (haproxy, nginx, etc.), los cuales distribuyen las solicitudes para su procesamiento de la manera m\u00e1s equitativa posible entre un grupo de backend disponibles. Dentro de la infraestructura de la aplicaci\u00f3n, el servicio que implementa la interfaz requerida es solo la \u00faltima milla, y necesitar\u00e1 solicitar varios otros servicios para responder a la solicitud inicial. Las solicitudes internas tambi\u00e9n requieren enrutamiento y balanceo.<br \/>\nPara gestionar eficazmente los flujos de datos, el mensajer\u00eda debe proporcionar a los desarrolladores una interfaz para gestionar el enrutamiento y la distribuci\u00f3n de la carga. Gracias a esto, los desarrolladores podr\u00e1n resolver tanto tareas est\u00e1ndar como situaciones raras utilizando patrones de microservicios (agregador, proxy, cadena, ramificaci\u00f3n, etc.). <\/p>\n<p><\/p>\n<p>Desde el punto de vista empresarial, la escalabilidad es una de las herramientas de gesti\u00f3n de riesgos. Lo m\u00e1s importante es satisfacer las solicitudes de los clientes, utilizando el hardware de manera \u00f3ptima:<\/p>\n<p><\/p>\n<ul>\n<li>Al aumentar la potencia del hardware como resultado del progreso. No quedar\u00e1 ocioso debido a defectos del software. Erlang se escala verticalmente de manera excelente y siempre podr\u00e1 aprovechar todos los n\u00facleos de CPU y la memoria disponible;<\/li>\n<li>En entornos de nube, podemos gestionar la cantidad de hardware seg\u00fan la carga actual o prevista y garantizar el SLA.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"otkazoustoychivost\">Tolerancia a fallos<\/h3>\n<p><\/p>\n<p>Consideremos dos axiomas: \"Las fallas son inaceptables\" y \"Las fallas siempre ocurrir\u00e1n\". Para los negocios, un fallo de software significa p\u00e9rdida de dinero y, a\u00fan peor, p\u00e9rdida de reputaci\u00f3n. Al equilibrar las posibles p\u00e9rdidas y el costo de desarrollar software tolerante a fallos, a menudo se puede encontrar un compromiso.<\/p>\n<p><\/p>\n<p>A corto plazo, una arquitectura que incluye la tolerancia a fallos ahorra dinero en la compra de soluciones de clustering listas. Son costosas, y tambi\u00e9n tienen errores.<br \/>\nA largo plazo, una arquitectura tolerante a fallos recupera con creces los costos de su implementaci\u00f3n en todas las etapas del desarrollo.<br \/>\nLa mensajer\u00eda dentro de la base de c\u00f3digo a\u00fan se encuentra en desarrollo, lo que permite trabajar en detalle la interacci\u00f3n de los componentes dentro del sistema. Esto facilita la tarea de respuesta y gesti\u00f3n de fallos, ya que todos los componentes responsables manejan fallos y el sistema final sabe c\u00f3mo recuperarse autom\u00e1ticamente tras una falla por dise\u00f1o.<\/p>\n<p><\/p>\n<h3 id=\"otzyvchivost\">Reactividad<\/h3>\n<p><\/p>\n<p>Independientemente de las fallas, la aplicaci\u00f3n debe responder a las solicitudes y cumplir con el SLA. La realidad es que la gente no quiere esperar, por lo tanto, el negocio debe adaptarse. Se espera una alta reactividad de un n\u00famero cada vez mayor de aplicaciones.<br \/>\nLas aplicaciones reactivas funcionan en un modo cercano al tiempo real. La Erlang VM opera en un modo de tiempo real suave. Para ciertos campos, como el comercio burs\u00e1til, la medicina y la gesti\u00f3n de equipos industriales, es crucial un modo de tiempo real estricto.<br \/>\nLos sistemas reactivos mejoran la experiencia del usuario y son \u00fatiles para los negocios.<\/p>\n<p><\/p>\n<h2 id=\"predvaritelnyy-itog\">Conclusiones preliminares<\/h2>\n<p><\/p>\n<p>Al planear este art\u00edculo, quer\u00eda compartir mi experiencia en la creaci\u00f3n de un broker de mensajer\u00eda y en la construcci\u00f3n de sistemas complejos sobre su base. Sin embargo, la parte te\u00f3rica y motivacional result\u00f3 ser bastante extensa.<br \/>\nEn la segunda parte del art\u00edculo, hablar\u00e9 sobre los matices de la implementaci\u00f3n de puntos de intercambio, patrones de mensajer\u00eda y su aplicaci\u00f3n.<br \/>\nEn la tercera parte, abordaremos cuestiones generales sobre la organizaci\u00f3n de servicios, enrutamiento y balanceo. Hablaremos sobre el aspecto pr\u00e1ctico de la escalabilidad y la resiliencia de los sistemas.<\/p>\n<p><\/p>\n<p>Fin de la primera parte.<\/p>\n<p><\/p>\n<p>Foto <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/SRjZtxsK3Os\">@lucabravo<\/a><\/noindex>.<\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446028\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0438\u0440 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0434\u043e\u043b\u0436\u043d\u0430 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432 Erlang \u043c\u043e\u0436\u043d\u043e \u0441\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c \u043c\u0438\u0440\u043d\u043e. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043d\u0435\u0439, \u043c\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22770,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Bloques de construcci\u00f3n de aplicaciones distribuidas. Aproximaci\u00f3n cero | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:37:25+00:00","article:modified_time":"2019-10-31T18:37:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30785","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-22 15:31:13","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:29:56","updated":"2026-02-22 15:31:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/30785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=30785"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/30785\/revisions"}],"predecessor-version":[{"id":162006,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/30785\/revisions\/162006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/22770"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=30785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=30785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=30785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}