project caroline: platform as a service, for your service, at your

66
2007 JavaOne SM Conference | Session TS-1991 | TS-1991 Project Caroline: Platform As A Service, For Your Service, At Your Service Bob Scheifler Distinguished Engineer Sun Microsystems, Inc. http://research.sun.com/projects/caroline

Upload: others

Post on 12-Sep-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 |

TS-1991

Project Caroline:Platform As A Service,For Your Service, At Your Service

Bob ScheiflerDistinguished EngineerSun Microsystems, Inc.http://research.sun.com/projects/caroline

Page 2: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 2

Goal of This Talk

Learn how Project Caroline helps SaaS providers develop services rapidly, update them frequently, and automatically flex resource use to match changing runtime demands

What you will gain

Page 3: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 3

AgendaProject Caroline At-a-GlanceSystem ArchitectureProgrammatic Resource AllocationExample ApplicationCurrent ImplementationSummary

Page 4: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 4

What Is Project Caroline?● Advanced research project at Sun

Microsystems● Hosting platform for development and

delivery of dynamically scalable Internet-based services

● Programmatically configurable pool of virtualized compute, storage, and networking resources

Page 5: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 5

Developer View

Your Service Code

Project Caroline Platform Resources

VMsLaunch my Internet

app across 2 load-balanced VMs,

connected to a backend database.

Add or remove VMs to match demand

(recycle removed VMs)

+

Internet

Page 6: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 6

For Small-to-Medium SaaS Providers● Who wants to embrace new business models

and processes● Offer long-running and rapidly evolving services● Flex use-of-platform resources to match changing

customer demands● Leverage hosted infrastructure● Use higher-level programming languages

● Java™ programming language, Perl, Ruby, Python, ...

Page 7: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 7

Programmatically re/configure systemsKey Platform Features (1)

● Programmatically allocate, monitor, and control virtualized compute, storage, and networking resources

● Services can themselves update and flex platform usage, dynamically and without human intervention

Page 8: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 8

High level virtualization abstractionsKey Platform Features (2)

● Resources are exposed through high level abstractions● Language level VMs● Networks● Network accessible file systems and databases

● Improves developer productivity● Insulates code from infrastructure changes

Page 9: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 9

Single system viewKey Platform Features (3)

● Presents a horizontally scaled pool of resources as a single system

● Provides developers with a unified platform for allocating and controlling these resources

● Draws on resource pool to meet allocation requests of multiple applications

Page 10: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 10

AgendaProject Caroline At-a-GlanceSystem ArchitectureProgrammatic Resource AllocationExample ApplicationCurrent ImplementationSummary

Page 11: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 11

System View

Virtual Machines

Java Runtime Environment, Perl, ...

End-UserIdentity &

Access Mgmt

File Systems DB Instances

Internet

DNS SysCallNAT, LB VPN JDWP PortalWebDAV

VLANs

Page 12: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 12

Software Layers—APIs● “System call” API

● Java Platform, Standard Edition (Java SE)● Programmatic system resource allocation and control● Usable both on-grid and off-grid● Off-grid API and VPN allow mixed deployments

● Higher-level libraries and frameworks● Focus on selected existing packages● Deployment and management automation

● Example: for Servlet containers● Aiding SaaS delivery

● Examples: end-user management, master+workers w/flexing

Page 13: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 13

Software Layers—Services● Portal tools also deployable by customers

● Forums, blogs, wikis, help desks, knowledge bases● System-wide Liberty identity provider

● End-user identity management and access control● End-users are the principals● Customer applications are the service providers

Page 14: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 14

Software Layers—IDE● Off-grid IDE used to develop, debug and deploy

on-grid application● Automated deployment

● Using WebDAV and off-grid system call API● Debug on-grid Java platform processes● Monitor on-grid resources● NetBeans™ software and Eclipse

Page 15: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 15

AgendaProject Caroline At-a-GlanceSystem ArchitectureProgrammatic Resource AllocationExample ApplicationCurrent ImplementationSummary

Page 16: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 16

Programmatic Resource Allocation● Process● File System● DB instance● Network (VLAN)● IP address (internal, Internet)● Internet connectivity (NAT, L4/L7 Load Bal, VPN)● Host name● Host name mapping (DNS)

Page 17: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 17

Common Resource Features● Named when created

● Avoids lost resource on network failure or caller crash● Separate name space for each resource class

● Identified by UUID (assigned by system)● Names can be reused over time

● Basic operations● Create (name, configuration)● Find (name, UUID, configuration content, meta-data)● Change configuration● Destroy

Page 18: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 18

Process Configuration (1)● Command line

