I agree that ELBs need much more functionality.<p>In order to get around the lack of features, I only use the ELBs for SSL termination (well, and DNS, and autoscaling). For anything fancier, I've developed a coprocess that manages HAProxy behind the scenes. It leverages Auto Scaling notifications to keep the backend instances in sync. It has a REST API so that you can drive configuration, and it works in a master-master configuration.<p>It's been running in production for about 9 months now, and has proven invaluable. Having hooks at this layer is incredible. I'm able to get amazing debugging information, I can "bumper" the site at the frontend, I can do 100% zero downtime deployments with quick rollback, I can tarpit and rate limit, etc.<p>Once I added enough "sugar", I started to realize that maybe AWS is doing it right -- it'd be impossible to add all the features that every customer would want to the ELB. However, WebSocket support and request draining are low-hanging fruit. Same goes for the support for generic HTTP methods, which was implemented some time ago.