7 ms·
Robinhood’s third outage may point to deeper problems in its tech stack
- eschneider 7y agoYou don’t say?
- brenden2 7y agoIf I were to guess, they've probably invested heavily in building a bunch of "high availability distributed systems" when they should have just stuck to MySQL or Postgres.
- sergiotapia 7y agoClever code is bad code. Always aim for simple, obvious code. Do you need kubernetes? Nope. 90% chance you don't. You're right, they probably are having issues with some lasagna architecture right now.
- tombert 7y agoI don't disagree with the thesis of your comment but I feel like people often use this reasoning to simply avoid doing any kind of architecting. Yes, something with Postgres and PHP is probably ok for a lot of usecases, but a) Robin Hood is a pretty big target, and might exceed the simple limits of that, and b) there are plenty of cases where Kubernetes (or any other big orchestration framework like Mesos or Nomad or Docker Swarm) will simplify the codebase. I'll agree that engineers are sometimes a bit too eager to just jump on the new HN tech a bit too early, but it's not like that tech isn't useful, and it's not like it doesn't serve some kind of purpose.
- marcus_holmes 7y agoI agree on the need for architecting, except that there's a tendency to do that waaaay prematurely. You don't know where the best place to fragment your monolith is until you've got to the point where there monolith is struggling to keep up, because then you know where the slow bits are and how to scale them. And there's no need to split the whole thing. You can just split off the slow bits. Starting with Kubernetes from the get-go seems insane to me.
- tombert 7y agoI don't run a big successful website, but I do run a Kubernetes cluster at home in my basement. Why? Because the computers I run everything on are six Nvidia Jetson Nanos; I'm a fan of running these because I like having access to a good GPU, and I can leave them running 24/7 without having to feel too guilty about power usage. Just one Nvidia Jetson Nano wouldn't be enough to handle all my server needs (movie streaming, video transcoding, random odds and ends of projects I have), and using a framework like Docker Swarm or Kubernetes makes this relatively easy. Is having the ability to linearly scale my home server overkill? Maybe, but at the same time it certainly felt necessary for the job, and carries the nice advantage that I don't have to rearchitect everything later while trying to shoehorn in the "old" way of doing stuff for compatibility sake. > You don't know where the best place to fragment your monolith is until you've got to the point where there monolith is struggling to keep up, because then you know where the slow bits are and how to scale them. Sure, it's not a silver bullet, and I certainly wouldn't claim it as such. That said, there are reasonable places to expect bottlenecks that can benefit from an architecture; things hitting a spinning disk or making an external HTTP call tend to be slow, so it is often better to model them asynchronously and buffer through a message queue; even if you don't have concrete numbers on your side it's not an unreasonable assumption to make.
- ftlio 7y agoI don't want to know how complicated someone has made their life if K8s can't simplify it.
- takeda 7y agoThey recently had a blog about moving to kubernetes https://robinhood.engineering/building-an-application-deployment-platform-on-kubernetes-f6af367d1e05 https://robinhood.engineering/building-an-application-deploy...
- siscia 7y agoYeahhh I am all down for simplify the stack as much as possible, but up to your necessity. Eventually you will reach a point where you will need clever and fast code.
- PacifyFish 7y agoAt the volume and frequency they need to process, it probably makes sense to do something more complicated than MySQL...
- throwsprtsdy 7y agoOr less complicated, like piles of CSV files.
- anon176 7y agoOr piles of JSON.. and scala/spark
- 737maxtw 7y agoWat? Dont get me wrong I'm not a fan of over engineering things. But those two statements are not mutually exclusive. You can build scalable distributed systems with postgres as a backend, heck if I was building one that would be a core part of my stack...
- DelightOne 7y agoHow do you scale Postgres so far? Or do you move as much as you can to the outside?
- clwg 7y agoYou can use Citus(recently bought by Microsoft) to scale postgres https://www.citusdata.com/ https://www.citusdata.com/
- rjkennedy98 7y agoThat is pure speculation. And people that use MySQL have outages also especially at this level of load. At my company we are just using PHP and MSSQL and we have our DB go out even on our internal apps on nearly a daily basis due to load problems. I can't imagine our DBs holding up to millions of users or need to process millions of ticker symbols or trades.
- riteshpatel 7y agoSounds like missing indexes to me if outages are that frequent.
- 3fe9a03ccd14ca5 7y ago> we have our DB go out even on our internal apps on nearly a daily basis. What?? How could your team live with that?
- rjkennedy98 7y agoIts extremely difficult to cut over millions of lines of code and 15+ years of development. We are working on it, but the db was never properly sharded and that is very difficult to do at a late stage. When you work on big enough projects the common sense approaches break down. FB messager doesn't use MySQL, Amazon shopping cart doesn't use Postgres. There is a reasons why. This isn't a wordpress app, it needs to process 10s of thousands of updates a second and still be a responsive app with 99.9% uptime and low SLAs on requests.
- astannard 7y agoyou might be right: https://robinhood.engineering/building-an-application-deployment-platform-on-kubernetes-f6af367d1e05 https://robinhood.engineering/building-an-application-deploy...
- DelightOne 7y agoNeat. I think everyone did similar templating for similar applications. For example Golang apps which have logging/metrics already built-in instead of needing sidecars. > One notable project is to provide an intuitive, user-friendly frontend for executing GitOps workflows on Applications and Component manifests. Is this supposed to automatically update manifests, deploy them to staging namespace/automatic tests, enable automatic canary deployments? > We also hope to go even further and create a one-touch infrastructure-provisioning interface to abstract away manifests altogether, and place application-centric abstractions even more front-and-center for application developers. How does that look like? Archetype-Specific web interfaces/manifests? I'm kinda sad that this isn't available to the general public since I'd love to avoid constant repetition/writing my _limited_ own version.
- ecnahc515 7y agoIt's funny you mention this, because I've heard from people who've interviewed with Robinhood that they're still on a single monolothic RDS instance for a good portion of their main application. If I had to guess, a single RDS instance would be a more likely cause, something like a table growing too large (an audit log table perhaps).
- doobiedowner 7y agoTo those still on RH, with all the other fee free brokers out there, why are you still on there?
- brenden2 7y agoTD Ameritrade is pretty good, as is tastyworks. Interactive Brokers is great for price and execution, but their tooling is not wonderful. For options specifically, I would go with tastyworks.
- siddarthd2919 7y agoThe UI is what keeps me
- chickenpotpie 7y agoI don't want to pay $75 to move my shares to another broker. I also don't want to risk selling all my shares right now, transferring the money to my bank, then transferring it to another broker, and buying them again and risking the market coming back during that process and losing thousands of dollars. There's probably a way to transfer out faster for free, but I don't know it. Any new money I invest will be in a different broker, though.
- kasey_junk 7y agoThis plus I don’t trade enough that the downtimes matter. I buy twice a month on a fixed schedule they’ve not been down on any of those times so I wouldn’t know they have issues if it weren’t for the news.
- chickenpotpie 7y agoExactly, I the only times I trade are when I get a paycheck and when I need to re-balance my portfolio.
- deleted 7y ago[deleted]
- 7y ago
- metalliqaz 7y agoUser trust is already gone.
- JackFr 7y agoArticle is pretty light on information, especially with respect to Robinhood's actual tech stack.
- jibolash 7y agoTrue. I find you can get a pretty good idea of what a company's tech stack is by looking at their engineering job descriptions
- jonnypotty 7y agoPretty light? You're generous. Glad hn was here to fill in the gaps. Lol.
- davidw 7y agoThought it might discuss their tech stack, but no mention of any technical details.
- Igelau 7y agoThere was a really strained Sherwood Forest metaphor though.
- dustingetz 7y agoCoded In Silicon Valley (TM)
- PacifyFish 7y agoBitcoin
- Zaskoda 7y agoI don't know exactly what you mean, but I agree.
- gopalv 7y agoI had a director who used to say "You know that would be a good problem to have." whenever scaling discussions come up (i.e "How would we handle 10M users?"). And as an engineer, I used to point how Twitter's fail-whale was killing Twitter just before it got popular. After almost a decade, now I get what he meant. And I'm more interested in jumping into a company with technical problems like these, with short time horizons rather than those with capital restrictions or chasing PMF in early stages.
- melling 7y agoWhat was Twitter’s bottleneck? I remember they were one of the first to really adopt Scala. They still use it quite successfully.
- digianarchist 7y agoI have a vague recollection that Ruby was their bottleneck.
- niyazpk 7y agoRuby may be slower than other languages, but generally speaking your scalability issues will never be solved by rewriting in another language. A rewrite may give you a temporary relief if the runtime of your new language is say 10% faster than your current one. This is not a long term solution though, and for many startups in hyper growth state, this will just give you a few more weeks of runway until you run into the next roadblock. Your solution to scalability issues should almost always be system redesign, not component rewrite.
- marcus_holmes 7y agoThe Fail Whale is always my go-to when explaining why we should ignore scaling until we need to. If people need the solution and love the product, they'll be patient while tech problems are fixed. It's better to create a lovable product than a scalable product.
- RohitLakh 7y agoSomething is going down!
- dang 7y agoThis doesn't appear to add anything over https://news.ycombinator.com/item?id=22525494 https://news.ycombinator.com/item?id=22525494. There are links to half a dozen previous discussions there too.
- danielg6 7y agoI assumed the outages were caused by features lacking in the product, rather than the tech stack (e.g. not accounting for leap days if that were true). I also assumed that the recent outage was due to not accounting for yesterday’s circuit breaker. I imagined there’s a Robinhood product manager with a JIRA ticket who’s complaining about their feature getting depriortized every month.