2006_06_01_tech_over..

advertisement
Sakai Technical Overview
Part II
Charles Severance
June 1, 2006
Download: www.dr-chuck.com/talks.php
Sakai Technical Goals
• Enterprise Production-ready
• Abstraction boundaries between tools,
services, framework, and presentation
• Seamless integration across tools when
appropriate
• Component based expandability with class
loader isolation
• Data interoperability and ability to expand
Sakai without using Java
• Flexibility - Ease of Local Customization
Enterprise Production-Ready
Sakai Enterprise Technologies
Java
1.4
Apache - SSL, mod_jk,
WEBISO, virtual hosting
Sakai
Tomcat 5.5
Spring
Hibernate
Java Server Faces
Velocity (legacy)
MySql 4.1
Oracle
Sakai is aimed at
Enterprise Deployments.
Sakai supports
organizations with >
100,000 users in a single
installation
Sakai consists of
technologies chosen to be
common in Java
Enterprise Environments.
Enterprise Scalability
Hardware or Software
UM = NetScaler IU = Software
IP Sprayer w/
Sticky Session
Hot Spare
App servers with identical
software loads.
UM = SunFire V480, Quad 900 MHz
CPU, 20GB RAM, 4 StorEdge 3310
SCSI RAID Arrays w/ 12 73Gb disks
(Oracle)
Hot Spare
Database Server
App Server
UM = 8X Dell PowerEdge 2650,
dual 2.4-3.2 GHz CPU, 4 GB RAM
File Server (optional)
IU = NetApp
File
Server
(opt)
Database
Server
Hot
Spare
Sakai in Production
Text
20+ Full scale installations
Sakai in Production
myUnisa: 1 Mar 2006 to 17 Mar 2006
Unique visitors: 72675
Number of visits: 169796 (2.33 visits/visitor)
Pages: 10,086,589
Bandwidth: 66.13 GB (408.4 KB/visit)
Text
Sakai in Production
Text
High Level
Framework, Tools and Services
• Tools
– Cannot do any type of persistence
– Responsible for presentation (GUI)
• Services / Components
– Must provide documented API
– Cannot do any presentation (not aware of HTML at all)
– Must access other services through service APIs (not data
models)
• Framework
– Provides registration for tools and service
– Provides common capabilities
– Knows nothing of domain objects
Component Based Expansion
• Take an empty Sakai
system
– Pick from the tool library
– Include the appropriate
services
– Add some local
customizations, look feel,
language etc
• And you have a production
ready system
• Tools and capabilities
written by many different
groups or individuals
Tool
Library
Sakai
Framework
Service
Library
Customization
Configuration
Service Oriented Architecture
Browser
Browser
ToDo
Presentation
My
Monolithic
ToDo List
Servlet
Persistence
ToDo
Service
Code
Persistence
Service
Interface
(i.e. API)
Fitting Into the Sakai Framework
SAF—Presentation Services
Browser
Presentation
Abstraction
ToDo Tool Layout (JSP)
Framework
ToDo Tool Code (Java)
Service
Interface
(i.e. API)
Application
Other Services
SAF—Common Services
SAF—Kernel
ToDo Service
Sakai Presentation Services
<sakai:view_container title="#{msgs.sample_title}">
<sakai:tool_bar> <sakai:tool_bar_item/> </sakai:tool_bar>
<sakai:instruction_message
value="#{msgs.sample_one_instructions}" />
<sakai:group_box
title="#{msgs.sample_one_groupbox}">
<h:inputText
value="#{MyTool.userName}" />
<sakai:date_input
value="#{MyTool.date}" />
<sakai:button_bar>
<sakai:button_bar_item
action="#{MyTool.processActionDoIt}
value="#{msgs.sample_one_cmd_go}" />
</sakai:button_bar>
Web Services
WS Client
Presentation Framework
Presentation
Abstraction
Web Svcs
Axis
Layout
ToDo Layout
Framework
WS End
Point
Other Tools
ToDo Code
Application
Other Services
SAF—Common Services
SAF—Kernel
ToDo Service
Service
Interface
(i.e. API)
Clear Abstraction Boundaries
Abstract Architecture
The Abstract Sakai Environment
• Sakai breaks its scope into
distinct areas and builds
strong abstractions
between layers
• Goal is to be able to insert
and remove
implementations at any
level without anyone
noticing
Client
Aggregator
Presentation
Tools
Services
System
Aggregator
Aggregator / Portal
Presentation
Tools
• It assembles tools, buttons, tabs, etc
and produces the final user interface
• The aggregator can completely
transform the interface as it sees fit
• Receives and dispatches requests to
tools after setting things like “context”
Services
Mercury
Apple Portal
VB Portal
Plex PLE
Aggregator
Upcoming Aggregators
Presentation
Tools
• Cleaned up OSP Portal
• Hierarchy Portal - Astro
• Rumors and notions
– Acetylene - Rumored RSF based portal
– Iframe-free portal
– PDA Aggregator
– Better Desktop Portal
Services
Aggregator
Presentation Layer Goals
Presentation
Tools
• True abstraction between Presentation and Tools
Services
• Tools should not be aware that they are in a web browser
environment
• GUI Widget reusability
• Able to produce markup for multiple types of aggregators
(Sakai, JSR-168, WSRP)
• Support multiple types of ultimate display devices (Browser,
PDA, etc)
• Support internationalization and localization
• Be as flexible as possible - support CSS and allow
transformability of the user interface,potentially under control of
the end user
Aggregator
Presentation Technologies
Presentation
Tools
• JSF
– Current recommended solution because of setter/getter
pattern and support for reusable GUI components
– Challenging to work with
• Velocity
– Legacy
– Simple, but abstraction is weak on the request-side
• Struts
– Legacy
• RSF
– Emerging but still waiting for proof in all areas
Services
Aggregator
JSF Patterns
Presentation
<sakai:view_container title="#{msgs.sample_title}">
Tools
<sakai:tool_bar> <sakai:tool_bar_item/> </sakai:tool_bar>
Services
<sakai:instruction_message
value="#{msgs.sample_one_instructions}" />
<sakai:group_box
title="#{msgs.sample_one_groupbox}">
<h:inputText
value="#{MyTool.userName}" />
<sakai:button_bar>
<sakai:button_bar_item
action="#{MyTool.processActionDoIt}
value="#{msgs.sample_one_cmd_go}" />
</sakai:button_bar>
<sakai:date_input
value="#{MyTool.date}" />
MyTool.processActionDoIt() {
}
Aggregator
Tools and Services
Presentation
Tools
• Tools
– Written in Java and orchestrate the user interface
– Have no persistence
– Preferred pattern is Java object with getters and setters
• Services
– Persistence
– Business Objects
– Business Logic
• Tools interact with services through published APIs
• Tools find the implementations of APIs at runtime
using Spring and/or the ComponentManager
Services
Finding Abstraction in your Tomcat
Aggregator
tomcat/webapps/portal
tomcat/webapps/mercury
tomcat/webapps/osp-portal
Presentation
tomcat/webapp/sakai-user-tool
tomcat/webapp/sakai-message-tool
Tools
tomcat/shared/lib/site-api.jar
tomcat/shared/lib/user-api.jar
Services
tomcat/components/sakai-authz-pack
tomcat/components/sakai-user-pack
Seamless Tool Integration
Many levels of Integration
• Want your website under a button in Sakai?
• Want your PHP app to know the current logged in
Sakai User?
• Want build a self-contained that “cooperates” with
Sakai?
• Full blown Sakai tool - released separately?
• An optional part of the Sakai release?
• A seamlessly integrated core part of the Sakai
release?
Integration with the rest of Sakai is just another aspect of any tool’s design.
Tool writers choose how deeply their tool is to be integrated into Sakai. The
community will likely value more highly integrated tools more.
Sakai Architecture Goals
• Two seemingly conflicting goals
– Seamless integration across tools
– Ability to expand Sakai without using Java
• In the short term, writing tools in Java and
using Sakai framework elements directly is
the path to seamless integration
• But in the long term, we must make 3P tools
full peers in Sakai.
Reuse in
2.1
Anouncements
Presentation
Resources
Samigo
Melete
Reuse in
2.2
Anouncements
OSPortfolio
Presentation
Resources
Samigo
Melete
Better
Reuse
Anouncements
OSPortfolio
Presentation
Resources
Samigo
Melete
Flexibility
in reuse
Anouncements
OSPortfolio
Presentation
Resources
Samigo
Melete
Scorm
Authoring
We are building a
general way to
do this….
Anouncements
OSPortfolio
Presentation
Resources
Samigo
Language
Module
Melete
Scorm
Authoring
HTML
HTML
HTML
HTML
Sakai Entity
APIs
Existing
Sakai
Tools
Existing
Sakai
Tools
plone
perl
Sakai SOA APIs
SOAP
php
Search
Service
Web
Sakai Services
python
WebDav
Access
Sakai Entity APIs
joomla
Import and Export
Legend
Existing Sakai
2.2 Work
.NET
External
Sakai Search
Building Tools
• To meet the goals of Sakai it is not
sufficient to simply build a stovepipe tool
• While much of what is described here is
“optional”, the more “integrated” a tool
intends to be, the more “required” these
elements become
Provisional Tools
• Should we include a tool in this release?
– We needed something between “yes” and “no”
• Need to deeply involve the production users in the
evaluation and testing of any new tool.
• Three stages
– Contrib - Available - caveat emptor
– Provisional - In the release, hidden, QA by developer team
– Released - Full peer in terms of QA, etc.
• Increasing criteria as tools progress to encourage
tools to meet Sakai’s tool architecture
Provisional Tool Criteria
• Community Support
– Must have commit list and be in SVN
– Must run in production at >=2 sites
– Must have proper license
– Must be willing to answer questions
– Needs to be tracked in JIRA
Tool Criteria (cont)
• Technical
–
–
–
–
–
–
–
Support HSQL, MySql, Oracle
Use AutoDDL properly
Use sakai.properties
Do AUTHZ functions like the rest of Sakai
No patches to other elements
Must cluster
Use proper versions of Spring, Hibernate, etc.
Tool Criteria (cont.)
• Interaction and Visual Design
– Inherit skins properly
– Look “like” the rest of Sakai tools (fit in)
– Follow interaction designs in style guide
– Use JSF UI Components (if applicable)
– Include help - properly added to the Sakai
Help system
• QA test plans and specifications
Tool Criteria
• Desirable elements
– Internationalized
– Accessible (including a review)
– Separation of persistence and business logic into
a properly factored Sakai Component
– Event generation as appropriate
• These are strongly suggested for full
inclusion
*Sample* Attribute Matrix
Announce
Melete
Jforum
Rwiki
Profile
AutoDDL
Yes
Yes
Yes
Yes
Yes
Properties
Yes
Yes
No
Yes
Yes
MySql
Yes
Yes
Yes
Yes
Yes
Oracle
Yes
Yes
No **
Yes
Yes
Skinnable
Yes
Yes
No
Yes
Yes
Cluster
Yes
??
Yes
Yes
Yes
Resource
Yes
No
No
Yes
No
I18N
Yes
Yes
Yes
Yes
Yes
Events
Yes
No
No
No
No
Ease of Expansion Including
non-Java Tools
Sakai Architecture Goals
• Two seemingly conflicting goals
– Seamless integration across tools
– Ability to expand Sakai without using Java
• In the short term, writing tools in Java and using
Sakai framework elements directly is the path to
seamless integration
• But in the long term, we must make 3P tools full
peers in Sakai.
Web Services
• Web Services allow flexible reuse of API and
services in contexts beyond the Sakai
interfaces
– WSRP presentation
– SOAP - RPC
• Web Services Issues
– Security
– Performance
– API needs to tend towards document-style rather
than RPC-style
Web Services
WS Client
Presentation Framework
Presentation
Abstraction
Web Svcs
Axis
Layout
ToDo Layout
Framework
WS End
Point
Other Tools
ToDo Code
Application
Other Services
SAF—Common Services
SAF—Kernel
ToDo Service
Service
Interface
(i.e. API)
IMS Tool Interoperability
• Focus is on making tools portable between
systems (Sakai, WebCT, and Blackboard)
• Established to further the discussion with
commercial and other CMS/CLE providers
• Uses web services and IFRAMES
• Roughly based on WebCT PowerLinks
• Does not require tools to be written in Java
• Currently in contrib space in Sakai
How IMS
TI Works
1
6
7
IMS TI Outcome
Request
Application
Code
Sakai
Outcome
5
Sakai
IMS Proxy
Sakai APIs
4
Launch
2
Session
And Services
Bootstrap
3
Samigo, ConceptTutor, Etc
JVM
Tool Interoperability (REST)
• Several sites have written “proxy tools”
– UNISA, Indiana, UM …
• As part of integrating CAPA and other tools at
Rutgers - Chuck Hedrick has written one that
is intended to be flexible, reusable and
powerful
• Similar to IMS Tool Interoperability - but using
REST approaches (I.e. easier)
• https://source.sakaiproject.org/contrib/rutgers/linktool/
Hedrick Proxy
Going Forward
• We must “dramatically up our game”
when it comes to support for data
interoperability to allow external
applications to fully participate in Sakai
and work directly with Sakai’s data
SOAP
Collaboration
and
Learning
WebDav
Current Sakai
SOAP
Collaboration
and
Learning
REST
HTML
HTML
Sakai “Swiss Army Knife”
Future Sakai
WebDav
HTML
HTML
HTML
HTML
SOAP
New
Semantic
Tools
Existing
Sakai
Tools
CalDav
Sakai SOA APIs
SPARQL
Sakai
Core
Services
Existing
Sakai
Services
REST
Legend
Existing Sakai
SPARQL
REST
WebDav
Import and Export
WebDav
CalDav
RSS
Sakai Object Bus
RSS
SOAP
iCal
iCal
Sakai
Semantic
Services
Sakai Web
2.0
New Work
Local Configuration
Sakai Velocity
Support
Sakai JSF
Support
Sakai Velocity
Tools
Sakai JSF
Tools
Providers in
Sakai
Sakai Servlet
Tools
Sakai
Application
Services
Sakai
Framework
Services
Role
Provider
Course/Site
Provider
Enterprise Data
User
Provider
User Directory Provider
• Very mature - since Sakai 1.0
• User type is controlled by provider - this controls the
user template when the user is created
• Can provide fully populated User objects or just
answer ID/PW queries
• Consulted at log-in
• Supports special “properties” known to the provider
• Sample providers in release 2.0: JLDAP, OpenLDAP,
Kerberos, and IMS Enterprise in a database
Course Provider
• Does not auto-populate courses
• Provides the course list when instructor is
making a new worksite
• Consulted during “New Site” operation
• More work needed here
– Need to make into a Site provider
– Need to be able to set site type from provider
– Need to come up with auto population mechanism
Realm Provider (Role)
• Consulted at login
• What are the sites and roles within each site
for this user
• If the system is using many different roles
throughout, this code must feed the proper
site the proper role
• Sakai internal tables are updated as changes
from the provider are noticed.
Many Skins…
Text
20+ Full scale installations
Emerging Integration Points
• CourseManagement
• ContentHosting Plugin
• Calendar Plugin
Questions..
Download