News for hackers. Stuff that matters.
Re:Simple Systems Have Less Downtime by ignoramous on Tuesday March 03, 2020 @09:08AM (#22474511)
WhatsApp, similarly, had 30+ employees when they got acquired [0]. They built the fastest IM on the market with 450M+ users sending 1B+ messages everyday, and at one point surpassed Facebook in terms of number of images uploaded.

The engs they had were world-class, so really, I think, saying microservices (or latest-fad) get in the way etc is disingenuous since you also require world-class talent to begin with (if you're going to keep the team-size small and yet be able to manage crazy scale) and a competitor willing to pay through the nose for the acquisition.

[0] https://www.sequoiacap.com/article/four-numbers-that-explain...

Re:Simple Systems Have Less Downtime by nickbauman on Tuesday March 03, 2020 @09:38AM (#22474745)
They chose Erlang. A language built for communication and managing wire protocols at scale. Which describes WhatsApp itself. That was probably the biggest impact single decision for WhatsApp technically.
Re:Simple Systems Have Less Downtime by ignoramous on Tuesday March 03, 2020 @09:59AM (#22474914)
I am not sure if WhatsApp engs chose ejabberd because it was written in Erlang or because ejabberd was the defacto implementation of XMPP. They stumbled upon and fixed bugs in BEAM/OTP at their scale [0][1][2]. They also ran FreeBSD (for its superior networking?) on bare-metal hosts running customised system-images [3] and employed networking experts at some point.

[0] https://www.youtube-nocookie.com/embed/c12cYAUTXXs

[1] https://www.youtube-nocookie.com/embed/wDk6l3tPBuw

[2] https://www.youtube-nocookie.com/embed/93MA0VUWP9w

[3] https://www.youtube-nocookie.com/embed/TneLO5TdW_M

Re:Simple Systems Have Less Downtime by scurvy on Tuesday March 03, 2020 @11:51AM (#22476193)
They ran FreeBSD because Jan came from Yahoo, and that's what Yahoo ran.
Re:Simple Systems Have Less Downtime by vaingloriole on Wednesday March 04, 2020 @01:25PM (#22486298)
'customized systems (kernel)..FreeBSD..bare metal': Which is what most of us still do if we care about performance for a single application. Running openmp fortran code for both host/accelerator on oversubscribed vmware or vanilla kvm/qemu for a good laugh and a lot of pain. Simple systems approaches are best even when what you are doing is complicated.
Re:Simple Systems Have Less Downtime by dnautics on Tuesday March 03, 2020 @11:48AM (#22476163)
I could be wrong but I think freebsd allowed multiplexing connections per port before Linux? Please correct me I am mistaken about this.
Re:Simple Systems Have Less Downtime by sitkack on Tuesday March 03, 2020 @10:52AM (#22475496)
Erlang is like Bugman from the Nightmare Before Christmas. It is literally made out of microservices at every level.

Microservices are a design philosophy that people confuse as a deployment strategy.

Re:Simple Systems Have Less Downtime by cristaloleg on Tuesday March 03, 2020 @12:01PM (#22476310)
> Microservices are a design philosophy that people confuse as a deployment strategy.

I'm going to print this and show everyone, great words, thank you.

Re:Simple Systems Have Less Downtime by dnautics on Tuesday March 03, 2020 @11:47AM (#22476148)
Not necessarily, you can design erlang systems with more coupling than you'd expect in traditional microservices. Microservices mean that your codebase is segmented along business concern lines.
Re:Simple Systems Have Less Downtime by barrkel on Tuesday March 03, 2020 @12:55PM (#22476931)
I would rather argue that microservices are best implemented when each service owns a bounded context in the lingo of domain-driven design. Business concerns might align with that, or they may not, depending on how technically complex (vs product complexity) the product is.
Re:Simple Systems Have Less Downtime by dnautics on Tuesday March 03, 2020 @01:14PM (#22477150)
Yes, that is a better definition, but nonetheless you can design erlang systems with a single domain, or design erlang systems as a monolith, even if it has a billion actors running around underneath.
Re:Simple Systems Have Less Downtime by bcrosby95 on Tuesday March 03, 2020 @03:49PM (#22478586)
Kinda, yeah, except Erlang is microservices made easier. I've loved how the language makes building distributed systems so comparatively easy since I ran across it back in 2005.
Re:Simple Systems Have Less Downtime by munchbunny on Tuesday March 03, 2020 @12:45PM (#22476813)
That was probably the biggest impact single decision for WhatsApp technically.

As a rule of thumb based on my own experiences and the opinions of more experienced engineers I've had the good fortune to work with, language choice is far less important than the quality of the team using it.

While I have no doubt that trying to build WhatsApp in a language that would be the wrong tool for the job (say... PHP) would have been fatal, I have many more doubts that choosing Erlang was the key enabling decision.

Re:Simple Systems Have Less Downtime by Twisol on Tuesday March 03, 2020 @12:50PM (#22476867)
Language choice I can perhaps agree with, but from what I've read, the biggest factor with Erlang is much more its runtime environment. BEAM + OTP is a very impressive piece of kit.
Re:Simple Systems Have Less Downtime by bcrosby95 on Tuesday March 03, 2020 @03:56PM (#22478634)
I don't know. Erlang is a "funny" language that can somewhat easily do certain things that would be much more time consuming to accomplish in a more mainstream programming language. The difference between building whatsapp in Erlang vs any other programming language is probably larger than building it in php vs any other mainstream language.
Re:Simple Systems Have Less Downtime by ipnon on Tuesday March 03, 2020 @01:01PM (#22477002)
Converse: Can you imagine WhatsApp parallel universe serving with Node?
Re:Simple Systems Have Less Downtime by jopsen on Thursday March 05, 2020 @07:22AM (#22492933)
Yes :)

Success is more to do with user experience..

If you hit gold and scale you can almost always optimize the implementation later.

Re:Simple Systems Have Less Downtime by skrebbel on Tuesday March 03, 2020 @01:16PM (#22477174)
Iirc Slack's backend is PHP.
Re:Simple Systems Have Less Downtime by mkopinsky on Tuesday March 03, 2020 @09:08PM (#22480619)
They've moved over everything to Hacklang, which is a derivative of PHP.
Re:Simple Systems Have Less Downtime by hinkley on Tuesday March 03, 2020 @02:14PM (#22477767)
It's amazing how much effort it takes to do something with the wrong tools.

Sunk Cost Fallacy tends to fight any broad-stroke improvements. Until a competitor starts eating your lunch.