{"id":31761,"date":"2019-10-31T21:42:55","date_gmt":"2019-10-31T18:42:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\/"},"modified":"2019-10-31T21:42:55","modified_gmt":"2019-10-31T18:42:55","slug":"mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","title":{"rendered":"Microservices: Size Matters, Even If You Have Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>September 19 in Moscow <noindex><a rel=\"nofollow\" href=\"https:\/\/www.meetup.com\/HighLoad-User-Group\/events\/254238096\/\">the<\/a><\/noindex> the first thematic meetup of HUG (Highload++ User Group), which was dedicated to microservices. The report \"Operating Microservices: Size Matters, Even if You Have Kubernetes\" shared extensive experience from the company \"Flant\" in operating projects with microservices architecture. This will primarily benefit all developers contemplating the application of this approach in their current or future projects.<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/5d84197eef093da02b3db2156841e644.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIntroducing <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=g9cgppj0gKQ\"><b>the video of the presentation<\/b><\/a><\/noindex> (50 minutes, significantly more informative than the article), as well as the main highlights in text form.<\/p>\n<p><i>NB: The video and presentation are also available at the end of this publication.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Introduction<\/h2>\n<p>\nUsually, a good story has a beginning, main plot, and conclusion. This presentation resembles more of a tragic beginning. It is also essential to note that it presents a perspective on microservices from <i>exploitation<\/i>.<\/p>\n<p>I will start with this chart, created by <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MicroservicePremium.html\">became<\/a><\/noindex> Martin Fowler in 2015:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f0cc0e00f32f5ea0a736e09fd20eaa85.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIt shows how, in the case of a monolithic application reaching a certain size, productivity starts to decline. Microservices differ in that their initial productivity is lower, but as complexity grows, the degradation in efficiency is less noticeable.<\/p>\n<p>I will supplement this chart for the case of using Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/1b83f03639324c610a84bfd434317f48.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWhy has the application with microservices improved? Because this architecture imposes serious requirements that are excellently met by Kubernetes capabilities. On the other hand, some of this functionality will also be beneficial for monoliths, especially since today\u2019s typical monolith is not entirely monolithic (details will follow later in the presentation).<\/p>\n<p>As can be seen, the final chart (when both monolithic and microservice applications are in a Kubernetes infrastructure) does not differ much from the initial one. The focus will be on applications operated using Kubernetes.<\/p>\n<h2>Useful and harmful microservices<\/h2>\n<p>\nAnd here is the main thought:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c555e5fbdf09e4bb2be17fad23b8ff6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWhat is a <b>normal<\/b> microservices architecture? It should deliver real benefits by increasing work efficiency. Referring back to the chart, there it is:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c27a7af10812580f0543888256a0e698.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf we call it <b>beneficial<\/b>, then on the other side of the chart will be <b>harmful<\/b> microservices (hinders work):<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/27a7298bd8f877b2bc69d19378a542e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nReturning to the 'main point': is it worth trusting my experience? Since the beginning of this year, I have reviewed <b>85 projects<\/b>. Not all of them were microservices (about a third to half had such architecture), but that's still a large number. We (the company 'Flant') as outsourcers manage to see a wide variety of applications developed both in small companies (with 5 developers) and in large ones (~500 developers). An additional plus is that we see how these applications live and evolve over many years.<\/p>\n<h2>Why microservices?<\/h2>\n<p>\nThere is <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">a quite specific answer<\/a><\/noindex> from the aforementioned Martin Fowler:<\/p>\n<ol>\n<li> clear boundaries of modularity;<\/li>\n<li> independent deployment;<\/li>\n<li> freedom of technology choice.<\/li>\n<\/ol>\n<p>\nI have talked a lot with architects and software developers, asking them why they need microservices. I compiled my list of their expectations. Here\u2019s what I came up with:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e9fa2f1a03da2017e90c5f952b752187.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf I were to describe 'in sensations' some of the points, they would be:<\/p>\n<ul>\n<li> clear boundaries of modules: we have this terrible monolith, and now everything will be neatly organized in Git repositories, where everything is 'sorted out' without mixing the warm with the soft;<\/li>\n<li> independent deployment: we will be able to roll out services independently, enabling faster development (simultaneously launching new features);<\/li>\n<li> independent development: we can give this microservice to one team\/developer while another team handles a different one, allowing us to develop faster;<\/li>\n<li> b<i>higher level of isolation, as if one controller is broken, the problem is confined to that specific context).<\/i>greater reliability: if there is partial degradation (one microservice out of 20 goes down), only one button stops working, while the system as a whole continues to function.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Typical (harmful) microservice architecture<\/h2>\n<p>\nTo explain why in reality everything is not as we expect, I will present <i>a composite<\/i> image of microservice architecture, based on experiences from many different projects.<\/p>\n<p>An example will be an abstract online store aiming to compete with Amazon or at least OZON. Its microservice architecture looks like this:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3b85936587109631d16882a52dd1b310.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor a variety of reasons, these microservices are written on different platforms:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e145b212a83814218add965ce26b3fed.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSince each microservice needs to be autonomous, many of them require their own database and cache. The final architecture turns out to be as follows:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/299b2ac7b6956e295c3d59210955e5e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>What are its consequences?<\/h2>\n<p>\nRegarding Fowler <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">about the 'payment' for using microservices:<\/a><\/noindex> We'll see if our expectations were met.<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/50fc6ac602cb2eb8383d2103101c01ce.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nClear boundaries of modules\u2026<\/p>\n<h3>how many microservices do we actually need to fix<\/h3>\n<p>\nHowever, <b>, in order to roll out a change? Can we even figure out how everything works without a distributed tracer (after all, any request is handled by half of the microservices)?<\/b>There exists a pattern of a '<\/p>\n<p>big ball of mud<noindex><a rel=\"nofollow\" href=\"http:\/\/www.laputan.org\/mud\/\">', and here we have an even more distributed ball of mud. In confirmation of this \u2014 here's a rough illustration of how requests flow:<\/a><\/noindex>Independence of deployment\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c91086409c06f5a76b1f76bec30b737d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Technically it is achieved: we can roll out each microservice separately. But in practice, we must consider that many microservices are always rolled out<\/h3>\n<p>\n, and we need to take into account <b>the order of their rollout.<\/b>Ideally, we need to test in a separate environment whether we are rolling out the release in the correct order. <b>Freedom of technology choice\u2026<\/b>It exists. Just keep in mind that often freedom borders on chaos. It's very important not to choose technologies just to 'play' with them.<\/p>\n<h3>Independence of development\u2026<\/h3>\n<p>\nHow to create a test environment for the entire application (from such a multitude of components)? And we also need to keep it up to date. All this leads to<\/p>\n<h3>the actual number of test environments<\/h3>\n<p>\n, which we can support, <b>turns out to be minimal.<\/b>And deploying all of this locally?.. It turns out that often the developer does their work independently, but 'randomly', because they have to wait for a testing environment to become available. <b>Separate scaling\u2026<\/b>.<\/p>\n<p>Yes, but it is limited in the types of databases used. In the architecture example given, there will be no problems with Cassandra, but there will be with MySQL and PostgreSQL.<\/p>\n<h3>G<\/h3>\n<p>\nreater reliability\u2026<\/p>\n<h3>Not only does the failure of one microservice often break the correct functioning of the entire system, but there\u2019s also a new problem:<i>higher level of isolation, as if one controller is broken, the problem is confined to that specific context).<\/i>making each microservice fault-tolerant is very difficult.<\/h3>\n<p>\nBecause different technologies (memcache, Redis, etc.) are used in microservices, for each one you have to think through and implement everything, which, of course, is possible but requires enormous resources. <b>Making each microservice fault-tolerant is very challenging<\/b>. This is because different technologies (memcache, Redis, etc.) are used in microservices, and each one requires careful planning and implementation, which is certainly possible but demands significant resources.<\/p>\n<h3>Measurability of load\u2026<\/h3>\n<p>\nEverything is indeed going well with this.<\/p>\n<h3>The 'lightness' of microservices\u2026<\/h3>\n<p>\nNot only have we faced huge <b>network overheads<\/b> (with increased DNS requests, etc.), but due to numerous sub-requests, we have also started <b>replicating data<\/b> (storing caches), which has led to a significant amount of storage.<\/p>\n<p>And here's how it aligns with our expectations:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/ab189c8649d720c7add975ac54811f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>But that's not all!<\/h3>\n<p>\nBecause:<\/p>\n<ul>\n<li> We will likely need a message bus.<\/li>\n<li> How to create a consistent backup at a specific point in time? The only <i>real<\/i> option is to stop traffic for this. But how to do it in production?<\/li>\n<li> If we are talking about supporting multiple regions, organizing resilience in each of them is a very labor-intensive task.<\/li>\n<li> The problem of making centralized changes arises. For example, if we need to update the PHP version, a commit will be required in each repository (and there are dozens of them).<\/li>\n<li> The increase in operational complexity seems to be exponential.<\/li>\n<\/ul>\n<p><\/p>\n<h2>What to do with all this?<\/h2>\n<p>\n<b>Start with a monolithic application<\/b>. Fowler's experience <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MonolithFirst.html\">says<\/a><\/noindex> shows that almost all successful microservice applications started as monoliths that became too large and were then broken up. At the same time, almost all systems built as microservices from the outset faced serious issues sooner or later.<\/p>\n<p>Another valuable insight is that for a microservices architecture project to be successful, you must know very well <b>both the domain area and how to create microservices<\/b>. The best way to learn the domain area is to create a monolith.<\/p>\n<h2>But what if we have already found ourselves in this situation?<\/h2>\n<p>\nThe first step to solving any problem is to acknowledge it and understand that it is a problem we no longer want to suffer from.<\/p>\n<p>If in the case of an overgrown monolith (when we have run out of resources to purchase for it), we cut it, here we have the opposite situation: when excessive microservices are no longer helpful, but hinder\u2014 <b>cut out the excess and consolidate<\/b>!<\/p>\n<p>For example, for the aforementioned composite image\u2026<\/p>\n<p>Eliminate the most questionable microservices:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/4b72ede0452890027a950d31ced26405.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConsolidate all microservices responsible for generating the frontend:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3bf2831a637cfa148b032ba8c521353a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 into a single microservice, written in one (modern and proper, as you see it) language\/framework:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/73f53f5f4f41f72a7c6d187d855bbd95.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIt will have one ORM (one DBMS) and initially a couple of applications:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f44baf6a02bf00317f1395ab339f57a9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 but in fact, much more can be transferred, achieving such a result:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/97c02ae24199bca42e4bf24f8031578a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMoreover, in Kubernetes, we launch all of this as separate instances, which means we can still measure the load and scale them independently.<\/p>\n<h2>In summary<\/h2>\n<p>\nLook at the bigger picture. Very often, all these problems with microservices arise because someone took their task but wanted to 'play with microservices.'<\/p>\n<p><b>In the word 'microservices', the part 'micro' is unnecessary.<\/b>They are 'micro' only because they are smaller than a huge monolith. But you shouldn\u2019t think of them as something small.<\/p>\n<p>And for the final thought, let\u2019s return to the initial graph:<\/p>\n<p><img decoding=\"async\" alt=\"Microservices: Size Matters, Even If You Have Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/a75665af4caa7c4982f70c59ec3c6e89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe note written to it <i>(top right)<\/i> boils down to the fact that <b>the skills of the team working on your project are always primary<\/b> \u2014 it is they who will play a key role in your choice between microservices and a monolith. If the team lacks skills but starts creating microservices, the story will certainly end tragically.<\/p>\n<h2>Videos and slides<\/h2>\n<p>\nVideo of the presentation (~50 minutes; unfortunately, it does not convey the numerous emotions of the attendees, which largely defined the mood of the report, but here it is):<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"g9cgppj0gKQ\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/g9cgppj0gKQ\/hqdefault.jpg\" alt=\"Play video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Presentation of the report:<\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"\/\/speakerdeck.com\/player\/f4f5ab9957084712bc92aa8a0ef61e45\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<h2>P.S.<\/h2>\n<p>\nOther reports on our blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">Monitoring and Kubernetes<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; May 28, 2018, at RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/345116\/\">Best Practices for CI\/CD with Kubernetes and GitLab<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; November 7, 2017, at HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/331188\/\">Our experience with Kubernetes in small projects<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; June 6, 2017, at RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/324274\/\">We build Docker images for CI\/CD quickly and conveniently with dapp<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; November 8, 2016, at HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/322686\/\">Continuous Delivery Practices with Docker<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; May 31, 2016, at RootConf)<\/i>.<\/li>\n<\/ul>\n<p>\nYou may also be interested in the following publications:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/347518\/\">The death of microservices madness in 2018<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/425085\/\">7 best practices for operating containers according to Google<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/340270\/\">The New Stack statistics on the challenges of implementing Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424531\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c. \u041d\u0430 \u043d\u0451\u043c \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u00ab\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432: \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Kubernetes\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u00ab\u0424\u043b\u0430\u043d\u0442\u00bb \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23651,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31761","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d.\" \/>\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\/en\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\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\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\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:42:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:55+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\udd47Microservices: size matters, even if you have Kubernetes | ProHoster","description":"On September 19, the first themed meetup HUG (Highload++ User Group) took place in Moscow, dedicated to.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Kubernetes | ProHoster","og:description":"19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","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:42:55+00:00","article:modified_time":"2019-10-31T18:42:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31761","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-21 07:42:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:11:22","updated":"2026-01-21 07:42:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/31761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=31761"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/31761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/23651"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=31761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=31761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=31761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}