dr. john clevenger - california state university,...
TRANSCRIPT
Dr. John Clevenger• Professor of Computer Science, Emeritus
California State University, Sacramento
• Technical DirectorACM International Collegiate Programming Contest
Applied Research Areas Operating Systems
Computer Graphics
Computer Game Architecture
Programming Contests
Dr. John Clevenger -- CSc 209
What’s a Programming Contest ? Teams
Judges
Problems
Scoreboards and Scoring Algorithms
System Support Software
Dr. John Clevenger -- CSc 209
The International Collegiate Programming Contest (“ICPC”)
Competition between University Teams around the world
Established by ACM in 1977
Sponsored by IBM since 1997
Multi‐tiered contest
Local university contests
Regional Contests
World Finals Contest
Dr. John Clevenger -- CSc 209
ICPC 2016‐17
Dr. John Clevenger -- CSc 209
46,381 student contestants
2,948 universities
103 countries
530 sites spread over six “super‐regions”
41st Annual World Finals: May 20‐25, 2017 in Rapid City, SD
http://icpc.baylor.edu
ICPC World Finals
Dr. John Clevenger -- CSc 209
Programming Contest Software Contest Control System (CCS)
Scoreboard/Presentation Systems
Contest Data Server (CDS)
Balloon Management Software
Analytic Tools
Live TV Presentations
Security Tools
Dr. John Clevenger -- CSc 209
Contest Control Systems
Dr. John Clevenger -- CSc 209
Server
Team1
Team2
TeamN
…
Admin
Automated Judge (AJ)
…
Scoreboard
Server …
Human Judge
Automated Judge (AJ)
Human Judge…
Dr. John Clevenger -- CSc 209
The CSUS “PC2” CCS Used in contests around the world (including at 17 different ICPC
World Finals)
PC2 Downloadsas of Spring 2014
Cloud Computing
Dr. John Clevenger -- CSc 209
What IS “cloud computing”?
The Cloud Computing Secret:
Dr. John Clevenger -- CSc 209
Cloud Computing Models
Dr. John Clevenger -- CSc 209
Infrastructure as a Service (IaaS)(Virtual machines, servers, storage, …)
Platform as a Service (PaaS)(Programming tools, databases, web servers, …)
Software as a Service (SaaS)Email, messaging, payroll processing, CAD, accounting,
customer relations, games and VR, …
Web clients
(browsers,
mobile apps,
thin clients,
terminal emulators,
…)
Contest as a Service (CaaS)
Dr. John Clevenger -- CSc 209
Software as a Service (SaaS)
Contest Server
Contest Admin
Contest AutoJudge
Contest Human Judge
Contest Team
Contest Scoreboard
ContestAdmins, Judges, Teams,
Spectators,…
CaaS Requirements Contest setup
Component “spin‐up” servers, admins, teams, judges “as needed”
Scalability Load balancing/monitoring
Use existing support facilities Application servers (TomCat, Jetty, Websphere) Docker, Cloud Foundry Cloud Service Providers
o Amazon WS, Google AppEngine, Microsoft Azure, IBM Bluemix, ….
Dr. John Clevenger -- CSc 209
CaaS: PC2 Version 10
Dr. John Clevenger -- CSc 209
AppServer
Jetty WebServer
Jersey REST
Services
MySQLDatabase
…
Spawn Machines
Resource Manager
Jetty
Dispatcher
Jetty
Checker
JettyRun
Compare
Compile
…
Spawn additional machines as needed
Http Requests
Current Ongoing Projects PC2 Version 9 Extensions
Team “sandboxing” Web‐based Team interface ICPC CMS Services access tool Web‐based Test Run submission
“Next‐Gen” Cloud‐based Contest Control Systems REST‐based Run Flow in a Cloud CCS Architecture‐independent remote machine spawning Using Docker containers for Cloud CCS modules
Dr. John Clevenger -- CSc 209
Available Projects Distributed Application Load Balancing
Front‐end Back‐end
Contest Administrator Configuration interface
Infrastructure automation tools
Application server performance measurement
Dr. John Clevenger -- CSc 209
Front‐end Load Balancing Users need a single set of URLs (REST endpoints) Multiple AppServers must respond to the same URLs… Need a front‐end balancer/router
Multiple candidates: Pound, HA‐Proxy, OpenShift
Dr. John Clevenger -- CSc 209
AppServer1
Spawn Machines
Resource Manager
…
AppServer2
AppServer3
Load Balancer
Http Requests to fixed Contest
URLs
Admins, Judges, Teams, Spectators
?
Back‐end Load Balancing Resource Manager automatically starts (one) AppServer,
Dispatcher, & Checker How does it determine when more are needed?
RM must implement “system monitoring”
Dr. John Clevenger -- CSc 209
AppServer1Spawn at Startup Resource
Manager
Dispatcher1 Checker1
…
AppServer2 Dispatcher2 Checker2
Load Monitor
… …
Check load
Spawn new modules
PC2V10 Contest Admin Interface
Dr. John Clevenger -- CSc 209
Submissions
AppServer
Jetty WebServer
Jersey REST
Services
Resource Manager
Dispatcher Checker
DB
Contest Administrator
Contest Teams
Contest Configuration
X
Infrastructure Automation Tools Integrating DevOps into PC2 V10
Development Design / Code / Test
Operations Deployment / Monitoring / Scaling / Disaster Recovery /
Documentation
Automation tools Puppet, Chef, Salt, Ansible, Google Borg*
Integrate an appropriate tool into the PC2 V10 framework
Dr. John Clevenger -- CSc 209 *probably not available
Application Server Performance Current architecture uses embedded Jetty for web services:
Dr. John Clevenger -- CSc 209
Application
Jetty WebServer
Http requests
Communications with other modules
Differs from the traditional Application Server model:Appl. Server
(e.g. TomCat, Websphere, …)
Application
Http requests
App. Server Performance, cont.
Two important questions: How scalable is the embedded Jetty model? What are the performance characteristics of Jetty
vs. the traditional model?
Tools and Frameworks exist for measuring these: Apache Jmeter, MultiMechanize, Siege, Locust, HttpPerf, …
Dr. John Clevenger -- CSc 209
Possible Future Projects Expanding the Cloud CCS capabilities
Additional User Interactions Further work on cloud provider‐architecture
Database Optimization for Scalability Configure various Master/Slave DBMS configurations Use performance measurement tools to find optimal configuration
under loading
Status Tracking Provide SysAdmins with tools to show module status/state, history,
traffic, etc.Dr. John Clevenger -- CSc 209
Background/Experience Extensive Java (preferably JavaEE)
GUI creation Event handling Development tools (Eclipse, Git, …) Design Patterns
Web services Application Servers (Tomcat, Jetty, …) REST principles Web protocols and standards
HTTP/S, HTML, JSON, XML, …
Good English writing skills
A Penchant for Programming!Dr. John Clevenger -- CSc 209
Contact Info / Resumes:Dr. John Clevenger
email: [email protected]
office: RVR 5018/5001
Hours: by appointment
Thank You!
Dr. John Clevenger -- CSc 209