● argv[0] is an enum: Java runtime environment, Perl, …● File system mounts● IP addresses● IP traffic blocking (IP Filter)● Exit action (park, restart, destroy)

Page 19: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 19

Process Configuration (2)● Stdin/stdout/stderr files● Working directory● Home directory● Environment variables● HW constraints (shared/exclusive cores, memory)● Non-collocation constraints

Page 20: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 20

Process-Specific Operations● Start● Stop

● Gentle (let shutdown hooks run)● Hard

● Generate thread dump● Get current state

● Starting, running, or not running● Incarnation # (# of start calls)● Last process outcome (exit value, signal, exception)● OK or stuck due to start failure

Page 21: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 21

Process Model Impacts● Native libraries not supported

● OS and HW independence● No local Runtime.exec

● “Remote” exec via system call API● No stdio pipes between processes

● Alternate communication mechanisms used instead

Page 22: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 22

File Systems● Solaris™ Zettabyte File System (ZFS) with NFS

access● Thousands of file systems from one storage pool,

efficiently and reliably● Base: normal read/write file system● Snapshot: read-only copy of a base or clone

● Shares space with original until original is modified● Clone: copy-on-write clone of a snapshot

● Shares space with snapshot until clone is modified

Page 23: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 23

File System Configuration● Storage reservation● Storage quota● Access control

● Mounts by customer’s processes● Mounts by other customer’s processes● WebDAV

Page 24: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 24

File System-Specific Operations● Rollback base or clone to most recent snapshot● Backup to file

● Entire snapshot● Delta between two snapshots

● Restore from backup● Get current disk usage

Page 25: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 25

Databases● PostgreSQL instances with local storage● System-managed installation

● Can always bring your own Java DB● Embedded or running as a separate process

Page 26: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 26

Database Configuration● IP addresses● Storage reservation● Storage quota● Access control

● Connections from processes on same networks

Page 27: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 27

Internal Networks● Network configuration

● # of allocatable IP addresses● Access control

● Address allocation by other customers

● Network-specific operations● Allocate IP address● Free IP address

Page 28: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 28

Internet Connectivity● Inbound and outbound traffic

● Direct binding to Internet-routable addresses● Static NAT (Internet address ↔ internal address)● VPN (bind off-grid process to internal address)

● Inbound traffic● L4 load balancing: TCP, SSL, UDP

● Internet address+port → {internal address+port}● L7 load balancing: HTTP, HTTPS

● Internet address+port+{URI filter → {internal address+port}}

● Outbound traffic● Dynamic NAT (internal address → Internet address)

Page 29: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 29

DNS Configuration● Host name → list of IP addresses

Page 30: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 30

AgendaProject Caroline At-a-GlanceSystem ArchitectureProgrammatic Resource AllocationExample ApplicationCurrent ImplementationSummary

Page 31: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 31

Example Application● On-grid manager process

● Sets up N replicated Servlet containers● Sets up Internet-facing load-balancer● Flexes the number of replicas up and down to meet

changing demand● Off-grid setup app

● Automates setup of manager process

Page 32: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 32

SC SC SCMGR

● ● ●

MGR SCSC SC

LB

On-Grid Service

SC-FS SC-FS SC-FSMGR-FS

Page 33: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 33

Off-Grid App—Initial SetupGrid grid = GridFactory.getGrid(gridURL, userid, passwd);

FileSystem mgrFS = grid.createFileSystem(“manager”);

WebdavResource wdr =new WebdavResource(new HttpURL(webdavURL + “/manager/”));

wdr.setUserInfo(userid, passwd);wdr.putMethod(“manager.jar”, new File(“manager.jar”));wdr.putMethod(“container.zip”, new File(“container.zip”));wdr.putMethod(“servlets.zip”, new File(“servlets.zip”));

Network myNet = grid.createNetwork(“myNet”, 16);

Page 34: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 34

Off-Grid App—Start ManagerProcessConfiguration cfg = new ProcessConfiguration();cfg.setRuntimeEnvironment(RuntimeEnvironment.JAVA);cfg.setCommandLine(new String[]{“-jar”, “manager.jar”});cfg.setFileSystems(Collections.singleton(

new MountParameters(mgrFS, “manager”))); cfg.setWorkingDirectory(“/files/manager”);NetworkAddress mgrIP = myNet.allocateAddress(“manager”);cfg.setNetworkAddresses(Collections.singleton(mgrIP));cfg.setProcessExitAction(ProcessExitAction.RESTART);cfg.setSystemSinks(“stdout.txt”, false,

“stderr.txt”, false);

