miƩrcoles, 16 de octubre de 2013

Think Distributed, Think of Components, Think of Services!

Distributed computing has been around for a while and it has evolved from technologies like, RPC, Common Object Request Broker Architecture (CORBA), RMI, COM, DCOM, COM+ etc. All of these technologies had to deal with many issues like location transparency, type marshalling, transport, object brokering, cross-platform invocation, object activation etc. These technologies led to many developers to extreme hysteria attacks, strong headaches, long days of insomnia, huge dosis of aspirins and coffee or even stroke.

Nowdays just some developers feel comfortable with old technologies (me included), fortunately for the new generation, those days of long IDL descriptors and late night screams are over. Services over "Firewall Friendly" TCP ports like HTTP, SMTP etc. have arrived, promising a more relaxed future for the new generation of developers that just don't care about our suffering fifteen to twenty years ago!

These new service models yet keep the same essence and deal with the same problems (marshalling, transport, proxying, interface description etc.) but in a more sophisticated fashion and hidding the nuts and bolts to the developer. 

Web services use WSDL based on SOAP 1.X to describe method signatures and types required to perform a "remote call" to the service. SOAP has an XSD to describe those services in order to allow type matching, exception handling, security and more. This descriptor is also useful to allow automation programs to build a convenient proxy class to handle all the necessary issues to perform a call on the remote service (type marshalling/unmarshalling, serialization, communication, binding etc.), but with the current proliferation of services, it seems that we are running toward a big chaos of services consumed by many clients with no hope of a better world.

To bring order to the chaos, we do require to change our minds and think in the future when we are designing. Questions like "Will my platform be elastic enough to allow vertical and/or horizontal scaling?", "Will it be flexible enough to allow to heterogeneous systems to plug/unplug easily?", "Will it be enough loosely-decoupled to easily change a component by another that extends or improves the original behavior?". These key questions beside others, will give the clues to achieve optimal designs over Service Oriented Architectures.

Cloud Computing, Grid Computing, Neural Computing are Software Distributed Architectural Styles that will be the predominant styles in the near future. A robust and well designed Service Bus is required to allow a successful achievement and almost a happy future.

No hay comentarios:

Publicar un comentario