PIE - An End-User Development Environment for Internet Programming
Matija Podravec, Faculty of Electrical Engineering
and Computing, Croatia
Abstract:
In its today’s form, majority of end-users experience
the Internet as a global distributed system for publishing, searching,
and sharing various kinds of information. Internet users have little or
no control over the way Internet behaves, the way it can be used, and
the content of information it provides. However, contemporary society
requires a global networked system that provides high degree of customization
and flexibility in exploitation of Internet resources. In this tutorial,
we demonstrate
Programmable Internet Environment (PIE), an end-user oriented framework
that enables on-demand creation of customizable, configurable, and programmable
environment over shared Internet infrastructure. PIE framework provides
Internet users with simple, interactive, and easy-to-use web-browser based
interface that enables creation of distributed environment for design,
development, deployment, and execution of distributed applications and
business processes. Using PIE framework, Internet users can transform
the Internet from global information system into global end-user programmable
environment.
PIE framework leverages service-oriented programming model
for development of distributed applications or business processes. Elementary
building blocks in design and development of distributed applications
are Web services. Composition of services enables hierarchical construction
of complex services by reusing more elementary services, thus facilitating
and reducing the development efforts. PIE framework distinguishes between
two types of services. Computational services provide domain-specific
computational facilities. Coopetition services (cooperation + competition)
enable communication and synchronization between computational services.
PIE framework provides four types of coopetition services: binary and
counting semaphore, mailbox, and event channel.
Development of distributed application consists of design
phase and implementation phase. Design of distributed application is divided
into decomposition of application logic into a set of independent computational
services and definition of coordination logic for proper synchronization
of those services. Coordination logic is decomposed into a set of distributed
programs. Distributed programs are independent programming units that
coordinate the execution of services comprising distributed
application. Distributed program utilizes service composition to connect
independent services into composite service that implements the fragment
of distributed application. By invoking computational services, distributed
program executes application-specific computational logic. Furthermore,
by invoking coopetition services, distributed program synchronizes the
execution of computational services. The order in which distributed programs
invoke computational and coopetition
services is defined by the workflow of distributed application.
Interactive programming environment available within the
PIE framework supports the implementation of distributed programs. This
environment uses an easyto- use methodology with point-and-click driven
programming exposed through a web-browser enabled interface. Process of
implementing distributed programs is facilitated through the system of
interactive graphical menus. Sequence of menus presented to the user and
the content of menu in each step of interactive session is generated dynamically,
in dependence of the context the user works with. For example, if user
wants to invoke some computational service, context-aware programming
environment will instruct him to choose the service location and present
him the list of only those nodes on which this service is installed. Based
on the sequence of user’s actions through the system of interactive menus,
PIE framework generates the workflow of distributed program in the form
of text-based service composition language.
Distribution of composite application in the form of Web
services across the Internet can be accomplished in two ways. Services
can be distributed in a wellknown and standard way by using WWW address
space in which each service is identified with Uniform Resource Identifier.
However, distribution of Web services across physical communication space
tightly couples the services with their physical locations. To facilitate
application distribution, PIE framework provides the users with the ability
to create virtual communication space on top of the Internet. Virtual
communication space is established through a node-centric virtual network.
Virtual network utilizes underlying physical network to transmit the data
across the Internet, but uses its own address space and routing procedures,
independent of physical network. Each node inside the virtual network
is assigned with a unique logical name. Virtual network control software
maintains the distributed naming and routing tables, which contain information
about mapping the logical node names into their physical addresses, as
well as instructions for routing the messages between logical nodes.
Utilizing virtual communication space, distributed application
is transparent to node mobility and resistant to node failures. In case
of failure of physical machine that hosts the required logical node, virtual
network control software updates the record in its naming tables, redirecting
thus the messages for the same logical node to different physical location.
In addition to providing the distribution of application across the virtual
communication network, PIE framework enables the users to dynamically
manage the virtual network by adding and removing logical nodes as necessary.
Computational and coopetition services that users can deploy over nodes
of virtual network have to be available in Service Repository. Service
Repository is a special-purpose service that acts as a container of service
installation packages. To manage the service deployment process, PIE framework
exposes to the users the functionality of adding and removing service
installation packages to and from the Service Repository. To store the
service installation package into Service Repository, user should provide
its executable files, service description written in WSDL language, and
service installation script. Service installation package stored once
into Service Repository can be used for unlimited number of service deployments.
Service deployment within PIE framework utilizes the functionalities
of Service Repository and two additional special-purpose services. Service
Registry aggregates all the information about the state of the distributed
environment. Among other things, Service Registry contains information
about deployment of services over nodes of virtual network and the rest
of the Internet. Service Dispatcher is a service whose role is to deploy
other services on local logical node. When accepts the user request for
service deployment, Service Dispatcher retrieves the service installation
package from Service Repository and installs the service on local node.
During the installation process, Service Dispather uses the instructions
from the service installation script. If installation finishes successfully,
Service Dispatcher informs Service Registry that new service is installed
and ready for use. Service Dispatcher is automatically deployed on each
logical node immediately after its creation. Services that should preserve
some stateful information between two or more user requests have to be
instantiated before being used. Instantiation of stateful service is accomplished
programmatically, by implementing a distributed program that invokes the
operation for creating a service instance. In addition, instantiation
of coopetition services, as special-purpose stateful services inside the
PIE framework, can be accomplished manually, using web-browser enabled
interface.
Execution of distributed application within PIE framework
is performed in twophase process. During the first phase, distributed
programs written in custom-defined service composition language are translated
to CL (Coopetition Langugage) language, which is a subset of WS-BPEL.
Translation facilities are provided by special-purpose service, called
Program Translator. Program Translator fetches distributed programs written
in simple service composition language from program queue and puts the
translated distributed programs written in CL language into job queue.
Both program queue and job queue are instances of mailbox coopetition
service. Second phase of
application execution begins with interpretation of distributed programs
written in CL language. Interpretation facilities are provided by another
special-purpose service, called Program Interpreter. Program Interpreter
fetches distributed programs written in CL language from job queue, interprets
them, and executes the workflow specified by CL statements.
PIE framework provides the user with full control over
distributed program translation and execution processes. According to
his preferences, user can deploy and start an arbitrary number of Program
Translators and Program Interpreters over nodes of virtual network. The
number of started Program Translators and Program Interpreters determines
the number of distributed programs that can execute in parallel. For each
Program Translator started in the network, user should define two
mailbox instances, one to serve as a program queue, and another to serve
as a job queue. Similarly, for each Program Interpreter started in the
network, user should define the mailbox instance that will serve as a
job queue. Deployment and starting of Program Translators and Program
Interpreters, as well as definition of program queues and job queues,
are provided through PIE web-browser enabled interface.
Biography
Matija Podravec is a young researcher at the School
of Electrical Engineering and Computing, University of Zagreb, Croatia.
In 2004, he joined a national “CroGrid” initiative, which gets together
leading academic and industrial IT centers in Croatia. His research interests
include distributed system design methodologies, Web services, service-oriented
architecture and service-oriented programming model, and QoS. In cooperation
with Ericsson Nikola Tesla and Croatian Ministry of Science, Education,
and Sports, he participated in organization of workshop on design and
development of parallel and distributed GRID and Internet applications
held in July 2005 at School of Electrical Engineering and Computing.
|