Hacker News new | ask | show | jobs
by ribadeo 488 days ago
At least half their gak is due to them NOT moving quickly and NOT wanting to break things.

IIRC, graphql is a means of papering over a bunch of legacy APIs. They removed foreign keys from mysql using it as a column store db, a vestige of the original LAMP stack still on PHP.

I don't think Meta infrastructural choices are applicable to most folk.

What does serverless land your average dev? A high AWS bill. Elastic managed Kubernetes stack? A higher bill.

Did you know that you can use YAML and provision actual cloud provider resources with boring tech? Welcome to Ansible. There is no need to recreate Linux network stack when you have the Linux network stack, and it actually works!

Quite a lot of hacky gak is required when you run node.js as a production public facing web service. A statically compiled binary won't invent novel code execution paths 4 days into a memory leaking runtime bender.

Boring tech is boring, I guess, even if it's new and shiny. Facebook creates tech to mitigate the pathologies their past continuously present.

4 comments

> Facebook creates tech to mitigate the pathologies their past continuously present.

Remember when they hacked a running Android Dalvik machine because their organizational constraints were such that they could never remove code or delete unused classes?

https://archive.is/nIPlg

https://engineering.fb.com/2013/03/04/android/under-the-hood...

Facebook seems like a place where they do amazing engineering to temporarily stave off the disastrous consequences of their previous feat of amazing engineering.

Basically yeah. You should see the FB iOS code base. Yikes. And I have seen Apple code bases that literally go back to the 80s.
> Did you know that you can use YAML and provision actual cloud provider resources with boring tech? Welcome to Ansible

Anyone using Ansible for cloud infrastructure management is not to be taken seriously. It's among the worst tools for the job - not (always) idempotent, no state tracking, slow, very limited in the resources it can manage, very lacking templating, fun stuff like "state: absent", running, and then having to remove the corresponding lines to delete, etc etc. You're literally better of bash scripting the cloud provider's CLI than using Ansible. Terraform/OpenTofu, Pulumi/tfcdk if you hate your future self are just clearly so much better.

Way to lose the forest for the trees.

I was making a point about provisioning VPSes instead of trying to wrangle postgresql restores inside kubectl or equivalent, of how your cloud provider is already provisioning a single physical server via a hypervisor.

I was making a point that facecrook overengineering is about them being boxed into corners, about how very little of big techs solutions translate to real world usage in the web industry i am very much taken seriously in for over 30 years.

You read 'ansible recommended', which I could also argue with you about, but I shan't.

The world is not idempotent either. Neither are any facebook production rollouts lol
Consider that your shrill absolute dismissal, "anyone! Not take seriously!" as if Ansible has been proven wrongful in a court of law, as if your statements are law and binding, get over yourself, for everyones sake. Down voting me into oblivion over a well deserved opinion is rather aggressive and this makes this community unpleasant. I am not clueless and don't like beinf treated as if I am.
> I am not clueless and don't like beinf treated as if I am.

You made a clueless comment which I tired to (constructively) dismiss. If you don't want to be treated as clueless, don't recommend the equivalent of using a hammer to peel potatoes.

What is your actual point? You are criticizing Meta for building complex systems by iterating on boring tech like PHP and MySQL, and instead suggesting that they build their systems on top of different boring tech like YAML and Ansible. Why? The fact is that there are no "boring" off-the-shelf solutions for solving the problems that Meta is facing like whole region failures and performant cross-datacenter routing/sharding.

Your comment feels like it's not actually engaging with the contents of this article. It's not that Meta is creating bespoke technologies only out of fear of breaking past code. Their entire methodology of innovation is highly iterative and grounded in feedback through practical demonstration of results. You say that "Facebook creates tech to mitigate the pathologies their past continuously present", as if that is a bad approach, but considering Meta's success, I think it would be wise to seriously reconsider that position.

> They removed foreign keys from mysql

This isn't specific to Meta/Facebook in any way. A very large percentage of big tech companies use MySQL without foreign key constraints, because they're problematic at scale.

To be clear, foreign key constraints are not used, but it's still very much a relational use-case / workload.

> using it as a column store db

That's nonsensical. Column stores are for analytics, whereas MySQL is used for OLTP. Both InnoDB and MyRocks are row-oriented storage engines.

Maybe you actually meant "key-value store", which is a more common claim, but that's still completely wrong. The query pattern for Facebook's social graph relies heavily on range scans over indexes, which isn't a concept supported by key-value stores. And there are many MySQL workloads at Facebook outside of the social graph database tier, with extremely varied use of MySQL functionality.