Zalo is a messaging application with over 3 million users that exchanges 30 million messages per day. It uses a real-time system architecture with connection servers that allow for 1 million concurrent connections and 200,000 messages per second. The architecture is broken into independent layers including load balancing, web servers, searching, databases, and connection servers that use technologies like C/C++, Java, and event-based I/O. Lessons learned include avoiding HTTP long polling, optimizing for large not small data, and developing a custom memory allocator to avoid fragmentation issues.