Most enterprise IT apps are very low utilization, consisting of spiky workloads, difficult deployment strategies, complex business logic and workflows embedded into a maze of API controllers, middleware functions and model implementation classes. Furthermore, the implementation of most IT software development is EXPENSIVE, both interns of total cost, time to production, ongoing maintenance and IT infrastructure. Most enterprise software project are still planned, developed and maintained in this manner.
Full custom design entailing months of up-front work
Custom components requiring custom coding, debugging & integration
Long decision cycles
But what if it was possible to implement all of this at a fraction of the cost to what has been described above?
Building blocks assembly
Terms of hours of work, not days
Utilization of standard and reliable components, which scale and are well understood and interoperable
Adjust requirements to fit available patterns available, not the other way around
Managed microservices are the new application building blocks which provide a standardized platform which no longer needs to be built into the corporate monolith. For example, it's now common to use standardized implementations for the following service technologies:
API Gateway
Queuing
Database
Storage
Notification
Streams
Your business logic fits in-between those building blocks. Services are utilized when they are needed. When the system is idle, it shuts down and costs nothing to run. At its core, using distributed services means you no longer need to manage them. This translates to decreased costs as not only do you no longer need to manage them, but you can now simply jettison them when you don't need them. This notion of disposable network services is very new, and requires some rethinking. Think about it this way: if you don't need to manage it, or essentially worry about it, then you have more time to think about your company model and translating that into real APIs which can be delivered at a fraction of the time & cost.
Usually when we go into a meeting with a new client, we're given a cursory introduction to the business itself, and end up deep-diving into technology problems. We often don't get a good understanding of how the business operates until we've had a good time to look over the database schema.
Enterprise technology is evolving, and so too are the implementation practices. Today, more so than before, when we ask our clients to describer their business events, their eyes widen and their ears perk up. They seem to have an intrinsic feeling that by broadcasting their business model in terms of actions, that it brings them closer to understanding the actual problem. And it does.
The new question to ask is : “How do we become part of the programmable pipeline?”
All the wonderfulness of modern application development aside, we usually find a huge lack of cooperation amongst corporate divisions regarding software development practices, and this is usually fostered by immensely difficult IT protocols with regard to approving, provisioning, monitoring and reporting on IT resources. There is now a native approach to building on the cloud. This dictates many things, but one thing for sure is that this evolutionary step foresees new programming models, architectural styles and practices, all of which will have a profound effect on IT and how resources are utilized in the future.