BBA in ISYS & Mgmt, Minor CS UND ImageTrend, Inc. 4+ years ◦ Currently: Lead Developer cf.Objective() attendee 5 years MAX 2008 (San Francisco) Attendee Contact: ◦ twitter: tedsteinmann ◦ email@example.com
BS Computer Science, University of Minnesota, 2005 ImageTrend, 5+ years ◦ Currently: Application Architect cf.Objective() attendee 4 years Contact: ◦ twitter: timlmeyer ◦ firstname.lastname@example.org
Framework Sale Buy my blog Group Think Miracle Drug
“Okay, let me tell you the difference between Facebook and everyone else, we dont crash EVER! Scalability if those servers are down for even a day, our entire ◦ Popularity problems: reputation is irreversibly destroyed! “ Increased traffic/load Hardware limitations Complexity
Things we know ◦ Redundancy ◦ Routing ◦ Replication
Proven methods/approaches ◦ Server Clustering ◦ Request Routing ◦ Replication/Mirroring ◦ Process Delegation ◦ Memory Management
Process Delegation ◦ Asynchronous task completion ◦ Work queues
Memory ◦ Scale Out Many small CF instances ◦ Scale Up Fewer large instances/servers
Persistence of State Persistence of Data Configuration
◦ Persistence of State ◦ Session Management Browser Session & Server session Session/logged in Replication / Sticky Sessions Client vs. Session
Persistence of Data ◦ Variables ◦ File system ◦ Database
Persistence of Data - Variables ◦ CGI scope Cannot rely on web servers or proxy servers to set them consistently Cannot set CGI variables ◦ Session scope ◦ Client scope
Persistence of Data – File System ◦ Multiple copies of your application code Code promotion / Release ◦ Management of user generated content
Persistence of Data - Database ◦ Identifiers Identities/auto incremented primary keys ◦ Release New data structure Structure change/removal
Configuration ◦ Will need to take place in/on: Every location Every server Every environment Dev, alpha, beta, testing, prod, etc.
Challenge: Persistence of State Make it Easier to Change - Session Façadesession.cfc: usage:
Challenge: Persistence of State Session/Client Data Management ◦ Database ◦ Client Scope as Session Scope ◦ Caching Servers Session/Client Persistence ◦ Cookies ◦ URL Token Based
Challenge: Persistence of Data - Variables Don’t be a dope Use Façades …wrap you scopes! ◦ CGI ◦ Session ◦ Client
Challenge: Persistence of Data – File system File System Design Strategies ◦ Database files ◦ Network shared file system ◦ Automatic replication of files Automate code deployments ◦ ANT, .bat, etc.
Challenge: Persistence of Data – Database Database Design Strategies ◦ Identifiers GUIDS Ranges Clustered primary keys Server name/location/identifier Roll your own ◦ Release Backwards compatibility Location specific updates
Challenge: Configuration Centralized Automatic configuration ◦ CFAdmin API ◦ XML config files ◦ Dynamic file paths ◦ Datasource configuration
Globalization ◦ Time zones ◦ Multiple Languages Caching ◦ Distributed cache stores (ehcache, memcached) Database Role Segmentation ◦ One or many databases for reads / one for writes at each location
Verification - Will my application really scale? ◦ Load Testing ◦ Failover Testing ◦ Can I seamlessly add to the hardware? Roll your own clustering/deployment ◦ JBOSS ◦ Tomcat
ColdFusion: ◦ Administrator API ◦ Environment Configuration ◦ CF design patterns (sessions) ◦ Managing the client state ◦ Configuring and using session variables: ◦ JVM Memory Management ◦ JRUN Configuring Individual JVM Settings ◦ JRUN Clustering ◦ ColdFusion 9 on JBOSS ◦ ColdFusion Clustering ◦ Enabling clustering for load balancing and failover ◦ House of Fusion ◦ Database Your Files (Tim’s Presentation from TCCFUG)
ARR: ◦ IIS Application Request Routing ◦ Using the Application Request Routing Module ◦ ARR without sea leg (setting up ARR to work locally) SQL ◦ Replication ◦ Mirroring ◦ SQL Mirroring in CF Scalability ◦ HighScalability.com Other: ◦ The Social Network ◦ CFSelenium ◦ MXUnit
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.