Tag: Technology TLDR

Master Data Management Rant

Master Data Management Rant

Foreword by Laine:

If you’ll recall our post entitled, Go: a Grumpy Old Developer’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?

Master data management (MDM) is a method used to define and manage the critical data of an organization to provide, with data integration, a single point of reference.”

In other words, MDM tries to create a standard database schema loaded with uniform, processed, “cleaned” data. The data is easy to query, analyze, and use for all application operations. Sounds great!

Most business have a lot of data – 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’s changing. They could unify their understanding of themselves, their customers, and their partners, and become more agile (agile as in, “able to change directions quickly in response to changing conditions,” not Agile as in the development methodology).

MDM is sold as a silver bullet that will enable this master view of data, this easy querying, and this agility. But I haven’t seen that actually happen very often.

MDM Kills Agility

MDM is a tool of consistency – 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 mind of the business. Imagine if your mind could no longer consider something to be valid input unless it had seen it before – as in, you could understand when you found a new variety of orange, but if you had never seen a starfruit before, you literally could not comprehend it. As one of my colleagues said,

“Building a gold data model is like nailing jello to a tree.”

MDM in its traditional, monolith definition, kills agility. Basically, it’s building a perfect utopia in which all changes have to be agreed on by everyone, and no one can move in until it’s perfect, and then no one can change ever again. Our job as technologists is not to stagnate – it’s to “deliver business value at the speed of business” (Gitlab). Businesses need to move fast, and to do that they must be able to adapt – and if IT systems don’t adapt, then IT systems slow the business down

I’ve come across multi-year MDM projects full of ETL and data standardization meetings – and the business is finding data points that matter faster than they can be standardized. An MDM initiative that can’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.

A Possible Solution: Jump-Start with a Purchased Model!

Often companies will sell a partial model of the business’s data that can be adopted more rapidly, which is typically “industry-standard” data – with claims that this will speed time to market for a MDM system. But it doesn’t.

Every organization sees the world slightly differently. This is a good thing.  Individual divisions and teams within each organization will also each see the world differently. These different views mean different schemas

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 definitely no new words, connections, or ideas.

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 intentionally slowing down your business’s rate of adaptation and growth.

Also, it sets you up for years of arguments between teams that their view of the data – and by extension the world – is correct.

A Recommendation: Agility in Data Access Models, Not Data Storage Models

