WSO2 Developer's Guide - Fidel Prieto Estrada - E-Book

WSO2 Developer's Guide E-Book

Fidel Prieto Estrada

0,0
41,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

WSO2 Made Simple – dive deep into the core concepts of WSO2 to overcome the challenges faced while using the Enterprise Integrator

About This Book

  • Design, create, and publish services in the WSO2 technology
  • Integrate the WSO2 Enterprise Integrator with other components and servers
  • Log and test deployed services

Who This Book Is For

If you are a Java solutions architect or developer and are keen to understand how to build enterprise applications with WSO2, this book is for you. No prior knowledge of WSO2 is expected.

What You Will Learn

  • Configure WSO2 Enterprise Integrator server in a production environment
  • Create SOAP Proxies and REST APIs
  • Interact with WSO2 Message Broker
  • Write services using the new language: Ballerina
  • Schedule automatic tasks for the services you create
  • Manage log messages depending on the log level of the system
  • Integrate with social networks such as Twitter, Facebook, Instagram, and Yammer
  • Test SOAP Services using the Tryit feature and SoapUI tool
  • Work with Quality of Services

In Detail

WSO2 Enterprise Integrator brings together the most powerful servers provided by the WSO2 company for your SOA infrastructure. As an Enterprise Service Bus (ESB), WSO2 Enterprise Integrator provides greater flexibility and agility to meet growing enterprise demands, whereas, as a Data Services Server (DSS), it provides an easy-to-use platform for integrating data stores, creating composite views across different data sources, and hosting data services.

Using real-world scenarios, this book helps you build a solid foundation in developing enterprise applications with powerful data integration capabilities using the WSO2 servers.

The book gets you started by brushing up your knowledge about SOA architecture and how it can be implemented through WSO2. It will help build your expertise with the core concepts of ESB such as building proxies, sequences, endpoints, and how to work with these in WSO2.

Going further, you will also get well-acquainted with DSS data service concepts such as configuring data services, tasks, events, testing, and much more.

The book will also cover API management techniques. Along with ESB and DSS, you will also learn about business process servers, the rules server and other components that together provide the control and robustness your enterprise applications will need.

With practical use cases, the book covers typical daily scenarios you will come across while using these servers to give you hands-on experience.

Style and approach

The book is a complete guide and helps you get the right start—from understanding SOA architectures to getting valuable experience with two important integration servers such as ESB and DSS. It will include some real-world practical scenarios to help you master the best practices followed right across the industry and overcome the challenges you're likely to face on a daily basis.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 279

Veröffentlichungsjahr: 2017

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



WSO2 Developer’s Guide

 

 

 

 

 

 

 

 

 

 

SOA and data services with WSO2 Enterprise Integrator

 

 

 

 

 

 

 

 

 

 

Fidel Prieto Estrada
Ramón Garrido Lázaro

 

 

 

 

 

BIRMINGHAM - MUMBAI

WSO2 Developer’s Guide

Copyright © 2017 Packt Publishing

 

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

 

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author(s), nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

 

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

 

First published: September 2017

 

Production reference: 1260917

Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.

ISBN 978-1-78728-831-7

 

www.packtpub.com

Credits

Authors

Fidel Prieto Estrada

Ramón Garrido Lázaro

Copy Editors

Safis Editing

Shaila Kusanale

Reviewer

Jack Rider

Project Coordinator

Devanshi Doshi

Commissioning Editor

Smeet Thakkar

Proofreader

Safis Editing

Acquisition Editor

Larissa Pinto

Indexer

Mariammal Chettiyar

ContentDevelopmentEditor

Roshan Kumar

Graphics

Jason Monteiro

Technical Editors

Harshal Kadam

Rutuja Vaze

Production Coordinator

Shraddha Falebhai

About the Authors

Fidel Prieto Estrada is a fan of new technologies who has been working with SOA in several integration technologies for 8 years in various industries, which has given him deep integration knowledge and a broad vision for problem solving.

He holds a bachelor of computer science degree from the University of Seville as well as more than 10 certifications, including WSO2 ESB 4 Developer, Oracle SOA Suite 11g, Oracle Unified BPM Suite 11g Essentials, EXIN Secure Programming Foundations, and ISTQB Certified Tester Foundation Level. He also completed the WSO2 ESB for Developers advanced course.

