Duck Duck Go Architecture
gabrielweinberg.com
gabrielweinberg.com
Just had a look again and I now think it's pretty awesome. Just for a really speedy "what the hell is this?" type of query it looks absolutely amazing. I love the AJAX extra search links, makes it all feel really snappy.
Works great on the iPhone as well, I've added an icon to my home screen. You might want to consider making an app for the app store (you could pretty much just make an app that loads the site as it is).
Have you considered adding an API? I currently have my Emacs set up to do a dictionary lookup (using the dictd protocol) on a word when I hit C-cl. I'd love to add Duck Duck Go results to the buffer this displays!
iPhone App: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftwa...
API info: http://duckduckgo.com/api.html
Both look good though!
I've just replaced my google FF keyword, 'g', with duckduckgo link. I'll try it out for a week or so and see if I still think it's as awesome as I do now.
It mentions that static content is served from nginx, but then mentions S3 later on as well. Why not just Amazon for all the static content?
Mentions nginx being more stable than Apache - you mean no-crash stable, or more consistent under load?
Wrt nginx being more stable, both. I've crashed Apache as well as pseudo-crashed it (process still running, but not serving right). nginx hasn't crashed yet. It's also more consistent (and faster) under load. However, in Apache's defense, it does a lot more, e.g. mod_perl vs nginx proxy to FastCGI.
Not sure how you'd extract more speed from your current setup. The natural next step would be doing work in parallel - this something you do/have considered?
If you do try the Amazon CDN, let us know how you go :)
I wonder if mod_perl works with event_mpm, yet.
Initially I didn't think anything could beat mod_perl speed, but after benchmarking, this setup is just as fast. It's also more stable, and uses less memory. And yes, also it is easier to debug and I was getting memory leaks on mod_perl.
Don't get me wrong, I love mod_perl. I used it at my last company and on many other projects before this one. And I still use it for other stuff.
Last I looked I think you can run mod_perl with event_mpm but I didn't like this: "The current Apache::DBI should be usable under threaded mpm, though it doesn't share connections across threads. Each Perl interpreter has its own cache, just like in the prefork mpm." (http://perl.apache.org/docs/2.0/user/performance/mpm.html)
aside from that tiny-minor issue, ddg seems cool & the overview of the architecture is very clear. i'm going to give it a try as my default chrome search engine & figure out just how behaviorally indoctrinated google has me and how your architecture holds up as more people use the service.