Tuesday, November 22, 2011

Service Oriented Architecture

Currently, Web services represent the most widely used technology to expose the business logic implemented by enterprise applications on the web (internet and intranet). Through the adoption of web services it’s possible to encapsulate the application-logic, exposing it as a set of reusable services, promoting the interaction and the integration of the different applications (business to business integration) and minimizing the inefficiencies introduced by human actions.

This new distributed collaborative structure brings a set of advantages:

  • Software as a service: Unlike traditional software, a Web service can be delivered and used as a cross-platform communication channel. Web services allow encapsulation: the application components can be isolated so that only the layer that represents the actual service is exposed outside. This has two key advantages: independence from the implementation and security of the internal system.
  • Interoperability: The business logic encapsulated inside a Web service is fully decentralized and accessible through the internet from any platform, device or programming language.
  • Standards: The concepts behind Web services are governed by specific standards that are universally recognized and approved by the largest and most important companies in the world of Information Technology.
  • Ease of development: Developing a set of Web services around a layer of existing software is a simple task that should not require changes to the original application code. Thanks to a huge number of tools, the incremental development of a Web service-based application has become simple and natural, even in the open-source world.

The strength of Web service technology is the standardization and communication that takes place through the exchange of information in a textual format. On the one hand this limits the performance for the processing overhead of the message semantics, but allows different software platforms to talk each other.

In recent years, Web services have became part of the larger picture that is Service Oriented Architecture (SOA). It defines a new logical model for software development, providing not only an architecture of services seen from a technological perspective, but also policies, best practices, and frameworks by which we ensure the right services are provided and consumed.

It’s important to remark that the SOA approach is not only related to the Web service technology, but has a much wider scope and its principles can be applied to all kinds of software development. Basically, we have progressed over time from software modules or libraries, to objects, to components, and now to services. In the context of software services, the Web services technology provides us with certain architectural characteristics and benefits such as platform independence, loose coupling, self description, and discovery. They can enable a formal separation between the provider and the consumer because of the formality of the interface. But services, whether implemented through Web services or not, can be designed in different ways: they can be published as a general purpose API, which, for example, simply provides Create, Read, Update, and Delete (CRUD) access to a database. The drawback to this approach is that it requires users to understand the underlying data model and to follow the business rules to ensure the integrity and the coherence of the data. This is an example of services without SOA.

In fact, one of the main rules of the SOA paradigm is to assemble and reuse existing services providing added-value services exposed with coarse-grained interfaces that meet business-process requirements. It means that in a SOA architecture, services exposed outside should not be low-level and fine-grained like the CRUD-style API mentioned in the above example. Instead they should implement complex process-oriented business-logic, providing an abstraction layer to the underlying implementation.

The following picture illustrates how the level of granularity depends on the purpose of the software entity. The level of granularity for services tends to be coarser than the level of granularity for objects or components.

One of the primary benefits of the SOA approach is the ability to compose applications, processes, or more complex services from other less complex services. This activity, called “service composition”, allows developers to compose applications and processes using services from heterogeneous environments without regard to the differences and details of those environments.

The picture above shows the nine layers that are involved in a typical SOA architecture:

  1. The Data and Applications Layer: composed of the existing software systems and databases
  2. Enterprise Components Layer: the set of software components like EJBs, APIs, etc. that interacts with the data layer
  3. Services Layer: contains the software components which implement more coarse-grained business operations, invoking the fine-grained “data-centric” services exposed by the component layer
  4. Business Process and Orchestration Layer: represents the aggregation of services into a sequenced process to satisfy the needs of a business requirement
  5. Presentation Layer: the layer where enterprise services are exposed to end users through UI elements that can be reused across multiple applications
  6. Integration Layer: provides the ability to mediate, aggregate, split, transform, route and transport service requests reliably from the service requester to the service provider
  7. Quality of Service (QoS)- Security, Reliability, and Scalability Layer: provides the architecture with the capabilities required to meet non-functional requirements
  8. Governance Layer: covers all aspects of the service life-cycle management

Adding a Web service communication channel between two systems in software architecture can lead to the creation of many individual point-to-point connections which are difficult to maintain. In a future article we’ll see how an important piece of a SOA-based technology infrastructure, the Enterprise Service Bus, can help organizations to implement a service oriented architecture, avoiding the above mentioned problems related to the point-to-point interactions, and providing a framework that ensures a robust communication mechanism, intelligent routing, and sophisticated translation and transformation of services.

Author: Luciano Blasetti

Thursday, November 10, 2011

FAO data published as Linked Open Data

Linked Open Data is a web publishing method that focuses on data and the way that it links to other pieces of data, independent of their physical location around the world. Linked Data, in this case, essentially deals with using the web to link together data that was not previously linked, and take advantage of the potentiality of web publication. It is the equivalent for data what an HTML document is for text (the hypertext of the early days of the internet). But unlike HTML documents, linked data can be used programmatically by machines, and as such, used within web applications.

Publications as Linked Data build on a few basic web standard technologies and protocols. Primarily, URIs to name and locate entities on the web, and the HTTP protocol to exchange web content through web browsers. Secondarily, data is encoded using the web-oriented Resource Description Framework (RDF) language. At this point, data owners can exploit any other relevant data set published using the same technologies and protocols, and make connections (links) between relevant pieces of data.

Let us suppose that a data owner publishes a data set about sardine captures as linked data. The data owner then links their data to the a third party data set, for example, a reliable source of information about biological profiles of fish species. The resulting linked data may be of interest to humans, but it can also be programmatically used in applications to explore the connection between fish capture and the climate.

When Linked Data is published with an explicit open license, or when it is at least openly accessible from a network point of view (not behind an authorization check or paywall), then it is Linked Open Data. The Linked Open Data project (http://richard.cyganiak.de/2007/10/lod/) collects information about the data sets that are published in this way.

FAO, like many other large data producers (BBC, the Library of Congress, the US government, just to name just a few), has started publicizing its data as Linked Open Data. For example, the very first data set published by FAO was the multilingual thesaurus AGROVOC, available in over 20 languages and covering all subject areas related to FAO interests. A human-readable version of these connected data sets is available at the following link: http://aims.fao.org/standards/agrovoc/linked-open-data

Data.fao.org, like AGROVOC, will utilize Linked Open data techniques. The focus for data.fao.org in relation to Linked Open Data will be to connect semantic resources coming from many different sources.

Author: Caterina Caracciolo