I would like to thank my family for the support they have provided me, especially my late father. I can't thank Marina enough for her support and patience with me throughout the months it took it me to write this book.

 

Ramón Garrido Lázaro is an enthusiast of new technologies and has spent the lasts years understanding and working with WSO2 servers in different projects, companies, and countries. He holds a bachelor's degree in software engineering and two master's degrees focusing on TIC security and software development for computers and smartphones.

He has specialized in SOA environments with multiple certifications, some of them in WSO2 servers. Currently, he works as a WSO2 consultant and teaches WSO2 courses in Chakray Consulting, one of the biggest WSO2-partner specialist companies.

I would like to thank my parents, Mr. Ramón Garrido and Mrs. Pilar Lázaro, for their continuous encouragement and motivation throughout my life. This book is dedicated to them.

About the Reviewer

Jack Rider is both a Spanish and US citizen, but he spends most of his time in the UK and Europe these days. After completing his degree in computer technology in Pittsburgh, Jack began his career in hospitality industry technology before moving to ERP, becoming a SAP consultant and then discovering the open source arena around 21 years ago. Jack has always been a firm believer in open source technology as a principle that led him, almost inevitably, to WSO2 and Chakray Consulting, where he is the CTO. Jack has a keen interest in physics, particularly in quantum theory. He was also the vice chairman of the Spanish Astronomy Association, which is congruous with his philosophy that sleep is overrated.

www.PacktPub.com

For support files and downloads related to your book, please visit www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.comand as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www.packtpub.com/mapt

Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.

Why subscribe?

Fully searchable across every book published by Packt

Copy and paste, print, and bookmark content

On demand and accessible via a web browser

Customer Feedback

Thanks for purchasing this Packt book. At Packt, quality is at the heart of our editorial process. To help us improve, please leave us an honest review.

If you'd like to join our team of regular reviewers, you can email us at [email protected]. We award our regular reviewers with free eBooks and videos in exchange for their valuable feedback. Help us be relentless in improving our products!

Table of Contents

Preface

What this book covers

What you need for this book

Who this book is for

Conventions

Reader feedback

Customer support

Downloading the example code

Downloading the color images of this book

Errata

Piracy

Questions

Getting Started with SOA and WSO2

SOA principles

SOA organization

Technology for SOA

Downloading WSO2 Enterprise Integrator

WSO2 Update Manager

Add an existing product to WUM repository

Download a product using WSO2 Update Manager

Check for product updates using WSO2 Update Manager

Deleting a product from the WSO2 Update Manager repository

Installing WSO2 Enterprise Integrator

Starting components manually

Starting/stopping WSO2 Enterprise Integrator

Starting/stopping WSO2 EI Analytics

Starting/stopping WSO2 EI Business Process

Starting/stopping WSO2 EI Broker

Starting all the products

WSO2 EI Configuration

Configuring JDBC drivers

Configuring transports

Configuring message formatters and message builders

Summary

Developing Integration Projects with WSO2EI Tooling

Installing and running WSO2EI Tooling

Creating carbon projects

ESBConfig projects

Creating a proxy

Creating a REST API

Creating a sequence

Creating an endpoint

Registry Resource Project

Data Service Project

Composite Application Project

ESB Solution Project

Debugging mediation

Data mapping

Summary

Building Web Services

Mediators

The property mediator

The log mediator

The send mediator

The respond mediator

The loopback mediator

The drop mediator

The sequence mediator

The script mediator

Sequences

Main sequence

The fault sequence

A custom sequence

Proxies

The transformer proxy

Secure proxy

WSDL based proxy

Logging proxy

Pass through proxy

Custom proxy

APIs

URL mapping

URI template

Inbound endpoints

Listening

Polling

Event based

Custom

Tasks

Scheduling data services

Scheduling other services

Summary

Building Data Services

Configuring data sources

Create wizard

Data service details

Adding datasources

Adding queries

Adding new queries using XML responses

Adding new queries using JSON responses

Adding new queries using a filter

Adding new queries for inserting data

Adding new queries for updating data

Adding new queries for deleting data

Adding operations

Adding resources

Creating CRUD data services

Creating data services using WSO2 EI Tooling

Summary

Transforming the Content of the Payload

Creating new content

The PayloadFactory mediator

Script mediator

Change the format of the content

Message type

The XQuery mediator

Enrich the message

The Enrich mediator

