google soa report

Upload: fknr-fekanere

Post on 05-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Google Soa Report

    1/14

    Faculty of technology management 07.12.2009

    Information Technology

    Service Oriented Communications CT30A8901

    SOA, case Google

    Written by:

    Sampo Syrjlinen, 0337918

    Jukka Hilvonen, 0337840

  • 7/31/2019 Google Soa Report

    2/14

    1

    Contents

    1. Introduction ........................................................................................................................ 22. Service Oriented Architecture............................................................................................ 23. Google Apps....................................................................................................................... 24. Google app engine.............................................................................................................. 3

    4.1 Google app engine for Python .................................................................................... 34.2 Google app engine for Java ........................................................................................4

    5. Google Data Protocol.........................................................................................................46. Google Apps APIs.............................................................................................................. 5

    6.1 Management APIs....................................................................................................... 56.2 App-specific APIs.......................................................................................................76.3 Using APIs.................................................................................................................. 8

    7. Google vs. SOA .................................................................................................................8References ............................................................................................................................... 12

  • 7/31/2019 Google Soa Report

    3/14

    2

    1. IntroductionThis document is made as an assignment to the Service Oriented Communications course in

    Lappeenranta University of Technology. In this paper we will first briefly cover the

    principles of service oriented architecture then describe Google apps, Google app engine,

    Google data protocol and finally discuss how Googles services fit in to the SOA paradigm.

    2. Service Oriented ArchitectureOASIS describes SOA in its reference model as a paradigm for organizing and utilizing

    distributed capabilities that may be under the control of different ownership domain (OASIS

    Standard, 2006). Individuals and organizations create capabilities to serve various needs and

    SOA strives to provide the framework for matching and combining the capabilities to address

    the needs (OASIS Standard, 2006). In software engineering the SOA model allows for

    applications to call upon various services across the network in a manner that frees the

    software developer from implementing the same services over and over again in every

    application. Applications and services needed are modeled after business logic of the

    company in question. Services are wrapped in standard interfaces and protocols that hide the

    infrastructure and programming language that produces the service. Once tested and

    functioning, services are published in a directory in order for users, applications or otherservices to find them. (http://www.infoworld.com/d/architecture/infoclipz-service-oriented-

    architecture-soa-899). Global established SOAs have been slow to develop because of

    various conventions in data structure, semantics, processes and the lack of widely accepted

    service registries. Furthermore most services are supported in a strictly professional context

    which prevents normal internet users from discovering and interacting with services on the

    web (Schroth&Christ, 2007).

    Mashup is described by Wikipedia as follows: mashup is a web page or application that

    combines data or functionality from two or more external sources to create a new service

    (en.wikipedia.org). A mashup is a way of implementing SOA in web services that doesnt

    require extensive technical expertise. Resources used for building mashups are directed for

    the majority of internet users and Google is the leading provider of these resources

    (Schroth&Christ, 2007).

    3. Google AppsGoogle provides an extensible online service suite called Google apps. Google apps include

    services for communication and collaboration as follows:

  • 7/31/2019 Google Soa Report

    4/14

    3

    Communication:

    Gmail, an unified communication application with email, instant messaging, voiceand video communication. Gmail offers features such as spam filtering, large data

    storage (up to 25Gb with premium edition), offline client and migration tools for

    Microsoft Outlook and Lotus Notes.

    Google calendar, calendar application that supports scheduling appointments, sharedprojects, most mobile devices and a publishing feature.

    Collaboration:

    Google docs, web-based application suite that includes documents, spreadsheet andpresentations. Google docs works in the browser and offers the users flexibility to

    work regardless of their operating system or hardware setup. The same document

    can be accessed by multiple users at the same time permitting real-time

    collaboration. Supports popular file formats such as .doc, .ppt, .xls and pdf.

    Google sites, a tool for creating collaborative sites. Easy to use tool for setting upintra-/extranets and project sites. Sites can be build from templates without coding.

    Google videos, a service for hosting and streaming videos. Google Talk, instant messaging and voice conversation platform for easy and quick

    communication with friends and colleagues.

    4. Google app engineGoogle app engine is a way of running web applications on Google infrastructure. Google

    provides runtime environments for python and java. Hosting an application on Google app

    engine is free to start with but when certain limits are reached (500MB of storage and ~5

    million page views a month) billing can be enabled in order for the applications to grow

    beyond free quota. Administrators can set billing budgets for their applications to avoid

    surprises in the cost of hosting their applications.

    4.1Google app engine for PythonPython was the first supported programming language for Google app engine, the supported

    version of Python is 2.5. Python applications communicate with Google app engine server via

    CGI protocol. WSGI-compatible web application frameworks are supported through CGI

    adapter but Google app engine also includes a simple web application framework in itself

    called webapp. Applications are isolated to a specific sandbox that ensures that applicationsdo not interfere with other applications or the platform itself. Specific services are allocated

  • 7/31/2019 Google Soa Report

    5/14

    4

    for the applications to communicate over the internet and to store data. Datastore and

    memcache are provided for storing data: datastore for persistent data storage and memcache

    for fast caching of responses to queries and calculations. Google app engine for python uses

    GQL query language or query interface to retrieve entities from datastore. Communication

    over the web is done using http or https protocols using some of the standard Python modulesor app engine Fetch service API. Applications can also use Python mail API to send and

    receive email. Authentication services for the applications are handled by the Google

    Accounts API. Scheduled tasks can be done with the Cron service for Python. Image data is

    processed with the images service that allows for manipulating of image data in multiple

    formats. (www.code.google.com, 2009).

    Google provides developers with the app engine Python service development kit (SDK).

    With the tools included a developer can run his applications locally on his computer for test

    purposes. Other features in the development kit allow for uploading data to the datastore,

    uploading the application to the app engine service, managing datastore indexes anddownloading log data from the service. (www.code.google.com, 2009).

    4.2Google app engine for JavaThe second supported programming language so far is Java. Java applications in Google app

    engine are run in Java 6 virtual machine. Java 5 and later are supported in the Java SDK and

    the platform can use classes compiled with any version of the Java compiler up to v.6.

    Similarly to the Python environment the Java virtual machine that runs Java applications in

    app engine is an isolated sandbox environment. Similar restrictions in writing data to local

    system or setting up network connections apply to the Java environment and the Python

    environment. Same services such as datastore, memcache, http/https communication through

    URL Fetch, mail, images and Google accounts can also be used with Java.

    SDK for app engine Java developers contains the same functionalities as does the one for

    Python. Furthermore it includes a plugin for Eclipse that adds features to the Eclipse

    integrated development environment (IDE).

    5. Google Data ProtocolGoogle Data Protocol is a way to extend the services offered by Google for use in other

    places, such as inside corporate firewall or in home network. Google Data Protocol is based

    on REST-style software architecture. In rest architecture, communication is based on client-

    server model; clients send requests, servers operate the requests and send responses back to

    clients. The word REST comes to the concept from that the client can be in two states,

    between application states, or at rest. When the client is in rest, user can interact with theclient, but doesnt consume or load the servers or network.

  • 7/31/2019 Google Soa Report

    6/14

    5

    Data Syntax:

    Google Data Protocol is based on (and extends) various syndication standards suchas Atom 1.0, RSS 2.0 and Atom Publishing Protocol (APP). Therefore,

    o Google Data Protocol uses HTTP-layer as default method for handling thecommunication (sending and receiving information between the services).

    o GDP uses XML (eXtensible Markup Language)-standard in the format ofAtom-feed to give the information a structure. XML and Atom defines e.g.

    type-attribute of the information (such as HTML, Text, XHMTL) Element definitions Metadata definitions of the information

    o Information sent is collected to AtomPub items..Google Data API (application programming interface) is standard interface which is used in

    every single more specialised API within Google Services.

    6. Google Apps APIsGoogle Apps are offered in three editions; standard, premier and education. The edition

    chosen affects to what kind of APIs users are able to handle. In standard edition, for example,

    only federated login service, user profiles-, contacts-, documents list-, spreadsheet-, and

    calendar data and calendar resources APIs are available. Standard edition is free, premier

    edition is about $50 per year and education edition is also free. Premier edition offers service

    level agreements, larger storage space compared to standard edition, enhanced support,

    advanced virus & spam filtering plus much more.

    6.1Management APIsProvisioning API

    Google offers to APIs to handle the user management and single sign-on (SSO) of users.

    User provisioning (management) allows administrators to manage user accounts and

    synchronize Google Apps users with internal user-management system.

    Email Migration API

    With E-mail migration users can migrate email from any legacy e-mail data source into

    Google Apps. Users can utilize this API by defining email server data store, interface

    protocol etc. and then upload the email messages to a users mail box.

    Reporting API

    Reporting API allows users to watch and monitor the overall usage of Google Apps account.

    Users can utilize a variety of CSV formatted reports about activity, storage etc.

  • 7/31/2019 Google Soa Report

    7/14

    6

    SSO (Single Sign-On) Service

    Google Apps SSO service uses XML-based SAML (Security Assertion Markup Language)

    standard for exchange of user authentication and authorization data between secure web

    domains. With SAML, service providers can contact different online service provider to

    authenticate users who are trying to get an access to secure location.

    In Google-SSO and SAML concept (figure 1), Google acts as a service provider who offers

    services such as e-mail (Gmail) or intranet-style web-pages (Google Sites). Partners of

    Google act as identity provider who control user information, usernames, password and other

    information used to identify, authenticate and authorize users for services that Google offers.

    Google uses also a variety of different open source and commercial identity provider

    solutions which help implement SSO with Google Apps.

  • 7/31/2019 Google Soa Report

    8/14

    7

    Figure 1: Google SSO transaction model

    6.2App-specific APIsSpecific APIs exist for: Google Calendar, Gadgets, Spreadsheets and Talk. With these APIs

    users can customize the Apps.

    Domain Shared Contacts

  • 7/31/2019 Google Soa Report

    9/14

    8

    The purpose of domain shared contacts API is to provide possibility for users to import

    external contacts that are shared to all Google Apps domain users. Shared contacts are visible

    to every user in the domain and all Google services have access to these contacts.

    User Profiles API

    With User Profiles API, client applications can update and retrieve user profiles in the

    Google Apps domain.

    Calendar Data API

    Google Calendar Data API allows users with client applications to manage calendar events in

    the form of Google Data API feeds.

    Sites Data API

    Google Sites API allows users to modify and manage Google Sites Data in the form ofGoogle Data API feeds. Users can use client applications to create and modify the contents of

    the corporate Google Site, up- and download files, review version history and display user

    activity history.

    6.3Using APIsBy the nature of the API, Google Apps API is used in programming IDEs by first

    downloading the correct APIs, which are client libraries. The APIs are used as a tool to write

    client application for interacting with the services provided by these APIs.

    To get access to write client or web applications that use particular Google Apps service,

    whole Google Data Api and specific API should be downloaded. Client libraries can be

    downloaded from Google Code website. There are client libraries for different programming

    languages: Java, Javascript, .NET, PHP, Python and Objective-C.

    After downloading the libraries, they should be imported in the development environment,

    such as NetBeans or Eclipse. Also the libraries should be imported to the developed project

    as well.

    7. Google vs. SOAIn our understanding the goal of the SOA paradigm is to enhance the efficient use of services

    through the web, create a service based foundation on which developers can build on and to

    make the use of web services faster and more flexible. This is profitable for both parties

    (offering / using). Service provider profit in many ways; reputation increases and

    interoperability of the service increases, to name a few. Clients that make use of the offered

    services benefit by that they dont have to invent the wheel over and over again whichdecreases time required for development of a particular project.

  • 7/31/2019 Google Soa Report

    10/14

    9

    Gartner lists the benefits to enterprise IT from SOA as follows (Natis, 2003):

    Incremental development and deployment of business software Reuse of business components in multiple business experiences Low-cost assembly of some new business processes Clarity of application topology

    And the mistakenly SOA attributed benefits:

    Simple software engineering Free integration or interoperability Technology independence Vendor independence The ultimate architecture for the modern enterprise

    As with the Gartner study cited above SOA is seen and discussed mostly in business context.Google on the other hand targets and involves the end user as well as businesses. There is a

    distinct effort in Googles part to reach out to the masses of internet users.

    From the SOA service principles (Erl, 2008):

    Standardized service contract Service loose coupling Service abstraction Service reusability

    Service autonomy Service statelessness Service discoverability Service composability

    From our perspective, Google adheres to following principles: loosely coupled services,

    abstraction, reusability, autonomy, discoverability and composability. Google uses XML,

    Atom, APP, HTTP and JSON standards which all are internationally developed and

    standardized.

    Google Service APIs are not grounded to special programming languages: they can be usedwith Java, .NET, PHP and Python. This adheres to abstraction principle of SOA principles.

    Only counteracting property in the autonomity of Google Services is that someone

    (preferably every user of the services) has to have Google account to be able to use the

    services. Otherwise, Google Services are very autonomous and interoperable to legacy- and

    partners systems and services.

    The discoverability of Google Services comes from the use of programming-language

    specific client libraries, which have to be downloaded before using them. Discoverability is

    not as efficient as in e..g. Web Services, but still very usable.

  • 7/31/2019 Google Soa Report

    11/14

    10

    Figure 2: Googles principles

    When examining the Google approach from the business perspective, Googles services are

    very well thought of. Google can offer their services to individual users and education

    organizations for free, and the price for companies is not high. This is due to the popularity of

    Google Search engine, business and personal services. The popularity of these services

    wouldnt perhaps be so overwhelming if the services offered wouldnt be designed that way

    that; a) they are easy to use, b) they are extensible and c) they are easily integrated and

    combined to other services, legacy systems and to each others.

    Very good examples of good services of Google are the Google AdWords and AdSense.

    With AdWords and AdSense corporations and individuals can advertise their products and

    services either directly in Google Search Engine results or make some money by attaching

    the AdSense-service to their websites. Ad-Services are very easy to use and attach to existing

    code that is one factor explaining the popularity of Google Services.

  • 7/31/2019 Google Soa Report

    12/14

    11

    The following figures 5. and 6. illustrate the similarities in SOA and Google services

    structure.

    Figure 2: Google Service Bus and Discovery

    Figure 3: SOA Bus Concept (Porras 2009)

  • 7/31/2019 Google Soa Report

    13/14

    12

    References:

    Reference Model for Service Oriented Architecture 1.0. 2006. OASIS Open. 31s.

    http://docs.oasis-open.org/soa-rm/v1.0/soa-rm.pdf

    Schroth, C. Christ, O. IEEE International Conference on Services Computing, 2007, Brave

    New Web: Emerging Design Principles and Technologies as Enablers of a Global SOA, 9-13

    July, s. 597 604

    Wikipedia, 2009. Representational State Transfer. From:

    http://en.wikipedia.org/wiki/Representational_State_Transfer 09.12.2009

    http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid) , 08.12.2009

    Google, 2009. Google Apps. From: http://www.google.com/intl/fi/apps/business/index.html

    09.12.2009

    Google 2009. Google Apps APIs. From: http://code.google.com/intl/fi-

    FI/apis/apps/overview.html 09.12.2009

  • 7/31/2019 Google Soa Report

    14/14

    13

    Google 2009. Google Appengine. From: http://code.google.com/intl/fi-

    FI/appengine/docs/python/overview.html 09.12.2009

    http://code.google.com/intl/fi-FI/appengine/docs/java/overview.html 09.12.2009