ProcessRegistration mgrPR =grid.createProcessRegistration(“manager”, cfg);

mgrPR.start();

Page 35: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 35

Manager Process—Initial Setup and Replica Setup// instance variablesGrid grid = GridFactory.getProcessContext().getGrid();Network myNet = grid.getNetwork(“myNet”);FileSystemSnapshot goldSnap;

FileSystem goldFS = grid.createFileSystem(“golden”);grid.mountFileSystem(new MountParameters(goldFS, “golden”));Util.unzip(“container.zip”, “/files/golden”);Util.unzip(“servlets.zip”, “/files/golden”);grid.unmountFileSystem(“golden”);goldSnap = goldFS.createSnapshot(“goldsnap”);

for (int i = 1; i <= N; i++) {addReplica();

}

Page 36: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 36

Manager Process—addReplica() Part 1// more instance variablesLinkedList<RealService> services = new LinkedList<RealService>();LinkedList<FileSystem> clones = new LinkedList<FileSystem>();LinkedList<ProcessRegistration> procRegs =

new LinkedList<ProcessRegistration>();

void addReplica() {String replicaName = “replica-” + (services.size() + 1);NetworkAddress replicaIP = myNet.allocateAddress(replicaName);services.add(new RealService(replicaIP, 8080));FileSystem cloneFS = goldSnap.clone(replicaName);clones.add(cloneFS);grid.mountFileSystem(new MountParameters(cloneFS, “server”));editConfigurationFiles(“/files/server”, …);grid.unmountFileSystem(“server”);

Page 37: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 37

Manager Process—addReplica() Part 2ProcessConfiguration cfg = new ProcessConfiguration();cfg.setRuntimeEnvironment(RuntimeEnvironment.JAVA);cfg.setCommandLine(new String[]{<<container command line>>});cfg.setFileSystems(Collections.singleton(

new MountParameters(cloneFS, “server”)));cfg.setWorkingDirectory(“/files/server”);cfg.setNetworkAddresses(Collections.singleton(replicaIP));cfg.setProcessExitAction(ProcessExitAction.RESTART);cfg.setSystemSinks(“stdout.txt”, false, “stderr.txt”, false);

ProcessRegistration replicaPR =grid.createProcessRegistration(replicaName, cfg);

procRegs.add(replicaPR);

replicaPR.start();}

Page 38: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 38

Manager Process—LB Setup// more instance variablesL4VirtualServiceConfiguration lbCfg;NetworkSetting myLB;

lbCfg = new L4VirtualServiceConfiguration();NetworkAddress extIP =

grid.allocateInternetAddress(“external”);lbCfg.setExternalAddress(extIP);lbCfg.setPort(80);lbCfg.setProtocol(Protocol.TCP);lbCfg.setRealServices(services);

myLB = grid.createNetworkSetting(“myService”, lbCfg);

grid.bindHostName(myHostName,Collections.singletonList(extIP));

Page 39: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 39

Manager Process—Flex UpaddReplica();

lbCfg.setRealServices(services);

myLB.changeConfiguration(lbCfg);

Page 40: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 40

Manager Process—Flex DownRealService svc = services.removeLast();lbCfg.setRealServices(services);

myLB.changeConfiguration(lbCfg);

ProcessRegistration replicaPR = procRegs.removeLast();replicaPR.destroy();

svc.getNetworkAddress().delete();

FileSystem cloneFS = clones.removeLast();cloneFS.destroy();

Page 41: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 41

AgendaProject Caroline At-a-GlanceSystem ArchitectureProgrammatic Resource AllocationExample ApplicationCurrent ImplementationSummary

Page 42: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 42

Current Implementation

DNS SysCallNAT, LB VPN

Virtual Machines

Java runtime environment, Perl, ...

VLANsEnd UserIdentity &

Access Mgmt

File Systems DB Instances

Sun WAN

JDWP PortalWebDAV

Page 43: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 43

Processes● Basic functionality in place● WIP

● More than one IP address● IP traffic blocking● HW constraints● Non-collocation constraints

● TBD● Beyond Java runtime environment and Perl

Page 44: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 44

Storage● Basic functionality in place● File Systems

● WIP● Dynamic mounts

● TBD● Backup and restore● Access control

● Databases● TBD

● Storage reservation and quota● Administrative control

Page 45: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 45

Networking● Single shared internal network● Basic NAT and LB connectivity in place● WIP

● Allocatable internal Networks● SSL and HTTPS load balancing● DNS● VPN

● TBD● Allocatable Internet addresses

Page 46: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 46

Other Software Layers● Basic NetBeans software support in place● WIP