Message transformation

The XSLT mediator

The FastXSLT mediator

Summary

Conditional Route

Checking the payload content

Validating XML

Validating JSON

Boolean filtering

Multiple filtering

Advanced routing

The conditional router mediator

The rule mediator

Summary

Quality of Service

Security

Security scenarios

Scenario 1: UsernameToken

Scenario 2: Non-repudiation

Scenario 3: Integrity

Scenario 4: Confidentiality

Scenario 5: Sign and encrypt - X509 authentication

Scenario 6: Sign and encrypt - Anonymous clients

Scenario 7: Encrypt only - UsernameToken authentication

Scenario 8: Sign and encrypt - UsernameToken authentication

Scenario 9: Secure conversation - Sign only - Service as STS - Bootstrap policy - Sign and encrypt, X509 authentication

Scenario 10: Secure conversation - Sign only - Service as STS - Bootstrap policy - Sign and encrypt, anonymous clients

Scenario 11: Secure conversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and encrypt, X509 authentication

Scenario 12: Secure conversation - Sign only - Service as STS - Bootstrap policy - Sign and encrypt, anonymous clients

Scenario 13: Secure conversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and encrypt, anonymous clients

Scenario 14: Secure conversation - Encrypt only - Service as STS - Bootstrap policy - Sign and encrypt, UsernameToken authentication

Scenario 15: Secure conversation - Sign and encrypt - Service as STS - Bootstrap policy - Sign and encrypt, UsernameToken authentication

Scenario 16: Kerberos token-based security

Securing the transport

Creating a certificate for the EI server

Configuring HTTPS transport

Securing REST APIs

Basic authentication

Authentication against WSO2 Identity Server

Securing SOAP Proxies

Invoking secure backend

Basic-auth authentication

OAuth authentication

Getting a token from the WSO2 API manager

WS-Security

Throttling

Caching

Summary

Tasks Scheduling

Configuring the server

Setting the server mode

Configuring a clustered task server

Scheduling integration services

Scheduling data services

Custom tasks

Summary

WSO2 Enterprise Integration Logging

General enterprise integration logging

Logging the orchestration

Log mediator

Adding log properties

Script mediator

Logging per API and per proxy service

Summary

WSO2 Enterprise Integration Testing

Testing with a built-in tester

Testing with SOAPUI

Creating a web service client

Creating a mock service

Creating a test case

Other ways of testing

Summary

Integrating with VFS

Configuring the server

Large files

Reading files

VFS properties

transport.vfs.FileURI

transport.vfs.ContentType

transport.vfs.FileNamePattern

transport.PollInterval

transport.vfs.ActionAfterProcess

transport.vfs.ActionAfterFailure

transport.vfs.MoveAfterProcess

transport.vfs.MoveAfterFailure

transport.vfs.ReplyFileURI

transport.vfs.ReplyFileName

transport.vfs.MoveTimestampFormat

transport.vfs.Streaming

transport.vfs.ReconnectTimeout

transport.vfs.MaxRetryCount

transport.vfs.Append

transport.vfs.MoveAfterFailedMove

transport.vfs.FailedRecordsFileName

transport.vfs.FailedRecordsFileDestination

transport.vfs.MoveFailedRecordTimestampFormat

transport.vfs.FailedRecordNextRetryDuration

transport.vfs.Locking

transport.vfs.FileProcessCount

transport.vfs.FileProcessInterval

transport.vfs.ClusterAware

transport.vfs.FileSizeLimit

transport.vfs.AutoLockReleaseInterval

Local filesystem

FTP and FTPS

SFTP

Writing files

Transferring files

File connector

Configuring

Working

Summary

Integrating with JMS - WSO2 EI Message Brokering

Creating message queues

Publishing messages to a queue

Consuming messages from a queue

Dead Letter Channel

Connectors

Types of Connectors

SOAP-based connectors

REST-based connectors

Java API-based connectors

Summary

Introduction to Ballerina

The Ballerina language history

The main concepts of Ballerina

Connectors

Type system

Community

Ballerina tools

Composer

Docerina

Testerina

Packerina

Working with Ballerina

Summary

Preface

This book will help you explore the various capabilities of WSO2, from simple and generic to more complex and powerful. It will give you an introduction to a service-oriented architecture in general and is focused on the WSO2 world in order to put into context the principles and the target area where we can apply the knowledge and the techniques outlined in the book. This book will help the reader understand the SOA architecture even without any prior knowledge of it, making the book readable for everyone interested in learning to develop with WSO2 servers, with or without prior experience.

