{"id":24963,"date":"2017-05-04T09:40:08","date_gmt":"2017-05-04T13:40:08","guid":{"rendered":"https:\/\/sdtimes.com\/?p=24963"},"modified":"2017-05-04T09:40:08","modified_gmt":"2017-05-04T13:40:08","slug":"the-truth-about-microservices","status":"publish","type":"post","link":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/","title":{"rendered":"The truth about microservices"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">The buzz around microservices, according to a quote cited by Red Hat\u2019s senior manager John Frizelle, is much like teen dating. You don\u2019t know what you\u2019re getting into, but you know you want to do it anyway.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Microservices and the requisite architecture offer many benefits to organizations in terms of application flexibility and maintenance. But if you go into it blindly, you risk adding complexity to your IT organization that will create more challenges than microservices can spare you from.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Frizelle spoke yesterday at the second day of the Red Hat Summit in Boston, and listed eight challenges organizations face when moving to a microservices architecture.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The first is building a microservice. When one service goes through a build, it may need to trigger other builds. So it\u2019s important, he said, to identify dependencies between services. From a broader business perspective, it\u2019s important to know what versions of which services constitutes a release, so you\u2019re continuously providing value to your customers.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The next challenge is testing, he said. \u00a0For unit testing, there is no change between testing a microservice and testing a monolithic application. Again, dependencies need to be considered. But for testing a microservice, boundaries must be drawn around that service; otherwise you could be drawn into testing more of the application than you need to just to confirm the service does what it is built to do. Frizelle said to stand up the service before and the service after the service you\u2019re testing, and you can mock the rest of it. For testing the end-to-end system, it\u2019s important to stand up the entire system, so you can identify the root cause of problems. \u201cA fail in service D could be caused by a change in a service several hops away,\u201d he explained. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The next challenge is versioning. Frizelle suggested versioning public APIs and the APIs of the internal microservices. When versioning is in place, it\u2019s important to think about updating. \u201cIf you update a service with dependencies, you have to figure out how to maintain backwards compatibility,\u201d he said. One way to skirt that issue is to create multiple versions of services for different clients, but that can create management problems, he said. If you have, say 250 services with three versions of each service to accommodate different clients, you\u2019re actually managing 750 services. He suggested that organizations find consensus on the approach to take.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Then comes deployment. In systems with big numbers of services, the complexity requires automation. \u201cHumans will introduce human error in systems that are too complex,\u201d Frizelle said. The administrator, he said, \u201cwould quickly go mad.\u201d<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With microservices, it\u2019s important to determine how and when to roll out the services, and in what order, based on their dependencies. He suggested trying blue-green deployments, where 10 percent of users get the new version and 90 percent get the old. \u201cThen,\u201d he said, \u00a0\u201cyou can see what worked, and decide when to roll back or roll out.\u201d<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Logging, monitoring, debugging and connectivity present more issues, Frizelle continued. Logging, he pointed out, \u00a0\u201cis impossible to manage without centralization. You need to bring the logs of all services together to get a consolidated view of what\u2019s happening.\u201d One way of doing this is to use global request IDs. The ID travels with the request across all the hops of various services. An admin can simply put the request ID into a console to what happened with that service across its activity.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For monitoring, Frizelle said to consider distributed request tracing. \u201cIf a service is slow, or not responding, you need a visual view of the system to understand\u201d what is bottlenecking, where it\u2019s occurring , and why.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In large systems with hundreds of services, remote debugging is not an option, because you can\u2019t connect to hundreds of services at once, though Frizelle did say the tooling is evolving in this space. Organizations should look at which particular services are most critical, and use remote debugging on those.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One of underlying tenets of microservices is that each service runs in its own isolated process. If that is the case, how do they find each other to connect? Frizelle said that a form of service discovery is required, because \u201cyou don\u2019t want to hard code URLs\u201d to find services. Instead, he suggested using etcd, a centralized service discovery solution.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Another way of ensuring applications work as they should is to employ a circuit breaker, which will end a request if the response is taking too long, opening up that thread and reporting it to the log for remediation. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Frizelle urged organizations to not get caught up in the microservices hype. \u201cMake sure you understand why you\u2019re doing microservices, and make sure you\u2019re doing it for the right reasons.\u201d A move to microservices, he said, will likely require an agile transformation. \u201cMicro teams build microservices,\u201d he said.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Microservices don\u2019t eliminate complexity, he said. The eight challenges he listed are elements of the hidden complexities of creating a microservices architecture. To get the benefits of microservices, you need to take those challenges into account, and plan for them up front.<\/span><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>The buzz around microservices, according to a quote cited by Red Hat\u2019s senior manager John Frizelle, is much like teen dating. You don\u2019t know what you\u2019re getting into, but you know you want to do it anyway. Microservices and the requisite architecture offer many benefits to organizations in terms of application flexibility and maintenance. But  &hellip; <a class=\"read-more\" href=\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\">continue reading<\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":205,"featured_media":24964,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"cybocfi_hide_featured_image":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[132,1259,90,5246,220,2758,10778,6340],"coauthors":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The truth about microservices - SD Times<\/title>\n<meta name=\"description\" content=\"Eight challenges organizations face when moving to a microservices architecture\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The truth about microservices - SD Times\" \/>\n<meta property=\"og:description\" content=\"Eight challenges organizations face when moving to a microservices architecture\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\" \/>\n<meta property=\"og:site_name\" content=\"SD Times\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SDTimesD2\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-04T13:40:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"991\" \/>\n\t<meta property=\"og:image:height\" content=\"659\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Rubinstein\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sdtimes\" \/>\n<meta name=\"twitter:site\" content=\"@sdtimes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Rubinstein\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\"},\"author\":{\"name\":\"David Rubinstein\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/person\/c5979508a52529c65d558ca23cb64a4a\"},\"headline\":\"The truth about microservices\",\"datePublished\":\"2017-05-04T13:40:08+00:00\",\"dateModified\":\"2017-05-04T13:40:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\"},\"wordCount\":865,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/sdtimes.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png\",\"keywords\":[\"agile\",\"deployment\",\"developers\",\"microservices\",\"Red Hat\",\"Red Hat Summit\",\"software testingv\",\"Versioning\"],\"articleSection\":[\"Latest News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\",\"url\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\",\"name\":\"The truth about microservices - SD Times\",\"isPartOf\":{\"@id\":\"https:\/\/sdtimes.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png\",\"datePublished\":\"2017-05-04T13:40:08+00:00\",\"dateModified\":\"2017-05-04T13:40:08+00:00\",\"description\":\"Eight challenges organizations face when moving to a microservices architecture\",\"breadcrumb\":{\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage\",\"url\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png\",\"contentUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png\",\"width\":991,\"height\":659},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sdtimes.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The truth about microservices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sdtimes.com\/#website\",\"url\":\"https:\/\/sdtimes.com\/\",\"name\":\"SD Times\",\"description\":\"Software Development News\",\"publisher\":{\"@id\":\"https:\/\/sdtimes.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sdtimes.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/sdtimes.com\/#organization\",\"name\":\"SD Times\",\"url\":\"https:\/\/sdtimes.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png\",\"contentUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png\",\"width\":225,\"height\":90,\"caption\":\"SD Times\"},\"image\":{\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SDTimesD2\",\"https:\/\/x.com\/sdtimes\",\"https:\/\/www.linkedin.com\/company\/sdtimes\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/person\/c5979508a52529c65d558ca23cb64a4a\",\"name\":\"David Rubinstein\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/person\/image\/efe807ec0a4a29a22c1ba89dd5689fe2\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b3fdab44b2a65d11f93bdc301690be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b3fdab44b2a65d11f93bdc301690be3?s=96&d=mm&r=g\",\"caption\":\"David Rubinstein\"},\"description\":\"David Rubinstein is editor-in-chief of SD Times.\",\"url\":\"https:\/\/sdtimes.com\/author\/david-rubinstein\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The truth about microservices - SD Times","description":"Eight challenges organizations face when moving to a microservices architecture","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:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/","og_locale":"en_US","og_type":"article","og_title":"The truth about microservices - SD Times","og_description":"Eight challenges organizations face when moving to a microservices architecture","og_url":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/","og_site_name":"SD Times","article_publisher":"https:\/\/www.facebook.com\/SDTimesD2","article_published_time":"2017-05-04T13:40:08+00:00","og_image":[{"width":991,"height":659,"url":"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png","type":"image\/png"}],"author":"David Rubinstein","twitter_card":"summary_large_image","twitter_creator":"@sdtimes","twitter_site":"@sdtimes","twitter_misc":{"Written by":"David Rubinstein","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#article","isPartOf":{"@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/"},"author":{"name":"David Rubinstein","@id":"https:\/\/sdtimes.com\/#\/schema\/person\/c5979508a52529c65d558ca23cb64a4a"},"headline":"The truth about microservices","datePublished":"2017-05-04T13:40:08+00:00","dateModified":"2017-05-04T13:40:08+00:00","mainEntityOfPage":{"@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/"},"wordCount":865,"commentCount":0,"publisher":{"@id":"https:\/\/sdtimes.com\/#organization"},"image":{"@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png","keywords":["agile","deployment","developers","microservices","Red Hat","Red Hat Summit","software testingv","Versioning"],"articleSection":["Latest News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/","url":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/","name":"The truth about microservices - SD Times","isPartOf":{"@id":"https:\/\/sdtimes.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage"},"image":{"@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png","datePublished":"2017-05-04T13:40:08+00:00","dateModified":"2017-05-04T13:40:08+00:00","description":"Eight challenges organizations face when moving to a microservices architecture","breadcrumb":{"@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#primaryimage","url":"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png","contentUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2017\/05\/Screen-Shot-2017-05-04-at-9.39.08-AM.png","width":991,"height":659},{"@type":"BreadcrumbList","@id":"https:\/\/sdtimes.com\/agile\/the-truth-about-microservices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sdtimes.com\/"},{"@type":"ListItem","position":2,"name":"The truth about microservices"}]},{"@type":"WebSite","@id":"https:\/\/sdtimes.com\/#website","url":"https:\/\/sdtimes.com\/","name":"SD Times","description":"Software Development News","publisher":{"@id":"https:\/\/sdtimes.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sdtimes.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sdtimes.com\/#organization","name":"SD Times","url":"https:\/\/sdtimes.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/","url":"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png","contentUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png","width":225,"height":90,"caption":"SD Times"},"image":{"@id":"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SDTimesD2","https:\/\/x.com\/sdtimes","https:\/\/www.linkedin.com\/company\/sdtimes\/"]},{"@type":"Person","@id":"https:\/\/sdtimes.com\/#\/schema\/person\/c5979508a52529c65d558ca23cb64a4a","name":"David Rubinstein","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sdtimes.com\/#\/schema\/person\/image\/efe807ec0a4a29a22c1ba89dd5689fe2","url":"https:\/\/secure.gravatar.com\/avatar\/1b3fdab44b2a65d11f93bdc301690be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b3fdab44b2a65d11f93bdc301690be3?s=96&d=mm&r=g","caption":"David Rubinstein"},"description":"David Rubinstein is editor-in-chief of SD Times.","url":"https:\/\/sdtimes.com\/author\/david-rubinstein\/"}]}},"_links":{"self":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts\/24963"}],"collection":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/users\/205"}],"replies":[{"embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/comments?post=24963"}],"version-history":[{"count":1,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts\/24963\/revisions"}],"predecessor-version":[{"id":24965,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts\/24963\/revisions\/24965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/media\/24964"}],"wp:attachment":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/media?parent=24963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/categories?post=24963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/tags?post=24963"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/coauthors?post=24963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}