Welcome to
Manish’s blog dear friends,
Well,
considering the growth of industries in deferent domains, software plays a
major role in their path of growth. Obviously when the demand increases, the
production should increase as well to meet and win the competition within the
same domain for a particular industry. Therefore software plays a major role at
increasing the productivity that cannot be achieved with tolerable number of
human resources for a certain company.
If we peek
into the time within a decade or two into past, software started to get over
the industries making their production level excitingly high.
But
eventually with the growth of the industries, productivity of a single software
came to a level where no longer an valid option which led lot of leading
software companies and motivated young individuals to come up with more sophisticated
solutions.
Meanwhile
this evolution of software taking place, object oriented programming and open
source environment came to the play stage which providing more agile approach for
the evolution of the software designs.
The
evolution continues, but came the concept of distributed computer workstations
for both synchronize and asynchronies software systems which are comprised with
HRIS (Human Resource Information Systems), CRMS (Customer Relationship
Management Systems), ERPS (Enterprise Resource Planning Systems) etc.
When it
comes to modern days, requirement of software systems reaches to a level of
interconnection among number of systems within a company in order to achieve a
single goal comprised of chain processes (figure 1.1).
When it
comes to SOA, there is absolutely no stand alone software, but a system comprised
of number of software. Each software in the system is regardless the programming
language and deployed environment.
Assume a
company which consumes services of three software as one system over
service-oriented architecture. You can’t expect the design and implementation
of these three software in the same programming language as well as deployed on
the same environment because depending on the behaviour above parameters are
subject to change.
For an
example, a Service Delivery Platform written in Java and Scala may indicate
higher performance than a native C# development but for another application C#
could be ideal over Java.
So my point
is, depending on the requirement and available resources, development and
implementation of software is vary but still has to communicate with other
applications within the company in order to fulfil a perfect task.
In order to
achieve the interconnectivity within software system, exposing the inputs and
the outputs end points of an application to a common service is crucial. There
comes the important of web services based communication.
For an
example, a WSDL (Web Service Description Language) based web service which is
end of the day XML, can have number of inputs and out puts which can be
connected to any client service (another software). Client has no idea about
the implementation of the web service, but it simply passes set of arguments
expecting a response. Then again web service doesn’t worry about the arguments
came from the client, but simply deliver the arguments to the end point (another
software) which client pointed. Check out the figure 1.2 for more crystal
understanding.
Here on
figure 1.2, web service is defined for two inputs from client A and redirect
the inputs to client B over ‘To Destination’. Web service doesn’t handle any
business login but simply data delivery from one end point to the other. In the
given example, client B execute any business logic using inputs from client A
came via the web service and return the produced output to the web service.
This output also an input to the web service with a destination and it will
deliver whatever the output from client B to client A.
Basically
the whole idea is, you can fix any number of inputs and out puts to pool of web
services regardless the client language or deployed environment as far as the
client is eligible to communicate with common interface (web service).
The main
advantage of this approach is, you have the freedom of extending the features
of the existing system without effecting or disturbing daily processes.
Assume, you’ve
integrated a file based governance registry to your system, but eventually you
might need to change the governance registry to something else such as
WSO2-GREG. What if your system is tightly coupled with the existing governance registry
instead of exposing it as a service? I see lot of work there, not to mention
the interruption to daily processes. What if you had exposed it as a service? Yes,
simply what remains to do is switch down existing governance registry and replaces
it with the new one. Less effort, less resources my friends.
SOA gives a loosely
coupled environment within a system providing flexibility of maintain, extendibility
of the system and the durability with less consumption of resources.
When you designing
a SOA based application, always consider about the dynamicity of the workflows
and way of exposing them as services within the boundaries of performance and
available resources including time frames. One of the very bad practise of
software developers and engineers are fixated to set of frameworks for years.
It’s okay to select you own domain such as mobile, web, desktop etc, but always
try new frameworks and approaches to your work. If you’re a software developer
or an engineer, don’t look into the software in your perspective at first
sight, but from the user perspective.
Hope you got
a basic idea about how SOA works and all, I’ll continue my posts on SOA with
little bit more weight very soon friends.
Thank you
and good luck guys..!
No comments:
Post a Comment