We will also learn how to use mediators to create APIs and proxy services, with which we can perform different actions such as transforming the payload or making a conditional route inside to create smarter web services. We will also learn how to handle the quality of service configuration to apply security, throttling, and caching to the services.

When we develop a service, it is important that it does the actions that its design for, and always gives the same response for the same request. For this reason, it's important that we test our services and debug all that we need. We don't speak about giving more functionality to our services, but about logging and testing them.

The last section will mainly focus on integrating the WSO2 EI with other servers using different protocols. We will learn how to use the VFS protocol to work with files: read, write, move, and so on. Using the JMS protocol, we will learn how to integrate with the WSO2 Message Broker that is inside the WSO2 EI. We will also have a brief introduction to a new programming language called Ballerina, which will be the future of the company.

What this book covers

Chapter 1, Getting Started with SOA and WSO2, discusses the issues that gave rise to SOA, describes its main principles, and explains how to make SOA the standard architecture in our organization. In order to achieve this, we have named the WSO2 product we need WSO2 EI. Finally, we will learn how to install it, configure it, and start it up.

Chapter 2, Developing Integration Projects with WSO2 EITooling, explains the most common tasks a developer performs on a daily basis when working with WSO2 EI, such as creating projects and artifacts. We will also learn how to debug our projects, which is a very important task that's performed on a daily basis. Additionally, we will describe how to use the powerful data mapper.

Chapter 3, Building Web Services, explains how to build web services in WSO2 EI and their most common components, such us endpoints and sequences. We will also explain the different ways of creating services in EI service when we need to use a Proxy, an API, or an inbound endpoint, and what is the process for adding the logic to that service using sequences and mediators.

Chapter 4, Building Data Services, explores how to build the dataservices needed to fetch the data required in our service orchestration. Additionally, we will learn some tips to save some time when developing and testing our dataservices as well.

Chapter 5, Transforming the Content of Payload, explains how to transform the message received in the services. We will also learn how to modify the content of the payload using the PayloadFactory mediator or the enrich mediator, without needing to have advanced knowledge of transformation languages such as XSLT or XQuery.

Chapter 6, Conditional Route, helps us know how to create more intelligent services that can route the flow over different ways, depending on the parameters, the URL, headers, and so on. We will also take a look at the filter and switch mediators, which we use to check the payload, or a part of it, over a regex expression.

Chapter 7, Quality of Service, takes you through the quality of service configuration in depth in order to explain how to configure security in the services, apply throttling policies such as specifying a maximum number of requests that can be done for a user in a period of time, and use the cache to improve the performance of the servers, among other things.

Chapter 8, Tasks Scheduling, focuses on the options we have for scheduling tasks inside the EI server. We will also observe the three ways to schedule tasks in the EI server.

Chapter 9, WSO2 Enterprise Integration Logging, covers how to log any information about the message received or the properties we set during our service orchestration. We also learn how to log when we are developing a piece of JavaScript code in our service.

Chapter 10, WSO2 Enterprise Integration Testing, goes through the process of testing our services using the basic built-in feature, and a more powerful tool--SoapUI. Besides this, we will learn how to build mock services and test suites to create a set of test cases that help us validate that the service is working as we expect.

Chapter 11, Integrating with VFS, focuses on the integration of Enterprise Integrator with files, local or remote, handled using the VFS protocol from Apache Commons. We will also cover a variety of file scenarios, such as read, write, and transfer, without processing files over different locations.

Chapter 12, Integrating with JMS - WSO2 EI Message Brokering, explains how to send messages to a JMS queue, as well as how to consume them. We will also learn how to build a typical high-performance scenario where a message is stored in a queue to be processed further by another service, which allows the service to handle a high number of messages per second.

Chapter 13, Introduction to Ballerina, gives a brief introduction to the new programming language called Ballerina, which will be the future of the company.

What you need for this book

This book will guide you through the installation of all the tools that you require to follow the examples. 

Who this book is for

This book is intended for SOA developers with no knowledge of WSO2 Enterprise Integrator, but who are experienced in SOA environment, and are reasonably familiar with XML and JSON message types. Will be useful to have knowledge in XSL, XSD, JMS, VFS, Eclipse IDE and other WSO2 servers.

