One of the things I like most about working at Facebook is the ability to
launch products that are (almost) immediately used by millions of people.
Unlike a three-guys-in-a-garage startup, we don't have the luxury of scaling
out infrastructure to keep pace with user growth; when your feature's
userbase will go from 0 to 70 million practically overnight, scalability has
to be baked in from the start. The project I'm currently working on, Facebook
Chat, offered a nice set of software engineering challenges.
Real-time presence notification
The most resource-intensive operation performed in a chat system is not
sending messages. It is rather keeping each online user aware of the
online-idle-offline states of their friends, so that conversations can begin.
The naive implementat... (more)