● LB’d Servlet container deployment automation● Investigations

● Libraries, Frameworks, and Portal tools● TBD

● End-user identity and access management● Eclipse support

Page 47: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 47

X2200 (20 4-core)

Current Implementation External Net(Sun WAN)

Data Net

Mgmt NetN2120V

T2000 (32-thread)

T2000 (32-thread)

Resource Manager (Java SE)

SysCall Agent (Java SE)JDWP Agent (Java SE)

Node Agent (Java SE)0 to N VMs in zones

App Switch

NFS ServerWebDAV Server

FileSystem Agent (Java SE)DB Agent (Java SE)

Page 48: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 48

Solaris 10 OS Feature Use● Zones● Solaris ZFS, snapshots, clones● NFS● PostgreSQL● IP Instances, IP Filter, Crossbow● Resource Pools● Fair Share Scheduler● Extended Accounting

Page 49: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 49

Behind the Scenes—Two System Calls● Starting a process● Creating a load balancer

Page 50: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 50

Start Process—System CallResource Manager NFS Server

Node Agent

Zone Agent

Process 1

Node Agent Node Agent

Page 51: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 51

Node Agent Node Agent Node Agent

Start Internals—RM RequestResource Manager NFS Server

Zone Agent

Process 1

Page 52: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 52

Node Agent Node Agent Node Agent

Start Internals—Node RequestResource Manager NFS Server

Zone Agent

Process 1

Page 53: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 53

Node Agent Node Agent Node Agent

Start Internals—Boot ZoneResource Manager NFS Server

Zone Agent

Process 1Non-global

Zone

Page 54: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 54

Node Agent Node Agent Node Agent

Start Internals—Run Zone AgentResource Manager NFS Server

Zone Agent

Process 1

Zone Agent

Page 55: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 55

Node Agent Node Agent Node Agent

Start Internals—Run Zone AgentResource Manager NFS Server

Zone Agent

Process 1

Zone Agent

Page 56: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 56

Node Agent Node Agent Node Agent

Start Internals—Exec ProcessResource Manager NFS Server

Zone Agent

Process 1

Zone Agent

Process 1

Page 57: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 57

Node Agent Node Agent Node Agent

Start Process—DoneResource Manager NFS Server

Zone Agent

Process 1

Zone Agent

Process 1

Page 58: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 58

Node Agent Node Agent Node Agent

Create Load Balancer—System Call

Resource Manager App Switch

Zone Agent

Manager

Zone Agent

Replica2

Zone Agent

Replica1

Page 59: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 59

Node Agent Node Agent Node Agent

Create Internals—RM RequestResource Manager App Switch

Zone Agent

Manager

Zone Agent

Replica2

Zone Agent

Replica1

Page 60: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 60

Node Agent Node Agent Node Agent

Create Internals—App Switch CLIResource Manager App Switch

Zone Agent

Manager

Zone Agent

Replica2

Zone Agent

Replica1

Page 61: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 61

Node Agent Node Agent Node Agent

Create Load Balancer—DoneResource Manager App Switch

Zone Agent

Manager

Zone Agent

Replica2

Zone Agent

Replica1

LB

Page 62: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 62

Some Examples We’ve Run● Automated deployment of LB’d Tomcats● Distributed Conway’s Game of Life (X, sockets)● Master+workers with automated flexing

(Jini™ network technology)● Distributed ballistics simulation (Java RMI)● Ruby on Rails demo (JRuby)● JPetStore (Tomcat, Spring, Struts, HSQLDB)● LB’d web service (XFire, Derby, Hibernate)

Page 63: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 63

Summary● Hosting platform for development and delivery

of dynamically scalable Internet-based services● Programmatically allocate, monitor, and control

virtualized compute, storage, and networking resources

● Resources are exposed through high-level abstractions

● Presents a horizontally scaled pool of resources as a single system

Page 64: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 | 64

For a Live DemoCome to the Project Caroline pod (#981) in the Sun area of the Pavilion

Source: Earth Sciences and Image Analysis Laboratory, NASA Johnson Space Center.Mission: ISS002, Roll: E, Frame: 6368, Feature: Caroline Island, http://eol.jsc.nasa.gov/

Page 65: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session XXXX | 65

Q&Ahttp://research.sun.com/projects/caroline

Page 66: Project Caroline: Platform As A Service, For Your Service, At Your

2007 JavaOneSM Conference | Session TS-1991 |

TS-1991

Project Caroline:Platform As A Service,For Your Service, At Your Service

Bob ScheiflerDistinguished EngineerSun Microsystems, Inc.http://research.sun.com/projects/caroline