{"id":79498,"date":"2020-04-27T19:42:07","date_gmt":"2020-04-27T17:42:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/mikroservisy-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat"},"modified":"2020-04-27T19:42:07","modified_gmt":"2020-04-27T17:42:07","slug":"mikroservisy-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat","title":{"rendered":"Microservices: What They Are, Why You Need Them, and When to Implement Them","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I have wanted to write an article on microservices architecture for a long time, but two things continually held me back \u2014 the more I delved into the topic, the more it seemed to me that what I know is obvious, and what I don't know still needs to be studied extensively. On the other hand, I believe there is already enough to discuss with a broader audience. So alternative opinions are welcome. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Conway's Law and the connection between business, organization, and information system<\/h2>\n<p>\nOnce again, I will allow myself to quote:<\/p>\n<blockquote><p>\u201cAny organization that designs a system (in the broad sense) will produce a design whose structure is a copy of the organization's communication structure.\u201d<br \/>\n\u2014 Melvyn Conway, 1967\n<\/p><\/blockquote>\n<p>In my opinion, this law relates more to the practicality of organizing a business than directly to the information system. Let me explain with an example. Suppose we have a fairly stable business opportunity with a lifecycle long enough to justify organizing an enterprise (this is not a typo; I really like this term I borrowed). Naturally, the supporting system of this business will organizationally and process-wise match this business.<\/p>\n<h2>Business-oriented information systems<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Microservices: What They Are, Why You Need Them, and When to Implement Them\" src=\"\/wp-content\/uploads\/2020\/04\/0866e113f737b66936a6fd9545b7d1b5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLet me illustrate with an example. Suppose there is a business opportunity to establish a pizza selling business. In version 1 (let's call it pre-information), the company was a pizzeria, cash register, and delivery service. This version lasted long in conditions of low variability in the external world. Then came version 2 \u2014 a more advanced one that could leverage an information system at its core for a business with a monolithic architecture. And here, in my opinion, a truly terrible injustice arises regarding monoliths \u2014 <b>the so-called monolithic architecture does not correspond to the domain model of the business.<\/b>If it were like that, the system wouldn't be able to function at all - which contradicts Conway's Law and common sense. No, a monolithic architecture perfectly aligns with the business model at this stage of development \u2014 I mean the stage when the system is already built and operational. It's a truly remarkable fact that regardless of the architectural approach, both the service-oriented architecture version 3 and the microservices architecture version N will work equally well. So what's the catch?<\/p>\n<h2>Everything flows, everything changes, or are microservices a means to combat complexity?<\/h2>\n<p>\n Before continuing, let's address some misconceptions regarding microservices architecture.<\/p>\n<p>Proponents of the microservices approach often claim that breaking a monolith into microservices simplifies development by reducing the codebase of individual services. In my view, this statement is utterly ridiculous. Seriously, does the apparent interaction within a monolith and homogeneous code seem complex? If that were truly the case, all projects would initially be built as microservices, while practice shows that migrating from a monolith to microservices is much more common. Complexity doesn't just disappear; it merely shifts from individual modules to interfaces (such as data buses, RPC, APIs, and other protocols) and orchestrating systems. And that is complex! <\/p>\n<p>The advantage of using a heterogeneous stack is also questionable. I won't argue that it's possible, but in reality, it's rarely encountered (To anticipate, it should indeed be the case \u2014 but rather as a consequence than an advantage).<\/p>\n<h2>Product life cycle and service life cycle<\/h2>\n<p>\nTake another look at the diagram above. I didn't mark the decreasing life cycle of a particular business version by accident \u2014 under modern conditions, accelerating the transition between versions is crucial for its success. <b>The success of a product is determined by the speed of testing business hypotheses within it.<\/b>And this is where, in my opinion, the key advantage of microservices architecture lies. But let's go step by step. <\/p>\n<p>Let's move to the next stage in the evolution of information systems \u2014 service-oriented architecture (SOA). So, at some point, we identified in our product <b>long-lived services<\/b> \u2014 long-lived in the sense that when transitioning between product versions, there is a chance that the lifecycle of the service will outlast the lifecycle of the next product version. It would be logical not to change them at all \u2014 what we <b>care about is the speed of transitioning to the next version<\/b>. Unfortunately, we are forced to make constant changes to services \u2014 and here we can use everything, from DevOps practices to containerization, and anything else that comes to mind. But this is still not microservices! <\/p>\n<h2>Microservices as a means to combat complexity\u2026 configuration management<\/h2>\n<p>\n And now we can finally move to the defining role of microservices \u2014 it is an approach that simplifies configuration management of the product. More specifically, the function of each microservice describes a business function within the product according to the domain model \u2014 and these are things that live not in a short-lived version, but in long-lived business opportunities. The transition to the next version of the product happens literally unnoticed \u2014 you change\/add one microservice, or perhaps just the scheme of their interaction, and suddenly find yourself in the future, leaving behind the sobbing competitors who continue to jump between their monolith versions. Now imagine that there is a sufficiently large number of microservices with predefined interfaces and business opportunities. You come in and build the structure of your product from ready-made microservices \u2014 simply by drawing a diagram, for example. Congratulations \u2014 you now have a platform \u2014 and you can click together your business. Dreams, dreams. <\/p>\n<h2>Conclusions<\/h2>\n<p><\/p>\n<ul>\n<li> The architecture of the system should be determined by the lifecycle of the components it consists of. If a component lives within the version of the product, there is no point in increasing the complexity of the system by applying a microservices approach.\n<\/li>\n<li>Microservice architecture should be based on the domain model \u2014 because the business opportunity is the most long-lived area.<\/li>\n<li>Delivery practices (DevOps practices) and orchestration are crucial for microservices architecture because the increasing speed of component changes demands higher quality and speed of delivery. <\/li>\n<\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/499174\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0442\u0435\u043c\u0443 \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 \u044f \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0432\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0434\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u2014 \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u0437\u043d\u0430\u044e \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0430 \u0447\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u044e \u2014 \u0435\u0449\u0435 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043e \u0447\u0435\u043c \u043f\u043e\u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u0438 \u0432 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":79499,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-79498","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=\"\u0421\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0442\u0435\u043c\u0443 \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 \u044f \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0432\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0434\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u2014 \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u0437\u043d\u0430\u044e \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0430 \u0447\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u044e \u2014 \u0435\u0449\u0435.\" \/>\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-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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: \u0447\u0442\u043e \u044d\u0442\u043e, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0442\u0435\u043c\u0443 \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 \u044f \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0432\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0434\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u2014 \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u0437\u043d\u0430\u044e \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0430 \u0447\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u044e \u2014 \u0435\u0449\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat\" \/>\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=\"2020-04-27T17:42:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-27T17:42:07+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: what they are, why they are important, and when to implement them | ProHoster","description":"I have wanted to write an article on microservices architecture for a long time, but I was always held back by two things \u2014 the more I delved into the topic, the more I felt that what I knew was obvious, and what I didn't know was still uncertain.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat","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: \u0447\u0442\u043e \u044d\u0442\u043e, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c | ProHoster","og:description":"\u0421\u0442\u0430\u0442\u044c\u044e \u043d\u0430 \u0442\u0435\u043c\u0443 \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 \u044f \u0445\u043e\u0442\u0435\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0432\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0434\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u2014 \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u043b\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u0437\u043d\u0430\u044e \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0430 \u0447\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u044e \u2014 \u0435\u0449\u0435.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/mikroservisy-chto-eto-zachem-eto-i-kogda-nuzhno-ih-vnedryat","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":"2020-04-27T17:42:07+00:00","article:modified_time":"2020-04-27T17:42:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"79498","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:37:22","updated":"2022-09-28 07:38:47","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\/79498","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=79498"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/79498\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/79499"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=79498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=79498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=79498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}