{"id":18118,"date":"2020-09-03T15:53:57","date_gmt":"2020-09-03T15:53:57","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=18118"},"modified":"2020-09-04T04:33:05","modified_gmt":"2020-09-04T04:33:05","slug":"maintenance-and-advantages-of-microservices","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/maintenance-and-advantages-of-microservices\/","title":{"rendered":"Maintenance and Advantages of Microservices"},"content":{"rendered":"\n<p>It makes it possible to onboard new developers faster because they have far less to learn to be an effective end.<br>It minimizes the risk of rather than just a few scattered individuals, has concentrated expertise.<br>if you need expertise in a particular area, it&#8217;s easy to find for a microservice team working in this way. The team&#8217;s effectiveness is boosted because<br>they can make the isolated architectural decisions that make the most sense in their narrowed context.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-1024x1024.png\" alt=\"\" class=\"wp-image-18119\" width=\"378\" height=\"378\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-1024x1024.png 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-300x300.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-150x150.png 150w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-768x768.png 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-1536x1536.png 1536w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-2048x2048.png 2048w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-250x250.png 250w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/maintaing-80x80.png 80w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<p><br>Often in a monolithic codebase, there&#8217;s pressure to make the patterns and abstractions consistent across the entire code base,<br>forcing a one size fits all mentality that may not be appropriate By narrowing a team&#8217;s focus. They can make decisions<br>that make sense for them and isolate the impact of those decisions. There&#8217;s no pressure to force solutions to each unique<br>problem into existing patterns. And there&#8217;s no pressure to consider if the next new technique might need to become the new right way for everything.<\/p>\n\n\n\n<p>Teams working in this wake and self-organized making the decisions that make the most sense for them without needing to acquire<br>permission or buy-in from the larger organization. Also, isolating teams create efficiency in the way that each team manages<br>their work. Some teams may maintain micro Service with strict performance constraints when their service breaks. It&#8217;s an emergency.<br>In the global Mantex case, all 80 developers are exposed to those kinds of emergencies because the entire application is centrally managed.<\/p>\n\n\n\n<p>The unfortunate part of that is that those developers are exposed to those emergencies, even if they don&#8217;t have the skils, experience, or<br>context to help address the problem in those emergencies. Fast response time is crucial in other areas of global Mantex. Much of<br>the work requires a deep understanding of data and analytics. We&#8217;re analyzing images for inappropriate content, using natural language processing<br>to identify potentially threatening speech and tuning the advertising relevance algorithms require careful analysis and a slow, methodical workflow<\/p>\n\n\n\n<p>The firefighting way of working in the former case on the left, where quick response time is more important than having the best answers.<br>is very different than the deep analysis workflow of the ladder on the right, where it&#8217;s appropriate even preferred to take extra time to get.<br>The best answer is possible. By isolating teams and their respective domains of responsibility, those teams can self organize with the<br>appropriate processes and tools for their respective styles of work. And if your organization can become more effective<br>when organizing their software, development efforts into microservice is first and foremost. This creates an organization where much of the<br>decision making can be decentralized. The impact of many decisions can be isolated to a single microservice. And so it makes sense for<br>that decision making authority to be delegated to the team that is responsible for the microservice. By decentralizing decision making, it<br>prevents a single person or group of people from becoming a bottleneck.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/microservices-logical.png\" alt=\"\" class=\"wp-image-18120\" width=\"544\" height=\"219\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/microservices-logical.png 987w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/microservices-logical-300x121.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/09\/microservices-logical-768x310.png 768w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><\/figure>\n\n\n\n<p>Of course, some decisions have border scope in this case, those kinds of decisions should generally correlate to create a simple decision. Heuristic, if a decision requires changes to<br>microservice, is API or might require a new microservice, then it requires architectural oversight and guidance. And relationships between micro Service&#8217;s need to weigh in on the<br>decision. And finally organizing around Micro Servicej&#8217;s can boost productivity by emphasizing an environment that creates intrinsic<br>motivation. In his book, Dr author Daniel Pink describes three elements that are essential in creating motivation in knowledge work like software<br>development<\/p>\n\n\n\n<p>The first element of Autonomy describes having control over how you do your work<br>The second purpose is the idea that your work is meaningful and has intrinsic value<br>to you. And third mastery, that is, you achieve expertise in your work. Organizing around MicroService allows us to amplify two of these three elements of<br>motivation by delegating decision making authority. We create autonomy, and by concentrating expertise, we create<br>mastery. In contrast, developing software in a monolith can often sabotage autonomy and mastery, which can have catastrophic<br>effects on motivation and productivity.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Read also:<br><a href=\"https:\/\/www.devopsschool.com\/blog\/advantages-of-microservices\/\">Advantages of Microservices<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>It makes it possible to onboard new developers faster because they have far less to learn to be an effective end.It minimizes the risk of rather than just a few&#8230; <\/p>\n","protected":false},"author":14,"featured_media":18103,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5124],"tags":[6389],"class_list":["post-18118","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microservices","tag-microservi"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/18118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=18118"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/18118\/revisions"}],"predecessor-version":[{"id":18137,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/18118\/revisions\/18137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/18103"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=18118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=18118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=18118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}