Do SOA and Microservices Play Functional Patches to Object Orientation?


Computers where always do-ers. All the code of assembly languages are functions, including those who deal with memory. As functions became more complicated and memory usage went helter skelter, a new paradigm to keep memory relevant to functionality in a sustainable fashion evolved, which is the object oriented programming.

Objects are ways to align functionalities with related memory locations based on their relations to real life entities. However, When objects used for greater scopes like communications and business transactions, where different definitions of same entities happen, their structures struggled to adapt, and the control is back to functions. With concepts like remote “method” invocation and remote “procedure” call, these lifelike memory structures begin to go backstage. As business evolves to change its focus to be on services delivered to customers and the processes to deliver these services, software development had driven to service orientation, where the rhetoric of business and technical contexts are saying something important about what was happening with SOA and lately microservices.

On the business context: Service Oriented Architecture (SOA) means to avoid what the business organizations are, and focuses on what it could do as “services”; by focusing on the process they provide and align the teams for process actions. It tends to disregard the organizational structures and internal entities (usually represented in code as “objects”) and perish processes (executed as a set of functions). The rapidly changing business needs and the high dependency it hold to the IT have pushed the focus on the process over structure to how software should be built and provided.

On the technical context: service orientation succeeds over distributed objects by focusing on what the system components are doing and hiding any implementation details (usually written in OO languages). What software components are “doing” are provided as service”operations”, or in other word “functions”. Services in SOA are more like classifications of functions based entirely on the functionality regardless the relations to internal memory structures (objects) or infrastructure implementation details, except for inputs & outputs.

So, was that intentional hiding of how software manages its memory, and structures its data had proved aptitude over the intent to mimic real life objects? Should functionality be separate from how its data stored? What history revealed was  that the real world is the one who is keep changing, and the real persistent is the functionality we need from software. Functional programming makes software focus on what the system will do without bothering to mimic the world objects to stay relevant. It is always relevant by what it can do. However, SOA is more than mere functions, it is one step further by hiding most of implementation and deployment details, and presents functionality as a single, standardized layer, where the only remarkable features are the functionalities. Nevertheless, the business itself usually still behind to achieve this Plutonian SOA. They are also thorn upon their hierarchies to abstract their services to their customers.

This view of the customers – or user – who shouldn’t be distracted by anything but the service they get, had dug its way down the service causality to the internal orientation of the software it uses, until we had the known service orientation. Now even internal components are trying to be “Microservices” instead of being classes. Thus, microservices are functional groups usually on object scale that hide not only their memory and data structures, but even how they are deployed and implemented physically. The result after decades of software engineering is that functional orientation became so dominant to split not just code, but even deployment stack under the name of microservices.


Is Information Technology An Innovation Black Hole?

 Images credit: NASA

We always rejoice about computers (including today’s smart phones) doubling their powers and lowering their prices exponentially. It’s not only this; there’re also the following advancements in applications, platforms, operating systems, sensors and the expanded usage in every aspect of life. Other fields are expanding and developing too, but not as the speed of computing and IT. It seems like we have a trouble where to put processors in our lives..Why we don’t see the same thing happening in other fields like transportation, manufacturing and health care? I don’t mean adding info or control screens to them, but improving their technology to the core. What makes talents easily hunted by it? and how innovation may expand to other areas?.Computers easily attract children and students while other areas are left hungry, Since their childhood, brilliant people like everyone else; get attached to computers, it’s where they see the magic happens.When they first put their hands on it, young talents see the results immediately, and easily convinced that this is their passion. That immediate feedback of one’s work on computer software isn’t just made it attractable more than other fields, it even one of the contributors for its fast advancements. The developer writes code then compile/build the code to get the feedback, faster than if they were designing a mechanical device for example. This short and fast iterations enable engineers to detect any defect and fix not only the product and the overall architecture; but even the process to make the product, which led to a continuous improvements and theories about software architecture and development lifecycle. This in turn; refreshes the industry, and new generations always find something different in their time to get impressed by..The difficulties in experimenting and fast improvement iterations in other industries is taking away talents from them. However, it looks like our impression of computers and information technology will slowly be the key to change other industries, and whenever computers get more powers and less prices, part of every other industry is getting stronger and more affordable.

The difficulties in experimenting and fast improvement iterations in other industries is taking away talents from them.

.If computers and processors became so adequate in our lives, they will leave a room for other fields. Today’s children touching screens with their little fingers, will grow up rigorously hard to impress, add to that the floating of information in all fields on their grasp (thanks to the preceding IT advancements) they will find it more trivial to change any field they work at, and the notion of one person=one specialization will gone vague over time..It looks like information technology (and computing generally) will pay it forward to other fields. We like to imagine technologies beyond computer chips and screens. We fantasy machines that think about their functions (not only showing us fancy UI motions) new fast transportation systems, unthinked of ways of treating deceases, and more human beings up in space and other planets. Among the enablers of these kinds of innovations is the huge brain of computing and IT which we are focusing on now.


Wearables: What Are We Getting Wrong?

The usual conception about wearables and personal computing is:

  • Processor, memory and battery in your phone
  • Processor, memory and battery in your watch
  • Processor, memory and battery in your glasses
  • Processor, memory and battery in your tablet or laptop
  • Processor, memory and battery in your… whatever!

If the preceding points were in a programming code, the duplication could be fixed. The: “processor, memory and battery” can be encapsulated. A WiFi, Bluetooth or something similar will make it easy to encapsulate a processing and data storage as a separate device in your pocket that is different than the screen(s) that you take out to use.

May be the batteries can’t be encapsulated (yet), but a recent technology from Stanford University is very likely to succeed in making the battery is the screen.

The later advancements in wireless charging will connect the bits towards scattering the personal computer around our bodies. Imaging this: a unit that has the battery in your pocket that is responsible for all the energy that is needed for your phone, glasses, watch and tablet or laptop. The same thing with a storage and processing units. This way, your phone will be an extremely thin screen to display what’s on the processing and storage unit. Your glasses will look more like “glasses” without all the processing, storage and energy capabilities stock to your face!

A tablet (thin screen) can detect the nearest authorized units (the one in your pocket or office), and begin to display and compute using their energy capabilities.


P.S. what if those battery units are harvesting energy from our bodies?

On LinkedIn

City APIs by city councils as a step to the internet of things

We always dream about the internet of things and how everything talk our devices so they do things for us.
Trains and their stations, metros, taxi cabs, traffic lights and many other appliances have so much information to send to us, add to that; sensors and cameras that can be put anywhere.
Collecting the data shouldn’t be all automated, specially at the beginning. A train station employee can trigger something if they think something will affect a journey.
The use of these APIs that can be sold to developers who know how to invest these data and make money out of it. It will also help cities to generate more income and make their people lives easier.
Do you think cities should do that? what are the obstacles and opportunities in implementing such a project?.. happy to listen to you!