Wednesday, January 16, 2008

RWB Reborn

With Zed’s recent departure from the Ruby community, I’m going to un-depracate RWB (the Ruby Web Bench). I’d originally stopped development on it for two reasons:

  1. I wasn’t happy with the basic design of the system. I still have concerns about its scalability and its extensibility, but I think both of these are fixable with some redesign/rewriting.
  2. Zed’s rfuzz seemed poised to provide a better solution, but this never really materialized and doesn’t look like it ever will.

I still think there’s a need for a good web benchmarking and testing tool. Something that’s capable of checking multiple URLs, fuzz testing, and providing detailed reports about test results. RWB could be the basis for such a tool.

Before I can do anything else, I need to look into some basic design decisions.

  • How should I assemble, send, receive, and record HTTP requests and responses?
  • How can I better parallelize the work when a single process/system isn’t capable of generating the needed load?
  • What data do I need to keep, and how do I best make it accessible to users wanting to generate their own reports?
  • Do I need to maintain test information across multiple runs?

The answers to these questions will probably force some additional questioning:

  • Is Ruby the right language for all/part of this, or should I be looking to Ragel, C, Erlang, etc.?
  • Should I be providing a single package, or a library and an app that uses it?

So, what does this mean to you? First, if you’re interested in RWB (or are currently using it), I’d like to hear from you. What’s good, bad, and ugly about the current system? Second, if you’re interested in a new and improved website testing/benchmarking tool, what are you looking for? Third, if you’re interested in working on a system like RWB, get in touch with me because I’d love to build a team to do this right.

What am I going to do next? I’m off to read up on httperf and rfuzz—we’ll see where that takes me. Oh, and I've got a couple of pages of planning material I wrote before I depracated RWB for rfuzz -- I guess I should give those a good read too.


Unknown said...

You might want to look at EventMachine and it's HTTP client. I haven't seen anything faster than EM in Ruby for network connections.

Anonymous said...

I'm interested in helping out on RWB (though I'm only mildly experienced in Ruby).