{"id":15013,"date":"2017-07-13T13:52:44","date_gmt":"2017-07-13T11:52:44","guid":{"rendered":"https:\/\/blog.trifork.com\/?p=15013"},"modified":"2017-07-13T13:52:44","modified_gmt":"2017-07-13T11:52:44","slug":"heterogeneous-microservices","status":"publish","type":"post","link":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/","title":{"rendered":"Heterogeneous microservices"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15044 size-large\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg\" alt=\"\" width=\"1024\" height=\"659\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg 1024w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-300x193.jpg 300w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-768x494.jpg 768w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1.jpg 1284w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h1>Heterogeneous microservices<\/h1>\n<p>Microservices architecture is increasingly popular nowadays. One of the promises is flexibility and easier working in larger organizations by reducing the amount of communication and coordination between teams. The thinking is, teams have their own service(s) and don&#8217;t depend on other teams, meaning they can work independently, thereby reducing coordination efforts.<\/p>\n<p>Especially with multiple teams and multiple services per team, this can mean there are quite a few services with quite different usage. Different teams can have different technology preferences, for example because they are more familiar with the one or the other. Similar different usage can mean quite different requirements, which might be easier to fulfill with the one or the other technology.<\/p>\n<p>The question I&#8217;m going to discuss in this blog post, how free or constrained should technology choices be in such an environment?<\/p>\n<h3>Spaghetti freedom<\/h3>\n<p>If you&#8217;ve ever worked in a hectic startup environment where quickly building features is more important than clean sustainable code, you probably know how that ends. People just build things and it all becomes a big spaghetti mess. There is lots of technical debt..<\/p>\n<p>The combination of freedom and high pressure means choices are short-term focussed and there is little attention to keeping things tidy.<\/p>\n<h3>Over-standardization<\/h3>\n<p>Large organizations can have the opposite policy, any project or change need to be approved by multiple boards, architects and committees. There are strict rules about exactly what technologies should be used.<\/p>\n<p>This can mean there might be some shoe-horning to implement things with a sub-optimal technology, or over engineering because complex technology is used for simple problems.<\/p>\n<p>This can also be de-motivating to engineers, as they&#8217;re not allowed to pick their favorite technology.<\/p>\n<h3>Inspire!<\/h3>\n<p>I think the right approach is a middle ground. Some standardization and preferred languages, frameworks and solutions are very helpfull to promote software being built the same way. This helps engineers working on new services, for example when switching teams or when onboarding new people.<\/p>\n<p>I think this preferred way of working should evolve also and be open for discussion. New insights or new ways of building can be integrated if they prove beneficial.<\/p>\n<p>In my opinion such a preferred approach should serve as a starting point for teams building new services and be open for discussion. Teams should try and build software in a common way, but when needed it should be fine to diverge and do things differently.<\/p>\n<h3>Concluding<\/h3>\n<p>I&#8217;ve shared my opinion &#8211; how can technology be standardized in larger microservice environments. How does this work in your company? What&#8217;s your insight on this topic?<\/p>\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/bit.ly\/3BAo305\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1024x256.png\" alt=\"\" class=\"wp-image-20303\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1024x256.png 1024w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-300x75.png 300w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-768x192.png 768w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1536x384.png 1536w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-2048x512.png 2048w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1920x480.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Heterogeneous microservices Microservices architecture is increasingly popular nowadays. One of the promises is flexibility and easier working in larger organizations by reducing the amount of communication and coordination between teams. The thinking is, teams have their own service(s) and don&#8217;t depend on other teams, meaning they can work independently, thereby reducing coordination efforts. Especially with [&hellip;]<\/p>\n","protected":false},"author":39,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[98,10],"tags":[107],"class_list":["post-15013","post","type-post","status-publish","format-standard","hentry","category-microservices","category-development","tag-microservices"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Heterogeneous microservices - Trifork Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heterogeneous microservices - Trifork Blog\" \/>\n<meta property=\"og:description\" content=\"Heterogeneous microservices Microservices architecture is increasingly popular nowadays. One of the promises is flexibility and easier working in larger organizations by reducing the amount of communication and coordination between teams. The thinking is, teams have their own service(s) and don&#8217;t depend on other teams, meaning they can work independently, thereby reducing coordination efforts. Especially with [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/\" \/>\n<meta property=\"og:site_name\" content=\"Trifork Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-13T11:52:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg\" \/>\n<meta name=\"author\" content=\"Eike Dehling\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eike Dehling\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/\",\"url\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/\",\"name\":\"Heterogeneous microservices - Trifork Blog\",\"isPartOf\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg\",\"datePublished\":\"2017-07-13T11:52:44+00:00\",\"author\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/9ae4ae9422897fa224623ac55fbf4dd1\"},\"breadcrumb\":{\"@id\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#primaryimage\",\"url\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg\",\"contentUrl\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/trifork.nl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Heterogeneous microservices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/trifork.nl\/blog\/#website\",\"url\":\"https:\/\/trifork.nl\/blog\/\",\"name\":\"Trifork Blog\",\"description\":\"Keep updated on the technical solutions Trifork is working on!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/trifork.nl\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/9ae4ae9422897fa224623ac55fbf4dd1\",\"name\":\"Eike Dehling\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca41eff3f24ff02ae45e1d793c7f5c6c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca41eff3f24ff02ae45e1d793c7f5c6c?s=96&d=mm&r=g\",\"caption\":\"Eike Dehling\"},\"sameAs\":[\"http:\/\/trifork.com\"],\"url\":\"https:\/\/trifork.nl\/blog\/author\/eiked\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Heterogeneous microservices - Trifork Blog","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:\/\/trifork.nl\/blog\/heterogeneous-microservices\/","og_locale":"en_US","og_type":"article","og_title":"Heterogeneous microservices - Trifork Blog","og_description":"Heterogeneous microservices Microservices architecture is increasingly popular nowadays. One of the promises is flexibility and easier working in larger organizations by reducing the amount of communication and coordination between teams. The thinking is, teams have their own service(s) and don&#8217;t depend on other teams, meaning they can work independently, thereby reducing coordination efforts. Especially with [&hellip;]","og_url":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/","og_site_name":"Trifork Blog","article_published_time":"2017-07-13T11:52:44+00:00","og_image":[{"url":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg","type":"","width":"","height":""}],"author":"Eike Dehling","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Eike Dehling","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/","url":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/","name":"Heterogeneous microservices - Trifork Blog","isPartOf":{"@id":"https:\/\/trifork.nl\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#primaryimage"},"image":{"@id":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg","datePublished":"2017-07-13T11:52:44+00:00","author":{"@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/9ae4ae9422897fa224623ac55fbf4dd1"},"breadcrumb":{"@id":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#primaryimage","url":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg","contentUrl":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2017\/07\/ill_site_netwerk_Trifork-1-1024x659.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/trifork.nl\/blog\/heterogeneous-microservices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/trifork.nl\/blog\/"},{"@type":"ListItem","position":2,"name":"Heterogeneous microservices"}]},{"@type":"WebSite","@id":"https:\/\/trifork.nl\/blog\/#website","url":"https:\/\/trifork.nl\/blog\/","name":"Trifork Blog","description":"Keep updated on the technical solutions Trifork is working on!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/trifork.nl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/9ae4ae9422897fa224623ac55fbf4dd1","name":"Eike Dehling","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca41eff3f24ff02ae45e1d793c7f5c6c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca41eff3f24ff02ae45e1d793c7f5c6c?s=96&d=mm&r=g","caption":"Eike Dehling"},"sameAs":["http:\/\/trifork.com"],"url":"https:\/\/trifork.nl\/blog\/author\/eiked\/"}]}},"_links":{"self":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/15013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/comments?post=15013"}],"version-history":[{"count":0,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/15013\/revisions"}],"wp:attachment":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/media?parent=15013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/categories?post=15013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/tags?post=15013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}