40 pointsby leptoniscoola day ago13 comments
  • ameliaquininga day ago
    Does this story seem kinda…fake…to anyone else? Like, obviously companies do sometimes make decisions this stupid, but the way this is written seems a little too carefully optimized to make for a morality play of the kind HN enjoys. (And there's a potential motive, since there's a whole bunch of links to paid books and such, somewhat clumsily tied to the main narrative.)
    • altmanaltman19 hours ago
      > “It’s not complex if you do it right. Netflix — “

      > “WE’RE NOT NETFLIX!” I finally snapped. “Netflix has 500 engineers. We have 4. Netflix has dedicated DevOps teams. We have one guy. Netflix has millions of users. We have 50,000.”

      Then

      > Lesson 5: The Monolith Isn’t Your Enemy

      > A well-structured monolith can:

      > Scale to millions of users (Shopify, GitHub, Stack Overflow prove this)

      Because Shopify, Github and Stack Overflow have 4 engineers each as well.

      It kind of seems real because it reads like the it's written by the kind of person that would make high level arch decisions without even understanding what the f they are doing.

      • Timon37 hours ago
        This criticism seems like a complete non-sequitur to me. They didn't claim that Shopify, Github and Stack Overflow scaled to millions of users with 4 engineers each. Is the implication that, because Netflix and those companies both had to hire more engineers to scale, the decision between monoliths and microservices has no impact on a 4-person team? I genuinely don't understand what you're trying to imply.

        Based on my experience microservices do introduce additional fixed costs compared to monoliths (and these costs can be too expensive for small teams), so everything you've quoted makes complete sense.

        • altmanaltman6 hours ago
          In the interest of helping you understand what I was saying, the two quotes are completely contradictory (even if the base argument is correct/valid).

          The first one says we shouldn't follow Netflix's example because it is a massive company with an enormous team. The second one says we should follow the example of these companies instead, while ignoring that they are also a huge company with a massive team.

          So the criticism/joke stems from the logical inconsistency between the two. The fact that you stopped with microservices, using a rant about Netflix, while at the same time lauding monoliths, using companies of similar scale as examples, highlights your lack of understanding of using team scale as a reason to pursue either alternative. Dealing with such a person in management is common where they often contradict their own reasoning and pick whatever they fancy at that time. You cannot argue logically when the system changes are not based on objective standards but subjective standards, where you can be wrong for one thing but they can be right for the same thing.

          That's why it seems like the person making the decisions is lost in terms of the choices they're making.

    • temp_praneshp21 hours ago
      100%. The writing style put me off too, not sure exactly what about is weird though
      • yongjik20 hours ago
        Also, it starts with

        > Microservices didn’t scale our startup. They killed it.

        ...and then at the end,

        > We lost 6 months. We lost some good engineers. We burned through money we didn’t have. But we survived.

        ...So did microservices kill the startup or not?

      • tills1320 hours ago
        Seems like the whole thing is just there to sell you on the linked resources. And it feels like AI slop with all the lists.
    • greatgib13 hours ago
      This article looks like a giant stack of bullshit, trying to surf the wave of trendy topics.

      If you are small and not have scaling problems, it is highly unlikely that you see a real difference between monolith or microservice except on the margin.

      But lots of things look off in the article: Billing needed to ... Create the order

      What? Billing service is the one creating the orders instead of the opposite?

         Monday: A cascading failure took down the entire platform for 4 hours. One service had a memory leak, which caused it to slow down, which caused other services to time out, which caused retries, which brought everything down. In the monolith days, we would’ve just restarted one app. Now we had to debug a distributed system failure.
      
      Hum, they could have restarted the service that failed, but if they had a leak in their code, even being a monolith the whole app would have gone done until the thing is fixed even constantly restarting. And I don't imagine the quality of your monolith service that is constantly restarting in full...

      Finally it claims that Monday their service started to be slow, and already Wednesday the customer threatened to leave them because of the service to be slower. Doesn't look like to be a customer very hooked or needing your service if only after 2 days of issues they already want to leave.

      Also, something totally suspicious is that, even if small or moderate size of company you could still have people push some architecture that they prefer, no company with a short few months cash runaway will decide to do a big refactor of the whole architecture if everything was good on the first place and no problem encountered. What will happen in theory is that you will start to face a wall, degrading performances with scale of something like that and then decide that you will have to do something, a rework. And then there will be the debate and decision about monolith, microservice, whatever else...

  • condwanaland18 hours ago
    The mistake here is having an architect who is not shipping product. Architects who's job it is to define 'rules' and 'patterns' without actually impending anything are almost always a bad idea. Just focus on shipping. Have at least one experienced engineer who can guide the development but don't give those decisions over to some 'architect' who is not even going to write 10 lines of code in your codebase
    • LucaMo14 hours ago
      > We had 4 backend developers and a DevOps guy who was already stretched thin.

      The mistake here was having an architect full stop. The team is too small, a good tech lead can manage to plan a service with 50k MAU (and way beyond) without an architect. The problem with some companies that get millions in seed funding is that they need to spend the money and they do so by adding roles that shouldn't exist at that stage.

    • salomonk_mur14 hours ago
      Having members of the tech team who don't write code in some way or another is bad practice in general
  • dabinata day ago
    One thing I’ve learned is that you should be wary of spending too much time on things that customers don’t see. Customers don’t care about backend engineering unless it results in benefits they can actually see, and if you spend too long on invisible features they’ll think your platform is stagnant and move somewhere else.
    • CharlieDigital20 hours ago

          > ...you should be wary of spending too much time on things that customers don’t see
      
      I don't think this is entirely true because there are some things that will help you ship faster like good architecture and a system design that is as simple as possible. These are worth investing, despite their obscurity to the end user, because doing it well can result in a faster pipeline and more stability.
      • dedge19 hours ago
        I would say this is fine, provided it’s in service of releasing value.

        It’s when the invisible stuff becomes a chore, and blocks or slows down releasing value, such as worrying about micro services.

  • Olumde18 hours ago
    > But we survived

    > And ironically? Now that we’re back on a monolith and shipping fast again, we’ve started growing again. Customers are happier. The team is happier.

    So Microservices did not kill your startup?

    And why did you stop instances of your monolith before the Microservices version was mature and ready???

  • analogpixela day ago
    this goes to show that one person can make a difference, the lead architect all by himself was able to destroy a company and moral.
  • brimstedt14 hours ago
    I do not agree fully with this article, but it does give food for thought and have some valid points:

    - don't blindly jump into a new architecture because it's cool

    - choose wisely the size of your services. It's not binary, and often it makes sense to group responsibilities into larger services.

    - microservices have some benefits, moduliths (though not mentioned in the article) and monoliths have theirs. They all also have their set of disadvantages.

    - etc

    But anyway, the key lesson (which does not seem like a conclusion the author made) is:

    Don't put a halt to your product/business development to do technician only work.

    I.e if you can't make a technical change while still shipping customer value, that change may not be worth it.

    There are of course exceptions, but in general you can manage technical debt, archtectural work, bug fixing, performance improvements, dx improvements, etc, while still shipping new features.

  • rambojohnson20 hours ago
    Premature distribution killed the startup, not microservices. You split the system before the boundaries were real, paid the tax in latency and coordination, and skipped the hard parts that make it viable: event-driven boundaries, local read models, and boring failure handling and comprehensive logging. Start with a modular monolith, earn your boundaries, then extract.
  • another_twista day ago
    I am pretty sure it was a lack of demand that killed the startup. Either of these are valid problems and quite easy to deploy and work with.
  • blackoila day ago
    Microservices solve people problem not technical. Till ~20 backend devs no point in moving to it. Monoliths are better in terms of performance, reliability and dev speed.
  • hdaz001721 hours ago
    please give us $200 ;) but sorry we can't even get the title right!
  • shraddha929 hours ago
    what did i just read
  • nodesocket21 hours ago
    Pretty sure making a product that people don’t want killed your startup. This is like saying using Python vs Go killed your startup which is absurd (unless your startup is high frequency trading or something).
  • jiggawattsa day ago
    Ironically posted on Medium, which showed me the text, then blanked the whole screen to replace the text with light grey polyfills, and then showed me the same text again... several seconds later.

    That's because Medium is a bunch of APIs and (micro) services, not a monolith like it should be.

    Heck, it could be plain static HTML because it's just text for crying out loud!

    Instead, it uses a GraphQL query through JSON to obtain the text of the article... that it already sent me in HTML.

    Total page weight of 17 MB, of which 6.7 MB is some sort of non-media ("text") document or script.

    This is user-hostile architecture astronaut madness, and is so totally normal in the modern internet that nobody even bats and eye when text takes appreciable amounts of time to render on a 6 GHz multi-core computer with 1 Gbps fibre Internet connectivity.

    Your customers hate this. Your architects love it because it keeps them employed.

    • simfree21 hours ago
      A simple modern Dotnet monolith with Postgres on a Linux server could deliver a much better end user experience, and it probably would take a lot less server resources than the current mess.
    • echoangle20 hours ago
      > light grey polyfills

      Those grey loading placeholders for text are called skeleton loaders BTW, polyfills are libraries used to support newer browser APIs in older browsers and not something you can exactly see on a website (without checking the devtools)

    • ameliaquininga day ago
      Monoliths vs. microservices has nothing to do with server-side rendering vs. GraphQL. Architecturally monolithic Web apps use GraphQL all the time.

      I'm not sure why Medium does the weird blanking thing but my guess is that it's because it's deciding whether to let you read the article or instead put up a paywall. There are a lot of SPA sites out there, many of which aren't particularly economical with frontend resources, and they generally don't do that unless they're trying to enforce some kind of paywall or similar.

      • simfree21 hours ago
        Monoliths generally server side render. Server side rendering is fast, consistent and performant, the state of the client won't get into wonky territory since they are a button click away from getting current, known good state from the server.
        • jdlshore16 hours ago
          That’s not a microservice vs monolith thing. That’s a client-side single-page app vs server-side rendering thing. Although, granted, I more often see microservice architectures with single-page apps than with server-side rendering.
      • jiggawatts20 hours ago
        > Architecturally monolithic Web apps use GraphQL all the time.

        Sure, but a significant motivation for using GraphQL is to stitch together a bunch of microservices into a cohesive API for the front end.

        My comment about Medium using microservices was just an informed guess, but a good one. They started migrating from a monolith to microservices back in 2018: https://medium.engineering/microservice-architecture-at-medi...

        Is it a coincidence that that's around the time frame that I noticed the Medium web site becoming slower than it used to be?

        • ameliaquining19 hours ago
          I do in fact think it's pretty unlikely that any performance degradation you observed was directly caused by microservices, as opposed to changes that directly affected the frontend.
          • jiggawatts16 hours ago
            I politely disagree. Microservices are the large government bureaucracy of software architecture with similar efficiency outcomes for similar reasons.