- Dr. John Clevenger
- Professor of Computer Science, Emeritus
California State University, Sacramento
- Technical Director
ACM International Collegiate Programming Contest
Dr. John Clevenger Professor of Computer Science, Emeritus - - PowerPoint PPT Presentation
Dr. John Clevenger Professor of Computer Science, Emeritus California State University, Sacramento Technical Director ACM International Collegiate Programming Contest Applied Research Areas Operating Systems Computer Graphics
California State University, Sacramento
ACM International Collegiate Programming Contest
Operating Systems Computer Graphics Computer Game Architecture Programming Contests
Teams Judges Problems Scoreboards and Scoring Algorithms System Support Software
Competition between University Teams around the world Established by ACM in 1977 Sponsored by IBM since 1997 Multi‐tiered contest
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
Contest Control System (CCS) Scoreboard/Presentation Systems Contest Data Server (CDS) Balloon Management Software Analytic Tools Live TV Presentations Security Tools
Server
Team1 Team2 TeamN … Admin Automated Judge (AJ) … Scoreboard Server … Human Judge Automated Judge (AJ) Human Judge …
Used in contests around the world (including at 17 different ICPC
World Finals)
PC2 Downloads
as of Spring 2014
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, …)
Software as a Service (SaaS)
Contest Server Contest Admin Contest AutoJudge Contest Human Judge Contest Team Contest Scoreboard Contest Admins, Judges, Teams, Spectators, …
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
IBM Bluemix, ….
AppServer
Jetty WebServer Jersey REST Services MySQL Database …
Spawn Machines
Resource Manager
Jetty
Dispatcher
Jetty
Checker
Jetty
Run
Compare Compile
…
Spawn additional machines as needed Http Requests
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
Distributed Application Load Balancing
Front‐end Back‐end
Contest Administrator Configuration interface Infrastructure automation tools Application server performance measurement
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
AppServer1
Spawn Machines
Resource Manager
…
AppServer2 AppServer3 Load Balancer
Http Requests to fixed Contest URLs
Admins, Judges, Teams, Spectators
Resource Manager automatically starts (one) AppServer,
Dispatcher, & Checker
How does it determine when more are needed?
RM must implement “system monitoring”
AppServer1
Spawn at Startup
Resource Manager Dispatcher1 Checker1
…
AppServer2 Dispatcher2 Checker2 Load Monitor
… … Check load Spawn new modules
Submissions
AppServer
Jetty WebServer Jersey REST Services
Resource Manager
Dispatcher Checker
DB
Contest Administrator Contest Teams Contest Configuration
X
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
* probably not available
Current architecture uses embedded Jetty for web services:
Application
Jetty WebServer
Http requests Communications with other modules
Differs from the traditional Application Server model:
(e.g. TomCat, Websphere, …)
Application
Http requests
Two important questions:
How scalable is the embedded Jetty model? What are the performance characteristics of Jetty
Tools and Frameworks exist for measuring these:
Apache Jmeter, MultiMechanize, Siege, Locust, HttpPerf, …
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.
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!
Hours: by appointment