In last couple of days I discovered that ELB's are not designed to handle sudden spikes in traffic. What was most disturbing was that:
1. When there is a sudden spike, the ELB breaks down. An returns HTTP 404 messages.
2. The ELB gets into a bad state and remains like that for about 90 minutes.
3. The solution to this suggested by AWS Support team was to simply move out of ELB and have your own load balancer.
4. If it is just a testing spike, AWS can prewarm the ELB to handle that load but just for few weeks.
HAproxy or Nginx seems to be my obvious choice now if I have to move away from ELB. Doing High availability with HAProxy or even Nginx seems to be a little tricky but that's Okay if we have to move away from ELB.