Conventions

In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning. Code words in the text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input are shown as follows: "Use wum check-update wso2ei-6.0.0 to check for updates".

A block of code is set as follows:

<messageFormattercontentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamFormatter"/> <messageBuildercontentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamBuilder"/>

When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

wumconfiglocal.product.repo wso2/products

New product repository is \wso2\products

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "In the WSO2EI Tooling top menu, click on Run | Debug Configurations."

Warnings or important notes appear in a box like this.
Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of. To send us general feedback, simply e-mail [email protected], and mention the book's title in the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you. You can download the code files by following these steps:

Log in or register to our website using your e-mail address and password.

Hover the mouse pointer on the

SUPPORT

tab at the top.

Click on

Code Downloads & Errata

.

Enter the name of the book in the

Search

box.

Select the book for which you're looking to download the code files.

Choose from the drop-down menu where you purchased this book from.

Click on

Code Download

.

Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:

WinRAR / 7-Zip for Windows

Zipeg / iZip / UnRarX for Mac

7-Zip / PeaZip for Linux

The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/WSO2-Developer-s-Guide. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!

Downloading the color images of this book

We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/B06549_WSO2DevelopersGuide_ColorImages.pdf.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books-maybe a mistake in the text or the code-we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title. To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy. Please contact us at [email protected] with a link to the suspected pirated material. We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at  [email protected], and we will do our best to address the problem.

Getting Started with SOA and WSO2

We will try to introduce this book with a simple, brief, and concise discussion of SOA, talking about its origin and what it means. We will discuss the facts or problems that large companies with a huge IT system had to face, and that finally gave rise to the SOA approach.

Once we know what we are talking about, we will introduce the WSO2 technology and describe the role it plays in SOA, which will be followed by the installation and configuration of the WSO2 products we will use.

So, in this chapter, we will deal with the following topics:

A basic knowledge of SOA

Download WSO2 Enterprise Integrator

WSO2 Update Manager (WUM)

Update with the official Patches

Set up WSO2 Enterprise Integrator

Start Enterprise Integrator

Service-oriented architecture (SOA) is a style, an approach to design software in a different way from the standard. SOA is not a technology; it is a paradigm, a design style.

There comes a time when a company grows and grows, which means that its IT system also becomes bigger and bigger, fetching a huge amount of data that it has to share with other companies. This typical data may be, for example, any of the following:

Sales data

Employees data

Customer data

Business information

In this environment, each information need of the company's applications is satisfied by a direct link to the system that owns the required information. So, when a company becomes a large corporation, with many departments and complex business logic, the IT system becomes a spaghetti dish:

Spaghetti dish

The spaghetti dish is a comparison widely used to describe how complex the integration links between applications may become in this large corporation. In this comparison, each spaghetti represents the link between two applications in order to share any kind of information.

Thus, when the number of applications needed for our business rises, the amount of information shared is larger as well. So, if we draw the map that represents all the links between the whole set of applications, the image will be quite similar to a spaghetti dish. Take a look at the following diagram:

