Beyond microservices; Software architecture driven by machine learning

It's not a question of if, it's a question of when and how AI and machine learning will change our programming and software development paradigms.

Today's coding models are based on data storage, business logic, services, UX, and presentation. A full stack developer elects to build a three-tiered web architecture using an MVC framework. An IoT application calls for an event-driven architecture with services processing events and broadcasting state changes. 

These two architecture paradigms converge with microservice architectures where user interfaces are just one type of interaction node fulfilling high level functions by interfacing with many services.

Architecture today driven by data, rules, and experience


Our architectures today largely reflect two dominant interaction models. The primary one is driven by users navigating the physical and digital world through devices like mobile phones, voice assistants, wearables, and occasionally a laptop. The other interaction mode facilitates machine to machine interactions and is largely dominated by APIs, services, buses, data streaming, and choices between edge versus cloud infrastructure. 

Both these models typically interface with a centralized intelligence that runs explicitly defined business rules and machine learning models on larger, faster, and more complex data sets.

To code today means identifying the business rules, defining and understanding the underlying data model, crafting reusable services, and designing user experiences.

When machine learning drives the experience


The next generation coding paradigms will look a lot different. When machine learning reaches a critical mass in capability, skill, and connectivity, out coding models will reflect this intelligence. It may look something like: 

  • Programmers fit a business need into an existing machine learning model. They select from a catalog of available algorithms with defined input, processing, and decision attributes.
  • A parallel sequence of one or more machine learning algorithms defines multiple result vectors, or results of interest for a downstream person or system to process. 
  • The machine learning algorithms then selects the destination and formats for downstream interactions. In other words, machine learning decides who and how should the result vector be communicated. If it's a person, it will decide who and it will select the user interface/experience.   
Meanwhile, a second group of learning engineers will iterate to improve the accuracy of models and develop new ones.

This changes our thinking considerably. Machines select the user experience; it's no longer prescriptive and defined up front by agile product owners and UX designers. Microservices evolve to micromodels that are orchestrated to support higher level business functions. Orchestration is also machine driven, so that events seem to self-select how they are manifested.

We're going to have to think a lot differently in this paradigm!

No comments:

Post a Comment

Comments on this blog are moderated and we do not accept comments that have links to other websites.

Share