<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Service_Oriented_Architecture</id>
	<title>Service Oriented Architecture - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Service_Oriented_Architecture"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Service_Oriented_Architecture&amp;action=history"/>
	<updated>2026-04-15T00:17:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Service_Oriented_Architecture&amp;diff=27412&amp;oldid=prev</id>
		<title>Bernard Szlachta: Undo revision 27407 by Bernard Szlachta (talk)</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Service_Oriented_Architecture&amp;diff=27412&amp;oldid=prev"/>
		<updated>2015-07-29T06:15:43Z</updated>

		<summary type="html">&lt;p&gt;Undo revision 27407 by &lt;a href=&quot;/training/Special:Contributions/Bernard_Szlachta&quot; class=&quot;new&quot; title=&quot;Special:Contributions/Bernard Szlachta (page does not exist)&quot;&gt;Bernard Szlachta&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User_talk:Bernard_Szlachta&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Bernard Szlachta (page does not exist)&quot;&gt;talk&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|SOA|01}}&lt;br /&gt;
{{Soa Links}}&lt;br /&gt;
&lt;br /&gt;
== Books ==&lt;br /&gt;
* Enterprise SOA: Best Practices für Serviceorientierte Architekturen - Einführung, Umsetzung, Praxis (2010 Dirk Krafzig)&lt;br /&gt;
&lt;br /&gt;
* SOA in Practice: The Art of Distributed System Design (2009 Nicolai M. Josuttis)&lt;br /&gt;
* 100 SOA Questions: Asked and Answered (2010 Kerrie Holley)&lt;br /&gt;
http://ecx.images-amazon.com/images/I/51iS6EuBiPL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU02_AA160_.jpg&lt;br /&gt;
http://ecx.images-amazon.com/images/I/51aVzZ%2BtWHL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU02_AA160_.jpg&lt;br /&gt;
http://ecx.images-amazon.com/images/I/41zDOhuKu-L._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU02_AA160_.jpg&lt;br /&gt;
&lt;br /&gt;
== Need and Motivation ==&lt;br /&gt;
&amp;quot;It is not the strongest of the species that survive, nor the most intelligent, but the ones most responsive to change.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
“In the struggle for survival, the fittest win out at the expense of their rivals because they succeed in adapting themselves best to their environment.”&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;As quoted in The Living Clocks (1971) by Ritchie R. Ward&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== SOA and Technology ==&lt;br /&gt;
*SOA is NOT a technology&lt;br /&gt;
*SOA is NOT a new concept&lt;br /&gt;
*We can use it because of STANDARDS&lt;br /&gt;
*The power of the computers allowed us to do it&lt;br /&gt;
*Network speed, CPU, memory and disk space&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SOA Definition ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Simple Definition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Service Oriented Architecture (SOA) is&lt;br /&gt;
&lt;br /&gt;
a loosely-coupled architecture &lt;br /&gt;
&lt;br /&gt;
designed to meet the business needs of the organization.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OASIS Reference Model Definition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Service Oriented Architecture (SOA) is&lt;br /&gt;
&lt;br /&gt;
a paradigm&lt;br /&gt;
&lt;br /&gt;
for organizing and utilizing&lt;br /&gt;
&lt;br /&gt;
distributed capabilities&lt;br /&gt;
&lt;br /&gt;
that may be under the control of different ownership domains.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SOA OMG Definition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Service Oriented Architecture (SOA) is&lt;br /&gt;
&lt;br /&gt;
a way&lt;br /&gt;
&lt;br /&gt;
of describing and understanding organizations, communities and systems&lt;br /&gt;
&lt;br /&gt;
to maximize agility, scale and interoperability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SOA Components ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Services&amp;#039;&amp;#039;&amp;#039; self-contained business functionalities&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Infrastructure&amp;#039;&amp;#039;&amp;#039; usually enterprise service bus (ESB),&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Policies and processes&amp;#039;&amp;#039;&amp;#039; usually have different owners.&lt;br /&gt;
&lt;br /&gt;
== SOA is like an Elephant ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Soa-elephant.png|300px]] &lt;br /&gt;
| &lt;br /&gt;
*The man touching the trunk believes it to be a snake&lt;br /&gt;
*The man touching the tusk believes it to be a spear&lt;br /&gt;
*The man touching the ear believes it to be a fan&lt;br /&gt;
*The man touching the elephant‘s side believes it to be a wall&lt;br /&gt;
*The man touching the tail believes it to be a rope&lt;br /&gt;
*The man touching the legs believes they are trees.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sheet of Paper ==&lt;br /&gt;
[[File:Paper sheet.jpg|300px]]&lt;br /&gt;
* Artist - canvas&lt;br /&gt;
* Poet - space for a poem&lt;br /&gt;
* Engineer - paper plane&lt;br /&gt;
* Kid - spit wad&lt;br /&gt;
&lt;br /&gt;
== Conflicting definitions ==&lt;br /&gt;
* Every author and standards bodies provide their definitions of SOA&lt;br /&gt;
* Every domain (business, IT, EA) will have a definition focusing on their aspects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CEO&amp;#039;&amp;#039;&amp;#039;: SOA is a set of services that can be exposed to their costumers and other parts of the organization. Services can be combined and recombined in a flexible manner to serve ever-changing business needs. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CIO&amp;#039;&amp;#039;&amp;#039;: SOA will reduce the lifetime cost of the application portfolio and maximize ROI&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Chief Architect&amp;#039;&amp;#039;&amp;#039;: Just specific type of an Enterprise Architecture&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IT Architect&amp;#039;&amp;#039;&amp;#039;: SOA is a way we integrate services (like CORBA, DCE) but based on new standards and patterns&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Business Analyst&amp;#039;&amp;#039;&amp;#039;: SOA allow to gather requirements in an easy way and focus on business processes are the major part of requirements (rather than use cases)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Programmer&amp;#039;&amp;#039;&amp;#039;: SOA is programming paradigm usually with WSDL and Web Services and Message Exchange Patterns &lt;br /&gt;
&lt;br /&gt;
== SOA as an architectural pattern ==&lt;br /&gt;
&amp;lt;signavio&amp;gt;2e313480811446c9ab155bfb2230481f:aa551ce190f28ca568ea558ccc5d3156ec0cda07a528490a1ae4cfb7b1ef_505a2ac832f58506b39c8d7c15ee452579844ac178b2a1ebd7fb5c5288621e_59b578a0f418356afe517e3e352a2f5956f4dee14df89287236e212a4&amp;lt;/signavio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Languages development ==&lt;br /&gt;
*Assembler&lt;br /&gt;
*Procedural languages (C, Pascal, etc..)&lt;br /&gt;
*Low-level OOL (C++, VB6...)&lt;br /&gt;
*High-level (machine independent) languages (Java, C#...)&lt;br /&gt;
*Dynamic Languages (Python, PHP...)&lt;br /&gt;
*Declarative languages (SQL, Prolog, XSL..)&lt;br /&gt;
*MDA (BPMS, BRMSS)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Interoperability&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
*Languages itself cannot easily exchange information&lt;br /&gt;
*Bridges between languages are complex and not reliable&lt;br /&gt;
*If you have n languages, you need n(n-3)/2+n bridges&lt;br /&gt;
*Difficulties with distributed environment&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How did it start&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Large Distributed Systems&lt;br /&gt;
*Point to point connections&lt;br /&gt;
*CORBA, DCOM, and others&lt;br /&gt;
&lt;br /&gt;
== Re-usability ==&lt;br /&gt;
Who decide what to reuse:&lt;br /&gt;
* Function (programmer)&lt;br /&gt;
* Class (programmer)&lt;br /&gt;
* Component (software architect, programmer)&lt;br /&gt;
* Service (Managers, Chief Architect)&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Systems&lt;br /&gt;
! Connections&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|12&lt;br /&gt;
|-&lt;br /&gt;
|50&lt;br /&gt;
|1225&lt;br /&gt;
|-&lt;br /&gt;
|120&lt;br /&gt;
|7140&lt;br /&gt;
|-&lt;br /&gt;
|n&lt;br /&gt;
|n(n-1)/2&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Soa-dependencies2.jpg|220px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Making Changes ==&lt;br /&gt;
[[File:soa-fragile.jpg|130px]]&lt;br /&gt;
*Each system may depend on the other&lt;br /&gt;
*No one controls the dependencies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Making Changes and the Business&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Soa-changes-and-business.jpg|250px]]&lt;br /&gt;
*Business cannot stop for a couple of weeks&lt;br /&gt;
*If something goes wrong the business may go bust (and I know cases where it  did)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integration Hell ==&lt;br /&gt;
[[File:Soa-integration-hell.jpg|240px]]&lt;br /&gt;
*More money spend on integration than on new features development&lt;br /&gt;
*Competitors with more agile system are serious threat&lt;br /&gt;
&lt;br /&gt;
== Decoupling ==&lt;br /&gt;
[[File:Soa-scissors.jpg|180px]]&lt;br /&gt;
*On of the paradigm of SOA&lt;br /&gt;
*Can be achieved in may ways (discussed later)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Re-usability ==&lt;br /&gt;
*Function/procedure (not clear parameters)&lt;br /&gt;
*Class (language specific)&lt;br /&gt;
*Component (technology specific)&lt;br /&gt;
*Service (contract specific)&lt;br /&gt;
*Messages (Web Services, RPC, ICal, SMTP)&lt;br /&gt;
&lt;br /&gt;
== Architects Dream ==&lt;br /&gt;
*Write functionality only once&lt;br /&gt;
*Use it from any application&lt;br /&gt;
*Orchestrate it from a diagram-driven tools&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Can you buy SOA? ==&lt;br /&gt;
*SOA is a concept&lt;br /&gt;
*SOA is free&lt;br /&gt;
*SOA is vendor independent by definition&lt;br /&gt;
*You can buy a SOA suit, but make sure that you will not be vendor locked again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Orchestration ==&lt;br /&gt;
[[File:Soa-Orchestration.jpg|500px]]&lt;br /&gt;
*Can be simple&lt;br /&gt;
*Extensible&lt;br /&gt;
*Easy to change one component&lt;br /&gt;
*It is not choreography&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to start ? ==&lt;br /&gt;
[[File:Soa-how-to-start.jpg|220px]]&lt;br /&gt;
*Is there the way?&lt;br /&gt;
*How can I start?&lt;br /&gt;
*SOA steps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SOA sounds like... ==&lt;br /&gt;
[[File:Soa-way-to-heaven.jpg|250px]]&lt;br /&gt;
*Straight way to heaven&lt;br /&gt;
*Is it really so good?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Electricity Grid → Cloud ==&lt;br /&gt;
[[File:Soa-electricity-grid.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Tale of the Magic Bus==&lt;br /&gt;
*You have to create an individual solution for each kind of connection&lt;br /&gt;
*Even if you only had 10 different platforms and 5 different protocols, if you wanted to enable each platform to communicate with each other platform, you would need over 100 different solutions. &lt;br /&gt;
*And you have many more than 10 platforms&lt;br /&gt;
&lt;br /&gt;
[[File:Soa-macig-bus.png|550px]]&lt;br /&gt;
&lt;br /&gt;
*Piece of software that reduces the number of connections and interfaces in your system&lt;br /&gt;
*point-to-point approach might require up to n × (n–1)/2 connections for n systems (and twice as many interfaces), &lt;br /&gt;
*the Magic Bus requires only one connection and interface for each system. &lt;br /&gt;
*.... 9 for 10 systems, 29 for 30 systems, and 49 for 50 systems&lt;br /&gt;
*It was indeed very easy to connect systems, and suddenly it became very easy to grow again. &lt;br /&gt;
*...until suddenly, it all broke down.&lt;br /&gt;
*Slack means death, so one year later, they were out of business.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==SOA Drawbacks==&lt;br /&gt;
* Usually it is much slower than monolithic applications or other types of integration&lt;br /&gt;
* Performance is the main issue in most of the cases&lt;br /&gt;
* Additional infrastructure to maintain&lt;br /&gt;
* SOA security&lt;br /&gt;
&lt;br /&gt;
==Two faces of “Architecture”==&lt;br /&gt;
*The “Architecture” in SOA can stand for either software architecture (technical) or business architecture. &lt;br /&gt;
*Services and systems usually have different owners&lt;br /&gt;
*Communication between the owners must be enforced on the management level, hence SOA is about management&lt;/div&gt;</summary>
		<author><name>Bernard Szlachta</name></author>
	</entry>
</feed>