Service oriented architecture (SOA), Web services, Information Technology Infrastructure Library (ITIL)

Basics concepts, service IT infrastructure management. Relevant elements of knowledge explication in the framework of lessons learnt from Interim Project.

= Service Oriented Architecture (SOA) =


 * SOA is an architectural pattern for building large information/computational systems using inter-operable services.
 * A large system is decomposed into smaller subsystems which offer services to each other. Every subsystem has a precisely defined responsibility within the large system. The subsystem's abilities are provided as a service to other subsystems and the subsystem can also use services provided by other subsystems.


 * Main advantages
 * Splitting a system into subsystems offering services creates a clear and manageable structure. This enables sustainable continuous development of giant information systems. It also facilitates understanding of the system by involved people (SW architects, developers, server admins).
 * Increases scalability. It is easier to spread the system onto more hardware.
 * Reusability, DRY (don't repeat yourself). One problem is solved in one place. No duplication across company's IT infrastructure.
 * The system can cross the boundaries of one company. The company can offer its services to partners or use other companies' services.


 * Main requirements
 * Openness towards change, not only in IT department. Implementing SOA will most certainly affect the whole company.
 * Complying to standards. Especially for formatting the data transferred between services.


 * SOA is almost always implemented using web services. Unless the system is really small, it is advisable to deploy an Enterprise Service Bus to organize and monitor communication between the web services.


 * SOA is often used for implementation of Business Process Management.


 * SOA implementation
 * Discovering. SOA services have to be discovered by other services. WSDL (Web Service Description Language) can be used to describe the service and interface. WSDL uses XML file format to define endpoints, ports and services.
 * Faster reactions. SOA allows you to react faster to the changing market. You don't have to rework your entire application. You have to start appropriate services and you are ready to go.
 * SOA is more like paradigm. You can use many frameworks to implement it as well as you can do it from a scratch.


 * Security
 * Intruder detection. Security is based on detection of unusual behavior in the system. Intruder always behaves in a different way than a normal user. Services should use some sort of cryptography to ensure data security and consistency.


 * Statelessness
 * SOA should be stateless. You should free up the service from managing the state data whenever possible. This makes the services more scalable and effective.


 * Providing the best services
 * SOA always provides the best available services. When you add a new version to the bus, the new service is automatically used to serve the requests.


 * See the picture of SOA life cycle.

= Web Services =
 * Web service is a form of cooperation between computer systems. It can be viewed as a service system, in which both the provider and the client are computer systems that communicate over the network.
 * The aim of web services is to provide data to the client and perform operations on data (managed by the provider) in behalf of the client.
 * The communication of web service with its client resembles communication of web servers with browsers.
 * A client/server communication model is used. (Web service is the server, clients are clients :) ).
 * The communication is stateless, which enables scalability. The web service doesn't need to maintain a state of communication with every client. It doesn't even need to maintain a persistent connection with the client. It works on a request/response basis.
 * Often, HTTP (HyperText Transfer Protocol) is used for communication.
 * Web services work in a largely technology-agnostic way. It doesn't matter what software and programming languages are used on the provider and the client. This is achieved by using commonly accepted formatting for transferred data.
 * Two formats are commonly used for data exchange, SOAP a JSON.
 * SOAP (Simple Object Access Protocol) is comparatively more complex and contains more metadata. It is used in combination with WSDL (Web Services Description Language), which defines the web service and its available operations. Both SOAP and WSDL are based on XML.
 * JSON (JavaScript Object Notation) comes from JavaScript and is notably simpler (contains as little metadata as possible). It is trending lately, especially for web services that are widely publicly available (it is preferred by e.g. Google, Facebook, Twitter). There is Google discovery API which describes the services in the similar way as WSDL does. WSDL 2.0 can be also used to describe the services using JSON data.

Enterprise Service Bus (ESB)

 * ESB is a software system organizing communication between web services.
 * The web services do not communicate directly to each other, instead they communicate through the ESB.
 * It is a key building block of SOA.
 * Main advantages
 * Data routing between services. Routing mechanisms are powerful, better than using DNS names or IP addresses.
 * Data conversion and alteration when necessary. E.g. when one service uses JSON and the other uses SOAP.
 * Monitoring, audit. Communication between web services can be observed to generate reports and statistics, alert the staff of outages etc.
 * Security. Communication can be encrypted if data travels outside the company's network, through the Internet.
 * The disadvantage is a slight delay in communication when compared to web services communicating directly to each other. ESB may behave as a bottleneck (slowest part of the system).

= IT Services Management (ITSM) =
 * ITSM is a discipline about managing IT infrastructure as a set of services.
 * It breaks away from the traditional technocratic view of IT management („What software should we use?“) and perceives IT department as a supportive element primarily driven by business requirements („How can IT help us be more successful?“).
 * It is often mentioned in connection with ITIL. These two are sometimes mistaken. ITSM is a discipline, ITIL is a concrete set of practices.

= Information Technology Infrastructure Library (ITIL) =
 * ITIL is a set of practices for ITSM.
 * It states how to achieve the goals of ITSM – creation of IT infrastructure in the form of services that support the company's business as much as possible.
 * It is an official documentation issued by the government of Great Britain, it is regularly revised (ITILv3 was released in 2011).
 * It comprises 5 books, each describing a phase in existence and management of an IT service system.
 * ITIL Service Strategy – high-level view of services – value definition, company's long-term IT service strategy, service portfolio, market analysis, business-driven approach.
 * ITIL Service Design – design of the service, including technical concerns – catalog of services, service level management, service availability and scalability, service continuity, security, supplier management (used external services).
 * ITIL Service Transition – launching the service – planning and support of company's transition to using the service, change management, asset and configuration management, release & deploy management, validation and testing, knowledge management.
 * ITIL Service Operation – delivering the service complying to SLA (Service Level Agreement) – event, incident and problem management, request fulfillment, access management.
 * ITIL Continual Service Improvement – further development of a running service – improvement strategy, data gathering, analysis and reporting, improvement implementation.
 * See the picture of ITIL life cycle.