{"id":38981,"date":"2019-10-31T22:27:10","date_gmt":"2019-10-31T19:27:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\/"},"modified":"2019-10-31T22:27:10","modified_gmt":"2019-10-31T19:27:10","slug":"servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>El director de operaciones del portal Banki.ru, Andrey Nikolsky, habl\u00f3 en la conferencia del a\u00f1o pasado. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Mosc\u00fa<\/a><\/noindex> sobre los servicios hu\u00e9rfanos: c\u00f3mo identificar un hu\u00e9rfano en la infraestructura, cu\u00e1les son los problemas de los servicios hu\u00e9rfanos, qu\u00e9 hacer con ellos, y c\u00f3mo proceder si nada ayuda.<\/p>\n<p>A continuaci\u00f3n, la versi\u00f3n textual de la presentaci\u00f3n. <\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"j9I4oeEXBO8\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/j9I4oeEXBO8\/hqdefault.jpg\" alt=\"Reproducir video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n\u00a1Hola, colegas! Mi nombre es Andrey, y dirijo las operaciones en la empresa Banki.ru.<\/p>\n<p>Tenemos grandes servicios, como los monolitos, hay servicios en un sentido m\u00e1s cl\u00e1sico, y hay algunos muy peque\u00f1os. En mi jerga, digo que si un servicio es simple y peque\u00f1o, es un microservicio; y si no es tan simple y no es peque\u00f1o, simplemente es un servicio. <\/p>\n<h3><b>Ventajas de los servicios<\/b><\/h3>\n<p>\nVoy a repasar r\u00e1pidamente las ventajas de los servicios. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa primera es la escalabilidad. Puedes hacer algo r\u00e1pidamente en el servicio y lanzarlo a producci\u00f3n. Si llega tr\u00e1fico, clonas el servicio. Si llega m\u00e1s tr\u00e1fico, lo vuelves a clonar y as\u00ed contin\u00faas. Esta es una buena ventaja y, de hecho, cuando comenzamos, era lo m\u00e1s importante para nosotros, la raz\u00f3n por la que est\u00e1bamos haciendo todo esto.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn segundo lugar, el desarrollo aislado, cuando tienes varios equipos de desarrollo, diferentes desarrolladores en cada equipo, y cada equipo trabaja en su propio servicio.<\/p>\n<p>Surge un matiz con los equipos. Los desarrolladores son diferentes. Y, por ejemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">hay personas \u2018copos de nieve\u2019<\/a><\/noindex>. Lo vi por primera vez con Maxim Dorofeev. A veces hay personas \u2018copos de nieve\u2019 en algunos equipos, y en otros no. Esto hace que los diferentes servicios utilizados en la empresa sean un poco desiguales. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMira la imagen: este es un buen desarrollador, tiene grandes manos, puede hacer muchas cosas. El problema principal es de d\u00f3nde provienen esas manos. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLos servicios permiten utilizar diferentes lenguajes de programaci\u00f3n, m\u00e1s apropiados para diferentes tareas. Un servicio puede estar en Go, otro en Erlang, otro en Ruby, uno en PHP, otro en Python. En general, se puede ampliar mucho. Tambi\u00e9n hay matices aqu\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa arquitectura orientada a servicios se trata, ante todo, de devops. Es decir, si no tienes automatizaci\u00f3n, no hay un proceso de despliegue, si lo configuras manualmente, tu configuraci\u00f3n puede cambiar de una instancia de servicio a otra, y tienes que ir all\u00ed a hacer algo, entonces est\u00e1s en el infierno. <\/p>\n<p>Por ejemplo, si tienes 20 servicios y necesitas desplegarlos manualmente, tendr\u00e1s 20 consolas y presionar\u00e1s \"enter\" al mismo tiempo, como un ninja. Eso no es lo ideal. <\/p>\n<p>Si tienes un servicio despu\u00e9s de pruebas (si, por supuesto, se hicieron pruebas), y tienes que ajustarlo para que funcione en producci\u00f3n, tengo tambi\u00e9n malas noticias para ti. <\/p>\n<p>Si dependes de servicios espec\u00edficos de Amazon y trabajas en Rusia, hace dos meses tambi\u00e9n estabas pensando \"Todo arde a mi alrededor, estoy bien, todo est\u00e1 genial\".<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUtilizamos Ansible para automatizar el despliegue, Puppet para la convergencia, Bamboo para la automatizaci\u00f3n del despliegue y Confluence para documentar todo esto de alguna manera.<\/p>\n<p>No profundizar\u00e9 en esto, porque la charla se centra m\u00e1s en las pr\u00e1cticas de interacci\u00f3n que en la implementaci\u00f3n t\u00e9cnica. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHemos tenido problemas en los que Puppet en el servidor trabaja con Ruby 2, mientras que alguna aplicaci\u00f3n est\u00e1 escrita para Ruby 1.8, y juntos no funcionan. Sucede alg\u00fan tipo de error. Y cuando necesitas mantener varias versiones de Ruby en una sola m\u00e1quina, generalmente comienzan los problemas. <\/p>\n<p>Por ejemplo, a cada desarrollador le proporcionamos un entorno donde tiene casi todo lo que tenemos, todos los servicios que se pueden desarrollar, para que tenga un entorno aislado donde pueda romper y construir a su antojo. <\/p>\n<p>A veces, se necesita un paquete especialmente compilado con soporte para algo. Eso es bastante estricto. Escuch\u00e9 una presentaci\u00f3n donde la imagen de Docker pesaba 45 GB. En Linux, por supuesto, es m\u00e1s sencillo, all\u00ed todo es m\u00e1s peque\u00f1o, pero de todos modos, no habr\u00e1 suficiente espacio. <\/p>\n<p>Y tambi\u00e9n hay dependencias conflictivas, cuando una parte del proyecto depende de una versi\u00f3n de biblioteca, otra parte del proyecto de otra versi\u00f3n, y las bibliotecas no se pueden instalar juntas en absoluto. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTenemos sitios y servicios en PHP 5.6, de los cuales nos avergonzamos, pero \u00bfqu\u00e9 podemos hacer? Esa es nuestra \u00fanica plataforma. Hay sitios y servicios en PHP 7, son m\u00e1s numerosos, de los cuales no nos avergonzamos. Y cada desarrollador tiene su propia base donde se divierte programando. <\/p>\n<p>Si en la empresa se programa en un solo lenguaje, tres m\u00e1quinas virtuales por desarrollador suena normal. Si tienes diferentes lenguajes de programaci\u00f3n, la situaci\u00f3n se complica.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTienes sitios y servicios aqu\u00ed, aqu\u00ed, luego otra plataforma para Go, una plataforma para Ruby, y alg\u00fan Redis adicional. Al final, todo esto se convierte en un gran campo de soporte, y siempre hay algo que puede romperse.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor eso reemplazamos las caracter\u00edsticas del lenguaje de programaci\u00f3n por el uso de diferentes frameworks, ya que los frameworks en PHP son bastante diversos, tienen diferentes capacidades, diferentes comunidades, y diferente soporte. Se puede desarrollar un servicio de manera que ya tengas algo disponible para \u00e9l. <\/p>\n<h3><b>Cada servicio tiene su propio equipo.<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNuestra principal ventaja, que se ha cristalizado a lo largo de los a\u00f1os, es que cada servicio tiene su propio equipo. Esto es conveniente para un gran proyecto, ya que se puede ahorrar tiempo en documentaci\u00f3n, y los gestores conocen bien su proyecto. <\/p>\n<p>Se pueden asignar tareas de soporte de manera efectiva. Por ejemplo, si se rompe el servicio de seguros, el equipo que se encarga de los seguros inmediatamente va a repararlo. <\/p>\n<p>Se desarrollan nuevas funciones r\u00e1pidamente, porque cuando tienes un servicio at\u00f3mico, se le puede a\u00f1adir algo de forma \u00e1gil. <\/p>\n<p>Y cuando rompes tu propio servicio, lo cual es inevitable, no afectas a otros servicios, y no vienen desarrolladores de otros equipos con palos a decirte: \u00abAy-ay, no hagas eso\u00bb. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo siempre, hay matices. Tenemos equipos estables, los gestores est\u00e1n firmemente compenetrados con el equipo. Existen documentos claros, los gestores est\u00e1n muy pendientes de todo. Cada equipo tiene varios servicios y hay un punto concreto de competencia. <\/p>\n<p>Si los equipos son fluidos (lo cual tambi\u00e9n es algo que usamos a veces), hay un buen m\u00e9todo llamado \u00abmapa estelar\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTienes una lista de servicios y personas. Una estrella indica que la persona es experta en ese servicio, un libro indica que la persona est\u00e1 estudiando ese servicio. La tarea de la persona es cambiar el libro por una estrella. Y si no hay nada escrito frente al servicio, comienzan los problemas, de los cuales hablar\u00e9 m\u00e1s adelante. <\/p>\n<h3><b>\u00bfC\u00f3mo aparecen los servicios hu\u00e9rfanos?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl primer problema, la primera forma de tener un servicio hu\u00e9rfano en tu infraestructura, es la despedida de personas. \u00bfAlguien ha experimentado alguna vez que llegan plazos del negocio antes de haber evaluado las tareas? A veces, los plazos son estrictos y simplemente no hay tiempo para la documentaci\u00f3n. \"Hay que entregar el servicio a producci\u00f3n, luego lo escribiremos\". <\/p>\n<p>Si el equipo es peque\u00f1o, puede que haya un solo desarrollador que escribe todo, mientras que los dem\u00e1s est\u00e1n para ayudar. \"He escrito la arquitectura principal, t\u00fa enc\u00e1rgate de los interfaces\". Luego, en alg\u00fan momento, el gerente, por ejemplo, se va. Y durante ese periodo, cuando el gerente se ha ido y no se ha nombrado uno nuevo, los desarrolladores deciden por s\u00ed mismos hacia d\u00f3nde va el servicio, qu\u00e9 est\u00e1 sucediendo. Y como sabemos (regresando unas diapositivas atr\u00e1s), en algunos equipos hay personas 'copos de nieve', a veces un copo de nieve es el l\u00edder de equipo. Luego se va y tenemos un servicio hu\u00e9rfano. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSin embargo, las tareas del soporte y del negocio no desaparecen, se acumulan en el backlog. Si durante el desarrollo del servicio hubo errores arquitect\u00f3nicos, tambi\u00e9n se acumulan en el backlog. El servicio se degrada lentamente. <\/p>\n<h3><b>\u00bfC\u00f3mo identificar un hu\u00e9rfano?<\/b> <\/h3>\n<p>\nEsta lista describe bien la situaci\u00f3n. \u00bfQui\u00e9n se ha identificado con algo en su infraestructura?<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSobre los workarounds documentados: hay un servicio que, en general, funciona, tiene un manual de dos p\u00e1ginas sobre c\u00f3mo trabajar con \u00e9l, pero nadie sabe c\u00f3mo funciona internamente. <\/p>\n<p>O, por ejemplo, hay un acortador de enlaces. En nuestro caso, actualmente estamos utilizando tres acortadores de enlaces para diferentes objetivos en diferentes servicios. Estas son las consecuencias. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAhora voy a ser el capit\u00e1n obvio. \u00bfQu\u00e9 se debe hacer? Primero, hay que transferir el servicio a otro gerente, a otro equipo. Si tu l\u00edder de equipo a\u00fan no se ha ido, en este otro equipo, cuando entiendes que el servicio se asemeja a un hu\u00e9rfano, debes incluir a alguien que entienda algo sobre \u00e9l. <\/p>\n<p>Lo m\u00e1s importante: deben tener procedimientos de transferencia escritos a conciencia. En nuestro caso, generalmente soy yo quien se encarga de esto, porque necesito que todo funcione. A los gerentes les interesa que se entregue r\u00e1pido, y lo que suceder\u00e1 despu\u00e9s ya no les importa tanto. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa siguiente forma de hacer una 'sorpresa' es: 'Lo haremos en outsourcing, as\u00ed ser\u00e1 m\u00e1s r\u00e1pido y luego lo pasaremos al equipo'. Es obvio que todos tienen ciertos planes en el equipo, hay una fila. A menudo, el cliente de negocios piensa que en el proveedor externalizado har\u00e1n las cosas igual que el departamento t\u00e9cnico de la empresa. Aunque sus motivaciones son diferentes. En el outsourcing a veces hay soluciones tecnol\u00f3gicas extra\u00f1as y soluciones algor\u00edtmicas inusuales.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor ejemplo, tuvimos un servicio en el que hab\u00eda Sphinx en diferentes lugares inesperados. M\u00e1s adelante contar\u00e9 qu\u00e9 tuvimos que hacer. <\/p>\n<p>En el caso de los outsourcers puede haber frameworks hechos a medida. Es simplemente PHP puro con copias y pegados de un proyecto anterior, donde se puede encontrar de todo. Grandes trucos en los scripts de despliegue, cuando necesitas cambiar algunas l\u00edneas en alg\u00fan archivo usando complejos scripts Bash, mientras que estos scripts de despliegue son llamados por alg\u00fan tercer script. Al final, cambias el sistema de despliegue, eliges otra cosa y, de repente, tu servicio no funciona. Porque hab\u00eda que poner otras 8 enlaces entre diferentes carpetas. O a veces, mil registros funcionan, pero cien mil ya no. <\/p>\n<p>Continuar\u00e9 al mando. La aceptaci\u00f3n del servicio del outsourcing es un procedimiento que es obligatorio. \u00bfA qui\u00e9n le ha pasado que un servicio del outsourcing llega y no es aceptado en ning\u00fan lado? No es tan com\u00fan como el servicio hu\u00e9rfano, pero a\u00fan as\u00ed. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs necesario verificar el servicio, hay que revisarlo, hay que cambiar las contrase\u00f1as. Tuvimos un caso en el que nos ofrecieron un servicio, donde el panel de administraci\u00f3n dec\u00eda \u00abif login == \u2018admin\u2019 &amp;&amp; password == \u2018admin\u2019\u2026\u00bb, as\u00ed de claro estaba en el c\u00f3digo. Estamos sentados pensando, \u00bfy esto lo escriben personas en 2018?<\/p>\n<p>Las pruebas del volumen de almacenamiento tambi\u00e9n son importantes. Hay que ver qu\u00e9 suceder\u00e1 con cien mil registros, antes de lanzar este servicio a producci\u00f3n. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo deber\u00eda dar verg\u00fcenza enviar el servicio para mejoras. Cuando dices: 'No aceptaremos este servicio, tenemos 20 tareas, h\u00e1ganlas, luego aceptaremos', est\u00e1 bien. La conciencia no debe doler porque pongas en apuros al gerente o porque el negocio gaste dinero. Despu\u00e9s, el negocio gastar\u00e1 m\u00e1s.<\/p>\n<p>Tuvimos un caso en el que decidimos hacer un proyecto piloto en outsourcing.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe entreg\u00f3 a tiempo, y ese fue el \u00fanico criterio de calidad. Por eso se hizo otro proyecto piloto, que ya ni siquiera era del todo piloto. Estos servicios fueron aceptados, dijeron administrativamente, aqu\u00ed est\u00e1 su c\u00f3digo, aqu\u00ed est\u00e1 el equipo, aqu\u00ed est\u00e1 su gerente. Los servicios ya empezaron a generar ganancias. Sin embargo, de hecho, siguen siendo hu\u00e9rfanos, nadie entiende c\u00f3mo funcionan, y los gerentes se desentienden de sus tareas. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHay otro concepto excelente: desarrollo guerrillero. Cuando alg\u00fan departamento, generalmente el de marketing, quiere probar una hip\u00f3tesis, y encarga el servicio completamente externamente. Comienza a recibir tr\u00e1fico, cierran documentos, firman actas con el contratista, entran en operaci\u00f3n y dicen: 'Chicos, aqu\u00ed tenemos un servicio, ya tiene tr\u00e1fico, nos genera dinero, vamos a aceptarlo'. Nosotros decimos: 'Vaya, \u00bfc\u00f3mo es posible?'.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nY otra forma de obtener un servicio hu\u00e9rfano: cuando alg\u00fan equipo se ve de repente sobrecargado, la direcci\u00f3n dice: 'Vamos a pasar este servicio de este equipo a otro equipo, que tenga menos carga'. Luego pasamos a un tercer equipo y cambiamos al gerente. Y al final, nuevamente tenemos un hu\u00e9rfano.<\/p>\n<h3><b>\u00bfCu\u00e1l es el problema con los hu\u00e9rfanos?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuien no lo sepa, es el barco de l\u00ednea Wasa, levantado en Suecia, famoso por haberse hundido cinco minutos despu\u00e9s de ser botado al agua. Y el rey de Suecia, por cierto, no mand\u00f3 ejecutar a nadie por esto. Fue construido por dos generaciones de ingenieros que no sab\u00edan construir tales barcos. Efecto inevitable.<\/p>\n<p>El barco podr\u00eda haberse hundido, por cierto, mucho peor, por ejemplo, cuando ya estuviera llevando al rey a alg\u00fan lugar en una tormenta. As\u00ed fue, se hundi\u00f3 de inmediato, en t\u00e9rminos \u00e1giles esto es bueno: fallar temprano. <\/p>\n<p>Si fallamos temprano, generalmente no hay problemas. Por ejemplo, durante la aceptaci\u00f3n se envi\u00f3 para mejorar. Pero si fallamos ya en producci\u00f3n, cuando se han invertido dinero, podr\u00edan surgir problemas. Consecuencias, como se les llama en los negocios.<\/p>\n<p>\u00bfCu\u00e1les son los peligros de los servicios hu\u00e9rfanos?<\/p>\n<ul>\n<li>El servicio puede romperse de repente. <\/li>\n<li>El servicio tarda mucho en repararse o no se repara en absoluto. <\/li>\n<li>Problemas de seguridad. <\/li>\n<li>Problemas con mejoras y actualizaciones. <\/li>\n<li>Si un servicio importante se rompe, la reputaci\u00f3n de la empresa sufre. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>\u00bfQu\u00e9 hacer con los servicios hu\u00e9rfanos?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUna vez m\u00e1s, repito lo que se debe hacer. En primer lugar, debe haber documentaci\u00f3n. Siete a\u00f1os en Banki.ru me ense\u00f1aron que los testers no deben creer en la palabra de los desarrolladores, y la explotaci\u00f3n no debe confiar en la palabra de nadie. Es necesario verificar. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn segundo lugar, hay que escribir esquemas de interacci\u00f3n, porque a veces los servicios que no son aceptados correctamente contienen dependencias que nadie mencion\u00f3. Por ejemplo, los desarrolladores han vinculado el servicio a su clave de alg\u00fan Yandex.Maps o a Dadata. Si se acaba el l\u00edmite gratuito, todo se rompe y no sabes qu\u00e9 ha pasado. Todas esas trampas deben ser descritas: se utiliza Dadata, Sms, entre otras.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn tercer lugar, trabajar con la deuda t\u00e9cnica. Cuando haces ciertos parches o acepta un servicio y dices que hay que hacer algo, debes asegurarte de que realmente se haga. Porque luego puede suceder que un peque\u00f1o bache no sea tan peque\u00f1o y termines cayendo en \u00e9l.<\/p>\n<p>Con respecto a las tareas de arquitectura, tuvimos una historia relacionada con Sphinx. En uno de los servicios, Sphinx se utilizaba para introducir listas. Simplemente una lista con paginaci\u00f3n, pero al mismo tiempo se reindexaba cada noche. Estaba formado por dos \u00edndices: uno grande que se indexaba cada noche y otro peque\u00f1o que se adjuntaba a este. Cada d\u00eda, con un 50% de probabilidad, al desplegar, el \u00edndice fallaba y las noticias dejaban de actualizarse en la p\u00e1gina principal. Al principio, esto tomaba 5 minutos, mientras el \u00edndice se reindexaba, luego el \u00edndice creci\u00f3 y en alg\u00fan momento comenz\u00f3 a tardar 40 minutos en reindexarse. Cuando lo eliminamos, suspiramos aliviados, porque qued\u00f3 claro que pasar\u00eda un poco de tiempo y nuestro \u00edndice estar\u00eda reindex\u00e1ndose durante toda la jornada laboral. Esto ser\u00eda un fallo para nuestro portal, ocho horas sin noticias \u2014 eso significar\u00eda que el negocio se detendr\u00eda.<\/p>\n<h3><b>Plan de trabajo con el servicio hu\u00e9rfano<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn realidad, es muy dif\u00edcil hacerlo porque DevOps se trata de comunicaci\u00f3n. Quieres tener buenas relaciones con tus colegas, pero cuando golpeas a tus colaboradores y gerentes con regulaciones, pueden sentir emociones contradictorias hacia quienes hacen esto. <\/p>\n<p>Adem\u00e1s de todos estos puntos, hay algo m\u00e1s importante: para cada servicio espec\u00edfico, cada parte del proceso de despliegue, deben haber personas espec\u00edficas responsables. Cuando no hay personas y se necesitan involucrar a otros, estudiando todo esto, se vuelve complicado.<\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi todo esto no ha ayudado y el servicio hu\u00e9rfano sigue siendo hu\u00e9rfano, nadie lo quiere, no se escribe la documentaci\u00f3n, el equipo que fue convocado para este servicio se niega a hacer algo, hay una forma sencilla: rehacerlo todo. <\/p>\n<p>Es decir, tomas los requisitos del servicio de nuevo y escribes un nuevo servicio, mejor, en una mejor plataforma, sin soluciones tecnol\u00f3gicas extra\u00f1as. Y migras a \u00e9l en producci\u00f3n. <\/p>\n<p><img decoding=\"async\" alt=\"Servicios hu\u00e9rfanos: la otra cara de la arquitectura de (micro)servicios\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuvimos una situaci\u00f3n en la que tomamos un servicio en Yii 1 y nos dimos cuenta de que no pod\u00edamos continuar desarroll\u00e1ndolo, porque se nos acabaron los desarrolladores que saben escribir bien en Yii 1. Todos los desarrolladores saben escribir bien en Symfony 3. \u00bfQu\u00e9 hacer? Asignamos tiempo, asignamos un equipo, asignamos un gerente, reescribimos el proyecto y lentamente redirigimos el tr\u00e1fico a \u00e9l. <\/p>\n<p>Despu\u00e9s de esto, se puede eliminar el antiguo servicio. Este es mi procedimiento favorito, cuando en el sistema de gesti\u00f3n de configuraciones hay que eliminar alg\u00fan servicio y luego revisar para asegurarse de que todas las instancias en producci\u00f3n est\u00e9n apagadas, para que no queden rastros para los desarrolladores. El repositorio en git permanece.<\/p>\n<p>Esto es todo lo que quer\u00eda contar, estoy listo para discutir, es un tema pol\u00e9mico, muchos han navegado en \u00e9l. <\/p>\n<p><b>En las diapositivas se habl\u00f3 de que unificaron los lenguajes. Como ejemplo se mencion\u00f3 el redimensionamiento de im\u00e1genes. \u00bfEs realmente necesario ser r\u00edgido con un solo lenguaje? Porque redimensionar im\u00e1genes en PHP, bueno, realmente se podr\u00eda haber hecho tambi\u00e9n en Golang.<\/b><\/p>\n<p>En realidad, esto no es obligatorio, como ocurre con todas las pr\u00e1cticas. En algunos casos puede incluso ser indeseable. Pero hay que entender que si en su empresa hay 50 personas en el departamento t\u00e9cnico, de las cuales 45 son programadores PHP, 3 son DevOps que manejan Python, Ansible, Puppet y cosas as\u00ed, y solo uno de ellos escribe un servicio en Go para redimensionar im\u00e1genes, entonces cuando \u00e9l se va, la experiencia se va con \u00e9l. Y adem\u00e1s, necesitar\u00e1n buscar un desarrollador espec\u00edfico en el mercado que conozca ese lenguaje, especialmente si es raro. Desde un punto de vista organizativo, esto es problem\u00e1tico. Desde la perspectiva de DevOps, no solo necesitar\u00e1n clonar un conjunto preparado de playbooks que usan para desplegar servicios, sino que tendr\u00e1n que escribirlos desde cero. <\/p>\n<p>Actualmente estamos desarrollando un servicio en Node.js, y este ser\u00e1 un espacio separado para cada desarrollador con su propio lenguaje. Pero nos sentamos a pensar que vale la pena. Es decir, aqu\u00ed la cuesti\u00f3n es sentarse y reflexionar.<\/p>\n<p><b>\u00bfC\u00f3mo monitorean sus servicios? \u00bfC\u00f3mo recolectan y rastrean los logs?<\/b><\/p>\n<p>Recolectamos los logs en Elasticsearch y los almacenamos en Kibana, y dependiendo de si es un entorno de producci\u00f3n o de pruebas, se utilizan diferentes recopiladores. En algunos casos usamos Lumberjack, en otros algo m\u00e1s, ya no lo recuerdo. Tambi\u00e9n hay algunos lugares en ciertos servicios donde instalamos Telegraf y lo enviamos a otro lugar por separado. <\/p>\n<p><b>\u00bfC\u00f3mo conviven Puppet y Ansible en un mismo entorno?<\/b><\/p>\n<p>En realidad, ahora tenemos dos entornos, uno es Puppet, el otro Ansible. Estamos trabajando para hibridarlos. Ansible es un buen entorno para la configuraci\u00f3n inicial, Puppet es algo malo para la configuraci\u00f3n inicial porque requiere trabajo manual directamente en el entorno, y Puppet asegura la convergencia de la configuraci\u00f3n. Esto significa que el entorno se mantiene a s\u00ed mismo actualizado, mientras que una m\u00e1quina gestionada por Ansible necesita que se ejecuten playbooks con cierta periodicidad para mantenerse actualizada. Esa es la diferencia. <\/p>\n<p><b>\u00bfC\u00f3mo mantienen la compatibilidad? \u00bfTienen configuraciones tanto en Ansible como en Puppet?<\/b><\/p>\n<p>Este es nuestro gran dolor, mantenemos la compatibilidad a mano y pensamos en c\u00f3mo podr\u00edamos pasar todo esto a otro lugar. Lo que conseguimos es que Puppet aplica paquetes y mantiene algunas referencias, mientras que Ansible, por ejemplo, aplica c\u00f3digo y ajusta las configuraciones recientes de las aplicaciones.<\/p>\n<p><b>En la presentaci\u00f3n se habl\u00f3 de diferentes versiones de Ruby. \u00bfCu\u00e1l es la soluci\u00f3n?<\/b><\/p>\n<p>Nos encontramos con esto en un solo lugar y tenemos que mantenerlo en mente todo el tiempo. Simplemente desactivamos la parte que trabajaba con esa versi\u00f3n de Ruby que no era compatible con las aplicaciones y la mantuvimos separada. <\/p>\n<blockquote><p> Este a\u00f1o la conferencia <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Mosc\u00fa<\/a><\/noindex> se llevar\u00e1 a cabo el 7 de diciembre en 'Technopolis'. Aceptamos propuestas para conferencias hasta el 11 de noviembre. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">Escr\u00edbanos<\/a><\/noindex> si desea dar una charla.<\/p>\n<p>\u00a1La inscripci\u00f3n para los participantes est\u00e1 abierta, \u00fanase! \n<\/p><\/blockquote>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/scienceman_events\/blog\/471146\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 DevOpsDays Moscow \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043a\u0430\u043a \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u0438\u0440\u043e\u0442\u0443 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0447\u0435\u043c \u043f\u043b\u043e\u0445\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0436\u0443 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Banki.ru. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38981","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=\"description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\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\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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-31T19:27:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:10+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\udd47 Servicios hu\u00e9rfanos: el otro lado de la arquitectura (micro)servicios | ProHoster","description":"El director de operaciones del portal Banki.ru, Andrey Nikolsky, habl\u00f3 en la conferencia del a\u00f1o pasado.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster","og:description":"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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-31T19:27:10+00:00","article:modified_time":"2019-10-31T19:27:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38981","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-01-24 00:15:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:59:27","updated":"2026-01-24 00:15:21","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\/38981","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=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}