Spaghetti integrations by Oracle (https://image.slidesharecdn.com/2012-09-20-aspire-oraclesoawebinar-finalversion-160109031240/95/maximizing-oracle-apps-capabilities-using-oracle-soa-7- 638.jpg?cb=1452309418)

The preceding diagram represents an environment that is closed, monolithic, and inefficient, with the following features:

The architecture is split into blocks divided by business areas.

Each area is close to the rest of the areas, so interaction between them is quite difficult.

These isolated blocks are hard to maintain.

Each block was managed by just one provider, which knew that business area deeply.

It is difficult for the company to change the provider that manages each business area due to the risk involved.

The company cannot protect itself against the abuses of the provider. The provider may commit many abuses, such as raising the provided service fare, violating

service level agreement

(

SLA

), breaching the schedule, and many others we can imagine. In these situations, the company lacks instruments to fight them because if the business area managed by the provider stops working, the impact on the company profits is much larger than when assuming that the provider abuses.

The provider has a deeper knowledge of the customer business than the customer itself.

The maintenance cost is high due to the complexity of the network for many reasons; consider the following example:

It is difficult to perform impact analysis when a new functionality is needed, which means high costs and a long

time to evaluate any fix, and higher costs of each fix in turn.

The complex interconnection network is difficult to know in depth.

Finding the cause of a failure or malfunction may become quite a task.

When a system is down, most of the others may be down as well.

A business process is used to involve different databases and applications. Thus, when a user has to run a business process in the company, he needs to use different applications, access different networks, and log in with different credentials in each one; this makes the business quite inefficient, making simple tasks take too much time.

When a system in your puzzle uses an obsolete technology, which is quite common with legacy systems, you will always be tied to it and to the incompatibility issues with brand new technologies, for instance.

Managing a fine-grained security policy that manages who has access to each piece of data is simply an uthopy.

Something must to be done to face all these problems and SOA is the one to put this in order. SOA is the final approach after the previous attempt to try to tidy up this chaos.

We can take a look at the SOA origin in the white paper, The 25-year history of SOA, by Erik Townsend (http://www.eriktownsend.com/white-papers/technology). It is quite an interesting read, where Erik establishes the origin of the manufacturing industry. I agree to that idea, and it is easy to see how the improvements in the manufacturing industry, or other industries, are applied to the IT world; take these examples:

The hardware bus in motherboards has been used for decades, and now we can also find the software bus,

Enterprise Service Bus

(

ESB

) in a company. The hardware bus connects hardware devices such as microprocessors, memory, or hard drives; the software bus connects applications.

A hardware router in a network routes small fragments of data between different nets to lead these packets to the destination net. The message router software, which implements the message router enterprise integration pattern, routes data objects between applications.

We create software factories to develop software using the same paradigm as a manufacturing industry.

Lean IT is a trending topic nowadays. It tries, roughly speaking, to optimize the IT processes by removing the

muda

(Japanese word meaning wastefulness, uselessness). It is based on the benefits of the lean manufacturing applied by Toyota in the '70s, after the oil crisis, which led it to the top position in the car manufacturing industry.

We find an analogy between what object-oriented language means to programming and what SOA represents to system integrations as well.

We can also find analogies between ITIL V3 and SOA. The way ITIL V3 manages the company services can be applied to managing the SOA services at many points. ITIL V3 deals with the services that a company offers and how to manage them, and SOA deals with the service that a company offers to expose data from one system to the rest of them. Both the conceptions are quite similar if we think of the ITIL V3 company as the IT department and of the company's service as the SOA service.

There is another quite interesting read--Note on Distributed Computing from Sun Microsystem Laboratories published in 1994. In this reading, four members of Sun Microsystems discuss the problems that a company faces when it expands, and the system that made up the IT core of the company and its need to share information. You can find this reading at http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.7969&rep=rep1&type=pdf.

In the early '90s, when companies were starting to computerize, they needed to share information from one system to another, which was not an easy task at all. There was a discussion on how to handle the local and remote information as well as which technology to use to share that information.

The Network File System (NFS), by IBM was a good attempt to share that information, but there was still a lot of work left to do. After NFS, other approaches came, such as CORBA and Microsoft DCOM, but they still keep the dependencies between the whole set of applications connected. Refer to the following diagram:

The SOA approach versus CORBA and DCOM

Finally, with the SOA approach, by the end of the '90s, independent applications where able to share their data while avoiding dependencies. This data interchange is done using services. An SOA service is a data interchange need between different systems that accomplishes some rules. These rules are the so-called SOA principles that we will explain as we move on.

SOA principles

The SOA principles are the rules that we always have to keep in mind when taking any kinds of decisions in an SOA organization, such as the following:

Analyzing proposals for services

Deciding whether to add a new functionality to a service or to split it into two services

Solving performance issues

Designing new services

There is no industry agreement about the SOA principles, and some of them publish their own principles. Now, we will go through the principles that will help us in understanding its importance:

Service Standardization

: Services must comply with communication and design agreements defined for the catalog they belong to. These include both high-level specifications and low-level details, such as those mentioned here:

Service name

Functional details

Input data

Output data

Protocols

Security

Service loose coupling

: Services in the catalog must be independent of each other. The only thing a service should know about the rest of the services in the catalog is that they exist. The way to achieve this is by defining service contracts so that when a service needs to use another one, it has to just use that service contract.

Service abstraction

: The service should be a black box just defined by its contracts. The contract specifies the input and output parameters with no information about how the process is performed at all. This reduces the coupling with other services to a minimum.

Service reusability