{"id":24948,"date":"2017-06-20T23:12:20","date_gmt":"2017-06-20T20:12:20","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=24948"},"modified":"2018-05-15T15:34:46","modified_gmt":"2018-05-15T12:34:46","slug":"over-engineering-when-microservices-are-too-micro","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/","title":{"rendered":"Over-Engineering: When Microservices Are Too &#8220;Micro&#8221;"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#The_risks_of_too_many_microservices\" >The risks of too many microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#How_to_avoid_over-engineering\" >How to avoid over-engineering?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#Changing_the_processes\" >Changing the processes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#Related_reading\" >Related reading:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#About_the_speaker\" >About the speaker<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"The_risks_of_too_many_microservices\"><\/span>The risks of too many microservices<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Microservices are known to provide certain benefits in terms of complex software systems. They allow for dividing such systems into independent modules that can be deployed, changed, and updated without affecting the entire system or one another. Microservices eliminate dependencies between development teams to certain extent and can improve the ability of a system to handle increased loads.<\/p>\n<p>Components in a microservices-based architecture are loosely coupled. So, when one of them fails, it does not necessarily will cause the others to fail, too. Localizing and fixing a fault also becomes much easier. Moreover, microservices ensure a greater freedom of technological choices, making it possible to combine several technologies within one system.<\/p>\n<p>However, it would be a mistake to believe that microservices are a universal solution to make things simple. Just as anything else, they might come with not only positive, but also negative effects. Their improper use may lead to over-engineering when an application is split into too many components and it gets hard to maintain and support the system.<\/p>\n<p>So, at the <a href=\"https:\/\/www.altoros.com\/blog\/tag\/cf-summit\/\">Cloud Foundry Summit 2017<\/a>, Alex Sologub of Altoros delivered an overall message of &#8220;being careful with microservices.&#8221;<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-alex-sologub-overengineering-session.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-alex-sologub-overengineering-session.jpg\" alt=\"cloud-foundry-summit-2017-alex-sologub-overengineering-session\" width=\"640\" height=\"795\" class=\"aligncenter size-full wp-image-25094\" \/><\/a><\/center><\/p>\n<blockquote><p><em>&#8220;Engineers need to take the responsibility and design based on facts, not on their gut feelings.&#8221;<br \/>\n\u2014Alex Sologub, Altoros<\/em><\/p><\/blockquote>\n<p>During his talk, Alex pointed out that having too many microservices may lead to:<\/p>\n<ul>\n<li>Slower development with more apps to build, deploy, and test\n<\/li>\n<li>Architecture becoming <a href=\"https:\/\/www.altoros.com\/blog\/reducing-complexity-of-software-with-domain-driven-design-and-microservices\/\">increasingly complex<\/a><\/li>\n<li>Significant overhead development and infrastructure costs<\/li>\n<li>An architecture that requires technologies not typical for a specific domain<\/li>\n<li>Loss of profit due to resources wasted on inefficient solutions<\/li>\n<li>Largely upfront design based mostly on assumptions how a system will evolve in the future<\/li>\n<\/ul>\n<p>Alex emphasized that before creating another microservice, one needs to actually weigh the value it can bring against the expected risks and costs. Otherwise, you will just be wasting your time, resources, and money for something that gets you nowhere near optimization. Instead of innovation, you&#8217;ll be coping with a disaster.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_to_avoid_over-engineering\"><\/span>How to avoid over-engineering?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>On adopting microservices, it is recommended to follow the <a href=\"https:\/\/12factor.net\" target=\"_blank\">12-factor app principles<\/a>, clearly defining and isolating dependencies. This way, the system components could be replaced\/updated independently (or almost independently).<\/p>\n<p>In this endeavor, it is not the size of a microservice that matters, since the number of code lines or responsibilities are not representative. There are some other considerations to measure what&#8217;s enough and what&#8217;s too much about microservices.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-alex-sologub-microservices-over-engineering-4.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-alex-sologub-microservices-over-engineering-4-1024x719.jpg\" alt=\"cloud-foundry-summit-2017-alex-sologub-microservices-over-engineering-4\" width=\"640\" class=\"aligncenter size-large wp-image-25425\" \/><\/a><\/center><\/p>\n<p>In particular, according to Alex, ignoring empirical data can have significant adverse effects. The data actually describes the context of using a microservice, which helps to keep reasonable about engineering choices. So, prior to building microservices, pay attention to:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\"><strong>User experience analytics<\/strong>. Make sure you know what pages users open and how frequently, how long they stay there, the way they use a software product, etc. For instance, if users stay on a page for less than two seconds, real-time updates only complicate things without making any real difference to a user. Or else, when a feature is never\/rarely used, it is reasonable to skip implementing a separate microservice for it.<\/li>\n<li style=\"margin-bottom: 6px;\"><strong>Performance<\/strong>. Understanding how the load is distributed across the system components and how it changes in the course of time is also vital. This data is essential to outline the responsibilities for each of the microservices. It is essential to identify the bottlenecks for enabling availability and scalability, as well as resources required to build a microservice. (E.g., whether it needs a separate database, what kind of back-end support it requires, etc.)<\/li>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/Over-Engineering-Ignoring-data.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/Over-Engineering-Ignoring-data.png\" alt=\"Over-Engineering-Ignoring data\" width=\"640\" class=\"aligncenter size-full wp-image-24963\" \/><\/a><small>Real-time page updates can impair performance<\/small><\/center><\/p>\n<li  style=\"margin-bottom: 6px;\"><strong>Use cases<\/strong> and their interrelation. Microservices are usually built around business capabilities and are part of a larger process designed to address specific business needs. Knowing precise use cases can also help to differentiate between those services that are to be incorporated into a permanent system and those that are only for temporal use. One of the ways to better assign responsibilities between microservices is a <a href=\"https:\/\/www.altoros.com\/blog\/reducing-complexity-of-software-with-domain-driven-design-and-microservices\/\">domain-driven design<\/a>, addressing microservices-based architectures within the context they exist and evolve in.<\/li>\n<li  style=\"margin-bottom: 6px;\"><strong>Existing source code<\/strong>. Prior to re-designing a monolith, one should find interdependent parts of the current code base and understand the nature of these dependencies. The history of changes in SVN may shed some light onto which elements should be updated in parallel (or one right after another). So, it is useful to mine your source code across all the project&#8217;s repositories and combine the parts of the code that change together frequently. Otherwise, if you update one of the microservices, you&#8217;ll have to update the other(-s), as well. To accelerate the process of detecting dependencies, you may try out some kind of data mining (based on IDs of pull requests\/changes).<\/li>\n<\/ul>\n<p>Having a comprehensive vision of how components interact and depend on each other, it is also easier to figure out their exact boundaries and methods of communication. When the decomposition is not clear, it shifts complexity from inside a component to the connections between components, which is a more difficult issue to handle.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Changing_the_processes\"><\/span>Changing the processes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Once adopted, microservices will inevitably influence each stage of the development life cycle.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session.jpg\" alt=\"cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session\" width=\"640\" height=\"360\" class=\"aligncenter size-full wp-image-25097\" \/><\/a><\/center><\/p>\n<blockquote><p><em>&#8220;Implementation of a software project can be described as a sequence of the following stages: design, development, testing, and deployment. Microservices affect work at each of the stages.&#8221;<br \/>\n\u2014Alex Sologub, Altoros<\/em><\/p><\/blockquote>\n<p>Alex then went through the implications of using the microservices concept for each of the stages:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\"><strong>Design.<\/strong> Make sure to clearly identify the responsibilities of each microservice you&#8217;re building.<\/li>\n<li style=\"margin-bottom: 6px;\"><strong>Development.<\/strong> Verify if you made the right choice when selecting technologies and decide on the iteration frequency.<\/li>\n<li style=\"margin-bottom: 6px;\"><strong>Testing.<\/strong> Define what microservices require testing and what are the best methods to do this.<\/li>\n<li style=\"margin-bottom: 6px;\"><strong>Deployment.<\/strong> Be clear on what services and how frequently you are going to deploy.<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/Over-Engineering-Slides-Outdated-processes.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/Over-Engineering-Slides-Outdated-processes.png\" alt=\"Over-Engineering Slides-Outdated processes\" width=\"640\" class=\"aligncenter size-full wp-image-24965\" \/><\/a><small>Microservices affect each development stage<\/small><\/center><\/p>\n<p>So, to reduce the risks of over-engineering, build a system with awareness what the system&#8217;s intended purpose is, how it functions, and what the relations between its components are, Alex says. Always keep in mind what you want to achieve at each development stage and verify your choices in terms of what you lose and what you gain through them.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/fnHuQdX1lNs?list=PLhuMOCWn4P9hTlDEWJZV8JbVsW01avHF1\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_reading\"><\/span>Related reading:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/reducing-complexity-of-software-with-domain-driven-design-and-microservices\/\">Reducing Complexity of Software with Domain-Driven Design and Microservices<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/addressing-complex-software-systems-with-microservices-and-ci-cd\/\">Addressing Complex Software Systems with Microservices and CI\/CD<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/paas-vs-iaas-for-microservices-architectures-top-6-differences\/\">PaaS vs. IaaS for Microservices Architectures: Top 6 Differences<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/3VLK6g5DW1N9BT\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_speaker\"><\/span>About the speaker<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/Alex-Sologub-altoros-bio.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/Alex-Sologub-altoros-bio.png\" alt=\"Alex Sologub, altoros bio\" width=\"150\" height=\"150\" class=\"aligncenter size-full wp-image-25107\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><strong>Alex Sologub<\/strong> has 6+ years in software engineering, being an expert in cloud automation and designing architectures for complex cloud-based systems. With strong background in Ruby, Go, and JavaScript, Alex took part in integrating a number of popular clouds with RightScale (a web-based platform for managing cloud infrastructures from multiple providers). His interests embrace building IoT solutions powered by cloud technologies and designing architectures that meet customer needs. Check out Alexander\u2019s profile on <a href=\"https:\/\/github.com\/marvelousNinja\" target=\"_blank\">GitHub<\/a>.<\/small><\/div>\n<\/div>\n<hr\/>\n<p><center><small>The post is written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/alesia-bulanok\/\">Alesia Bulanok<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alexander-sologub\">Alex Sologub<\/a>, edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The risks of too many microservices<\/p>\n<p>Microservices are known to provide certain benefits in terms of complex software systems. They allow for dividing such systems into independent modules that can be deployed, changed, and updated without affecting the entire system or one another. Microservices eliminate dependencies between development teams to certain [&#8230;]<\/p>\n","protected":false},"author":111,"featured_media":25155,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[208,873,146,206],"class_list":["post-24948","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-cf-summit","tag-cloud-native","tag-microservices","tag-oss-cloud-foundry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Over-Engineering: When Microservices Are Too &quot;Micro&quot; | Altoros<\/title>\n<meta name=\"description\" content=\"When adopting microservices, one has to design them properly. Otherwise, they may bring a negative impact to all of the stages of software development life cycle.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Over-Engineering: When Microservices Are Too &quot;Micro&quot; | Altoros\" \/>\n<meta property=\"og:description\" content=\"The risks of too many microservices Microservices are known to provide certain benefits in terms of complex software systems. They allow for dividing such systems into independent modules that can be deployed, changed, and updated without affecting the entire system or one another. Microservices eliminate dependencies between development teams to certain [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-20T20:12:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-05-15T12:34:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Alesia Bulanok\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alesia Bulanok\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/\",\"name\":\"Over-Engineering: When Microservices Are Too \\\"Micro\\\" | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif\",\"datePublished\":\"2017-06-20T20:12:20+00:00\",\"dateModified\":\"2018-05-15T12:34:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/df3dad74c56cbef54ff4a8bc79d23163\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Over-Engineering: When Microservices Are Too &#8220;Micro&#8221;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/df3dad74c56cbef54ff4a8bc79d23163\",\"name\":\"Alesia Bulanok\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/bulanok.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/bulanok.jpg\",\"caption\":\"Alesia Bulanok\"},\"description\":\"Alesia Bulanok is a Technical Writer at Altoros. She has been in the profession for more than two years and has an extensive experience in software-related user documentation. With her publications, she aspires to help people in the IT industry and outside it to find what\u2019s new, interesting and can be useful for them in their daily activities.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/alesia-bulanok\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Over-Engineering: When Microservices Are Too \"Micro\" | Altoros","description":"When adopting microservices, one has to design them properly. Otherwise, they may bring a negative impact to all of the stages of software development life cycle.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/","og_locale":"en_US","og_type":"article","og_title":"Over-Engineering: When Microservices Are Too \"Micro\" | Altoros","og_description":"The risks of too many microservices Microservices are known to provide certain benefits in terms of complex software systems. They allow for dividing such systems into independent modules that can be deployed, changed, and updated without affecting the entire system or one another. Microservices eliminate dependencies between development teams to certain [...]","og_url":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/","og_site_name":"Altoros","article_published_time":"2017-06-20T20:12:20+00:00","article_modified_time":"2018-05-15T12:34:46+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif","type":"image\/gif"}],"author":"Alesia Bulanok","twitter_misc":{"Written by":"Alesia Bulanok","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/","url":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/","name":"Over-Engineering: When Microservices Are Too \"Micro\" | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif","datePublished":"2017-06-20T20:12:20+00:00","dateModified":"2018-05-15T12:34:46+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/df3dad74c56cbef54ff4a8bc79d23163"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/cloud-foundry-summit-2017-silicon-valley-alex-sologub-overengineering-causes-symptoms-treatment-session_v.3.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/over-engineering-when-microservices-are-too-micro\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Over-Engineering: When Microservices Are Too &#8220;Micro&#8221;"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/df3dad74c56cbef54ff4a8bc79d23163","name":"Alesia Bulanok","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/bulanok.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/bulanok.jpg","caption":"Alesia Bulanok"},"description":"Alesia Bulanok is a Technical Writer at Altoros. She has been in the profession for more than two years and has an extensive experience in software-related user documentation. With her publications, she aspires to help people in the IT industry and outside it to find what\u2019s new, interesting and can be useful for them in their daily activities.","url":"https:\/\/www.altoros.com\/blog\/author\/alesia-bulanok\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/24948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/111"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=24948"}],"version-history":[{"count":128,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/24948\/revisions"}],"predecessor-version":[{"id":33240,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/24948\/revisions\/33240"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/25155"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=24948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=24948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=24948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}