CapCal Architecture and Background


Todd at High Scalability asked some really good questions about the CapCal architecture so I thought I would conserve space in his blog by answering his questions here.

CapCal Host
Windows Server 2003, C#, ASP.NET, SQL Server 2005. By default a hosted (shared) resource, dedicated CapCal Hosts can also be spawned on Amazon EC2, Rackspace or IBM cloud. The shared (hosted) version has an account for each customer, which in turn has its own user accounts, tests and test results invisible to all others. In the dedicated (cloud) version, the customer has complete control of the server.

CapCal Controller
Small Java app optimized for Linux. Controllers are spawned by the host for the lifetime of a test. Any number of controllers can be managed by a given host. Controllers, like agents, can be deployed anywhere, inside or outside the firewall, on "bare metal" or the Cloud.

CapCal Agent
Small Java app optimized for Linux. Agents can be deployed on customer hardware, CapCal hardware, the CapCal distributed network or on the Amazon EC2 Cloud with a 20 to 30 second bootup time. Each agent can spawn any number of virtual users, up to whatever bandwidth limit there is in terms of download speed. Tests have been run with up to 100,000 virtual users although higher numbers are possible. Each virtual user maintains session state via cookies, 302 redirects and whatever mechanism the app uses.

CapCal Capture
A small Windows client that captures HTTP and HTTPS traffic to be used in creating test sessions. Test sessions are combined into test plans, which include all the parameters of test execution, like ramp time, hold time, virtual users, etc. Test data can be used to parameterize everything from logins to product codes, account numbers and so forth. Think time is built in but can also be controlled on a page by page basis. Tests can be created manually or captured via execution of a functional test tool like the ones from HP, Compuware, Worksoft, etc.

How It Works
From an icon in the Windows system tray, the user starts and stops the capture of browser sessions to be used in the test. Running a test is a matter of filling in a small form and submitting it. The test is uploaded to the host, scheduled and run as soon as a controller and agent pool is available, which is immediate unless scheduled to run later. The test can be watched in real time and canceled in the event of errors, excessive delays, etc. The page hit detail in the test results shows everything that happened, which can be extremely useful in tracking down bottlenecks and scalability traps.

CapCal History
Capacity Calibration was conceived in March of 2000 for cloud computing 1.0, otherwise known as distributed or grid computing. The CapCal agent has been downloaded and installed on over 15,000 computers all around the world and the network has been up and running 24 X 7 since August of 2001. In November 2001, CapCal ran load tests for NASA (see above) to help it prepare for its first live video streaming of the space shuttle launch. The largest test ever run was 10,000 virtual users, even though the network was capable of much larger capacity. The CapCal distributed network is now being phased out in the transition to Amazon EC2, aka cloud computing 2.0, although it can always be reactivated if needed.

No comments:

Post a Comment