{"id":3011,"date":"2019-12-03T08:09:42","date_gmt":"2019-12-03T13:09:42","guid":{"rendered":"http:\/\/www.soul-repairs.com\/blog\/?p=3011"},"modified":"2019-11-10T00:22:27","modified_gmt":"2019-11-10T05:22:27","slug":"master-data-management-rant","status":"publish","type":"post","link":"https:\/\/soul-repairs.com\/blog\/2019\/12\/03\/master-data-management-rant\/","title":{"rendered":"Master Data Management Rant"},"content":{"rendered":"<blockquote>\n<h3><em>Foreword by Laine:<\/em><\/h3>\n<p>If you&#8217;ll recall our post entitled, <a href=\"https:\/\/soul-repairs.com\/blog\/2019\/03\/26\/go-a-grumpy-old-developers-review\/\">Go: a Grumpy Old Developer&#8217;s Review<\/a>, you might remember that sometimes Josh goes on <strong>legitimately amazing<\/strong> rants about technology and architecture. HERE IS ONE, YOU ARE ALL WELCOME.<\/p><\/blockquote>\n<hr \/>\n<h2>What <em>is<\/em> Master Data Management?<\/h2>\n<blockquote><p>&#8220;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Master_data_management\">Master data management<\/a>\u00a0(<b>MDM<\/b>) is a method used to define and manage the critical data of an\u00a0<a title=\"Organization\" href=\"https:\/\/en.wikipedia.org\/wiki\/Organization\">organization<\/a>\u00a0to provide, with\u00a0<a title=\"Data integration\" href=\"https:\/\/en.wikipedia.org\/wiki\/Data_integration\">data integration<\/a>, a single point of reference.&#8221;<\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">In other words, MDM tries to create a standard database schema loaded with uniform, processed, &#8220;cleaned&#8221; data. The data is easy to query, analyze, and use for all application operations. Sounds great!<\/span><\/p>\n<p>Most business have a lot of data &#8211; and if they could access that data accurately, reliably, and rapidly, it would give them a lot of insight into what their world looks like and how it&#8217;s changing. They could unify their understanding of themselves, their customers, and their partners, and become more agile (agile as in, &#8220;able to change directions quickly in response to changing conditions,&#8221; not <a href=\"https:\/\/en.wikipedia.org\/wiki\/Agile_software_development\">Agile<\/a> as in the development methodology).<\/p>\n<p>MDM is sold as a silver bullet that will enable this master view of data, this easy querying, and this agility. But I haven&#8217;t seen that actually <em>happen<\/em> very often.<\/p>\n<h2>MDM <em>Kills<\/em> Agility<\/h2>\n<p>MDM is a tool of consistency &#8211; and consistency forces things to exist in specific ways. The real problem with MDM is then reflected when you consider that the data of a business is like the <em>mind<\/em> of the business. Imagine if your mind could no longer consider something to be valid input unless it had seen it before &#8211; as in, you could understand when you found a new variety of orange, but if you had never seen a starfruit before, you literally <em>could not comprehend it<\/em>. As one of my colleagues said,<\/p>\n<blockquote><p><span style=\"font-weight: 400;\">&#8220;Building a gold data model is <\/span><span style=\"font-weight: 400;\">like <strong>nailing jello to a tree<\/strong>.&#8221;<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">MDM in its traditional, monolith definition, <strong>kills <\/strong>agility<em><strong>. <\/strong><\/em><\/span><span style=\"font-weight: 400;\">Basically, it\u2019s building a perfect utopia in which all changes have to be agreed on by everyone, and no one can move in until it\u2019s perfect, and then\u00a0<\/span><em>no one can change ever again. <\/em><span style=\"font-weight: 400;\">Our job as technologists is <strong>not<\/strong> to stagnate &#8211; it&#8217;s to \u201cdeliver business value at the speed of business&#8221; (<a href=\"https:\/\/about.gitlab.com\/blog\/2019\/04\/23\/align-business-strategy-and-app-delivery\/\">Gitlab<\/a>). Businesses need to move <em>fast<\/em>, and to do that they must be able to adapt &#8211; and if IT systems don&#8217;t adapt, then IT systems <em>slow the business down<\/em>.\u00a0<\/span><\/p>\n<p>I&#8217;ve come across multi-year MDM projects full of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Extract,_transform,_load\">ETL<\/a> and data standardization meetings &#8211; and the business is finding data points that matter faster than they can be standardized. An MDM initiative that can&#8217;t move as fast as every other part of the business just slows it down, eats resources, and eventual dies a dusty death of forgottenness.<\/p>\n<h2>A Possible Solution: Jump-Start with a Purchased Model!<\/h2>\n<p>Often companies will sell a partial model of the business&#8217;s data that can be adopted more rapidly, which is typically &#8220;industry-standard&#8221; data &#8211; with claims that this will speed time to market for a MDM system. But it doesn&#8217;t.<\/p>\n<p><span style=\"font-weight: 400;\">Every organization sees the world slightly differently. This is a good thing.\u00a0 <\/span><span style=\"font-weight: 400;\">Individual divisions and teams within each organization will <em>also<\/em> each see the world differently. <\/span><span style=\"font-weight: 400;\">These different views mean different <em>schemas<\/em>.\u00a0<\/span><\/p>\n<blockquote><p><span style=\"font-weight: 400;\">Trying to fit everyone into one data model is like trying to make everyone speak exactly the same English, with no slang, no variations in tone or phrasing, and <strong>definitely no new words, connections, or ideas.<\/strong><\/span><\/p><\/blockquote>\n<p>The perspective of a business, or any group, changes as the group learns and grows. Locking yourself into an old perception, or attempting to standardize via a process that takes years, is <em>intentionally slowing down your business&#8217;s rate of adaptation and growth<\/em>.<\/p>\n<p><span style=\"font-weight: 400;\">Also, it sets you up for years of arguments between teams that <em>their<\/em> view of the data &#8211; and by extension the world &#8211; is correct.<\/span><\/p>\n<h2>A Recommendation: Agility in Data <em>Access <\/em>Models, Not Data Storage Models<\/h2>\n<p>The need to have some kind of standardization so that a business&#8217;s data is <em>useful<\/em> is real. What we <em>have\u00a0<\/em>seen work is more of a blended approach: spend 20% of the effort on making the data sane, and 80% of the effort on providing clear, accurate, scalable data access via <a href=\"https:\/\/en.wikipedia.org\/wiki\/Application_programming_interface\">APIs<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/In-memory_database\">in-memory databases<\/a>, and occasionally <a href=\"https:\/\/en.wikipedia.org\/wiki\/Operational_data_store\">Operational Data Stores<\/a> (ODS). You can click on the links to learn more about each of those tools\/approaches, but the basic idea is to leave the data where it is, in the format that makes sense for the team in charge of it, but provides <strong>access<\/strong> and <strong>views<\/strong> that make the data usable.<\/p>\n<blockquote><p>Leave the data where it is, in the format that makes sense for the team in charge of it, but provides <strong>access<\/strong> and <strong>views<\/strong> that make the data usable.<\/p><\/blockquote>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Microservices\">Microservices<\/a> with versioned API&#8217;s,\u00a0backed by legacy databases, implemented via <a href=\"https:\/\/en.wikipedia.org\/wiki\/Request%E2%80%93response\">request\/response<\/a> or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Publish%E2%80%93subscribe_pattern\">pub\/sub<\/a> application communication models, are the <em><strong>easiest application EVAR<\/strong>. <\/em>It&#8217;s simple to spin them up and scale them using containers and OpenShift.\u00a0 Using this approach, you can provide multiple data views of the data, and add more as new connections and ways of thinking appear.<\/p>\n<p>If you need to do your own analytics or heavy-duty data processing\/lifting, you can use a temporary or semi-permanent (but <em>not the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Single_source_of_truth\">source of truth<\/a>)\u00a0<\/em>data store such as an in-memory database or an ODS. Again, these are faster to set up and and more importantly faster to <em>change<\/em> than a legacy system of record, and they provide a nice balance between the speed of APIs and the performance of an enterprise database.<\/p>\n<h2>Conclusion: MDMs Generally Suck (Relative to Alternatives)<\/h2>\n<p>I would love to be wrong. I&#8217;d love to hear some new innovation that makes MDM make sense. But I&#8217;ve seen too many MDM initiatives rust out and die, and I&#8217;ve seen way too many API projects succeed wildly.<\/p>\n<blockquote><p>Don&#8217;t MDM, API.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Foreword by Laine: If you&#8217;ll recall our post entitled, Go: a Grumpy Old Developer&#8217;s Review, you might remember that sometimes Josh goes on legitimately amazing rants about technology and architecture. HERE IS ONE, YOU ARE ALL WELCOME. What is Master Data Management? &#8220;Master data management\u00a0(MDM) is a method used to define and manage the critical &hellip; <\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/soul-repairs.com\/blog\/2019\/12\/03\/master-data-management-rant\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[41,4],"tags":[132,171,170,169,174,168,173,44,172,110,83],"wf_post_folders":[],"coauthors":[11],"class_list":["post-3011","post","type-post","status-publish","format-standard","hentry","category-processes","category-technology","tag-architecture","tag-data-management","tag-database","tag-etl","tag-macroservices","tag-mdm","tag-microservices","tag-openshift","tag-schema-management","tag-tech-debt","tag-technology-tldr"],"_links":{"self":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts\/3011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/comments?post=3011"}],"version-history":[{"count":14,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts\/3011\/revisions"}],"predecessor-version":[{"id":3189,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/posts\/3011\/revisions\/3189"}],"wp:attachment":[{"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/media?parent=3011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/categories?post=3011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/tags?post=3011"},{"taxonomy":"wf_post_folders","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/wf_post_folders?post=3011"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/soul-repairs.com\/blog\/wp-json\/wp\/v2\/coauthors?post=3011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}