The need to have some kind of standardization so that a business’s data is useful is real. What we have 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 APIs, in-memory databases, and occasionally Operational Data Stores (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 access and views that make the data usable.

Leave the data where it is, in the format that makes sense for the team in charge of it, but provides access and views that make the data usable.

Microservices with versioned API’s, backed by legacy databases, implemented via request/response or pub/sub application communication models, are the easiest application EVAR. It’s simple to spin them up and scale them using containers and OpenShift.  Using this approach, you can provide multiple data views of the data, and add more as new connections and ways of thinking appear.

If you need to do your own analytics or heavy-duty data processing/lifting, you can use a temporary or semi-permanent (but not the source of truthdata store such as an in-memory database or an ODS. Again, these are faster to set up and and more importantly faster to change than a legacy system of record, and they provide a nice balance between the speed of APIs and the performance of an enterprise database.

Conclusion: MDMs Generally Suck (Relative to Alternatives)

I would love to be wrong. I’d love to hear some new innovation that makes MDM make sense. But I’ve seen too many MDM initiatives rust out and die, and I’ve seen way too many API projects succeed wildly.

Don’t MDM, API.

OpenShift 4 Migration: A sample path

OpenShift 4 Migration: A sample path

The Problem

Moving stuff between Kubernetes clusters can be a pain in the butt. You have to do this when:

  • Migrating between container platforms, such as EKS -> AKS
  • Upgrading clusters when you want to upgrade in parallel (move everything from old to new) as opposed to upgrading in-place (update one cluster from old to new). This would be something like what we’ll talk about in a minute, going from OpenShift 3.x to OpenShift 4.x
  • Moving work/applications between clusters, e.g. two clusters in different datacenters

Migrating work between clusters requires some thought and planning, and good solid processes. Specifically, the migration from OpenShift 3.x to OpenShift 4.x requires a parallel upgrade, because there is no in-place upgrade available for all of the new goodies in RHEL CoreOS (the underlying infrastructure of the cluster). OpenShift 4.2 released recently, so we thought it would be good timing to put our migration thoughts down here. However, the advice below is generally good for any Kubernetes cluster parallel upgrade or other migration.

Read More Read More

Quick Hits: Coolest New Stuff In OpenShift 4

Quick Hits: Coolest New Stuff In OpenShift 4

We talked in a previous post about neat stuff that was coming up in OpenShift. We wanted to follow up now that more information is available and 4.1 is GA and quickly break down some of the neatest stuff.

OpenShift 4 is the major version that will bring Kubernetes to being the standard platform: it provides features that let the majority of enterprises build and run the majority of their applications on an open, agile, future-ready platform.

OpenShift 4 crosses the chasm from early adopters to the standard platform for Kubernetes.

Istio (Service Mesh)

What is it: Networking upgrade for OpenShift Applications

Status: Tech Preview as of 4.1

How does it work: Injects a container sidecar to monitor (mostly to say who’s calling who, and how much), secure, and manage traffic. 

Key Features:

  • Transaction tracing, traffic graphs, full-transaction performance monitoring
  • Traffic (outing) control 
  • Rate limiting, circuit breaking

Big Talking Point: OpenShift Service Mesh makes managing all of the services you’re building visual and clear
Business Use Case: Enterprises looking to get visibility into their microservices, AppDynamics and Dynatrace customers.

Red Hat Code Ready

What is it: Containerized Application Development Environment. Tagline is  “cloud-native development.”

Key Features:

  • Single-Click Modern IDE
  • Tight integration with OpenShift
  • Debugging containers on OpenShift is a nice experience

Business Use Case:  Enterprises with poor developer IDES will appreciate CodeReady.

Competitors:  IntelliJ and VSCode

FaaS 

What is it: FaaS/Serverless is an even easier, and more restricted architecture than containers or PaaS. 

Serverless is an alternative to containers. Applications that would be a good fit in a simple container are an easy fit for serverless.

 

Knative

What is it: Kubernetes-based serverless “Application Easy Button” – just write code, forget about packaging. We talked about it in more detail here.

Key Features:

  • An open standard for serverless.
  • Build, scale, and trigger applications automatically
    Big Talking Point: Openshift 4’s Knative solution makes building, running, scaling, and starting applications even simpler.
    Business Use Case: Enterprises looking to turn their long-running (overnight) batch streams into real-time integrations should use Knative and AMQ streams on OCP

Competitors: AWS Lambda, Azure Serverless, Google Cloud Functions. K-Native provides this functionality without vendor lock-in from a single cloud provider.

The Operator Framework

What is it: intelligent automation that can manage an application by defining proper state and automate complicated application operations that using best practices.

Key Features:

  • Kubernetes-native application management
  • Choice of automation: Go, Ansible, Helm
  • Packaged with a Kubernetes application

Business Use Case: managing stateful applications like Kafka and databases, however new use cases show up all the time, such as managing the kubernetes cluster itself (Machine Operators)

Big Talking Point: Operators make managing complex applications in Kubernetes much easier, turning industry-standard practices into automation.

KubeVirt

What is it: Kubernetes-native virtualization. Run VMs on Kubernetes. Basically, this is VMWare for K8s.

How does it work: leverage open source virtualization technology inside a container to run VMs. 

Features: 

  • Run Windows or Linux containers on OpenShift
  • Manage complicated, hard-to-containerize applications alongside the  containerized applications that integrate with them

Business Use Case: ditch proprietary VM platforms and run you containers and VMs on one standard, open platform

What else is neat in OpenShift 4

Cluster Admin is so much easier: 

  • Fully-automated cluster spin-up: AWS install in less than an hour
  • Push-button updates
  • Immutable Infrastructure: RHEL CoreOS are immutable and extremely strong from a security standpoint
  • Nodes as pets: automatic scaling and healing
  • Cluster can automatically add nodes as load increases

Stuff We’d Like to Get Deeper With

Theres’s a lot more coming with OpenShift that we’d like to get hands-on time with:

  • Windows Containers
  • OpenShift Cluster Management at cloud.redhat.com
  • Universal Base Image: https://www.redhat.com/en/blog/introducing-red-hat-universal-base-image
  • Quay and Clair

OpenShift: Still the Best at What it Always was Best At

 

 

 


OpenShift is still the platform we know and love.

  • Secure Kubernetes:  SELinux preventing security problems like the runc vulnerability
  • Fully backed by Red hat, which will be even more stable and well-funded after the IBM acquisition
  • Enabling Digital Transformation: Containers are still the best way to transform IT, and Kubernetes is the best way to enable DevOps and Continuous Delivery
  • Open Hybrid Strategy: Vendor Lock-in sucks. Open standards and great partnerships.

It was recently announced that more than 1000 enterprises across all industries are running OpenShift. 

Go: a Grumpy Old Developer’s Review

Go: a Grumpy Old Developer’s Review

An artist’s rendition of Josh.

I first started programming in C, about twenty years ago. I pretty regularly call myself a grumpy old man – I always thought that describing myself as “grumpy” was legit, but that the “old” was a joke.

It turns out that twenty years is a long time. 

I’ve got my copy of K&R (if you don’t what K&R is [like Laine didn’t, who is apparently neither grumpy NOR old…], sigh/get off my lawn, look up the authors), and it’s still my favorite programming book. I still love the simplicity of the C language. I’ve written in languages that do garbage collection and languages that don’t even bother to mention that they do garbage collection for you. I’ve seen so many different kinds of inheritance it makes me mildly disturbed to think about it.

I’ve learned JEE, Spring, and Spring Boot, and I’ve wandered around other people’s Python code. But I still have my love for C. It’s easy for me to read, easy for me to follow, and unless you’re doing something dumb with pointers, it’s pretty easy to figure out what you’re doing, and what you’re doing wrong.

Read More Read More

Kubernetes: What is it, and why do I care?

Kubernetes: What is it, and why do I care?

So you’re a Java/C++/web developer and you’ve heard about all of these “cloud native” technologies, and containers, and you’re wondering “excuse me, what is a Kubernetes please, and why do I care?”

…or maybe you’re a general technologist – idly curious enough to wonder what all the fuss is about but not super interested in digging into the guts of the thing.

…or maybe you tend to understand technology more big-picture than detail and you wish someone would just tl;dr it for you.

Well…welcome to the first of our Technology TLDR posts! Kubernetes, you’re up.

Read More Read More