• draughtcyclist@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    As an operator, this who thread reads like a bunch of devs who don’t understand networking and refuse to learn.

    Sure, for smaller applications or small dev teams it doesn’t make sense. But for so many other things it does.

    • frezik@midwest.social
      link
      fedilink
      arrow-up
      0
      ·
      2 years ago

      Networking has little to do with it.

      Microarchitecture needs to be broken up into components. Those components need to send messages to each other. Components sending messages to each other is arguably the core of what object oriented design was trying to do all along. If your devs were bad at classifying components in an object oriented design, then they’ll probably be bad at it in a microarchitecture, too. Worse, the actual system is now likely spread amongst many different version control repositories, and teams stake out ownership of their repositories. Now you get more blockers spread amongst several teams.

      Where the network layer comes into play is to replace something that used to be running in a single CPU core, or sometimes different cores on the same motherboard. Unless you can exploit parallelization for your use case, the kind where you have more threads than the number of CPU threads a single motherboard can handle (which can be several hundred on current systems), this will always be slower.

    • Ephera@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      2 years ago

      The problem is that all projects start small, and frankly most of them die small. Aiming for microservices architecture right away is a surefire way to get the project killed before anyone would benefit off of the microservices.

      • Potatos_are_not_friends@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        2 years ago

        I always lump microservices architecture as premature optimization, one that should be used when you’re maxed out of resources or everything is too spaghetti.

        I love the idea. And I even pitched it for a specific project. But I had to eat humble pie when the devops nerds threw more servers at the problem and it worked better than I expected.

        • lemmyvore@feddit.nl
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 years ago

          Sounds like that thing was already designed to be horizontally scalable. Was your error related to not realizing that? Or what was the problem being solved by microservices?

      • whoisearth@lemmy.ca
        link
        fedilink
        arrow-up
        0
        ·
        2 years ago

        The other angle is the majority of Devs are just… Not good…

        A good Dev in the situation you mention will design the solution needed now not the one you hope for later.

        I’m saying this as someone who has been mired in scope creep and over engineering solutions many times in my life because “what if 5000 people need to use it at once?!”

        In most cases all you need is a database, a single thread and a simple API. Build it and then as the problems come grow with them. Try to take into account issues of scale but realize you can’t and shouldn’t solve every scenario because there are too many variables which may never exist.

        • Korne127@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          2 years ago

          A good Dev in the situation you mention will design the solution needed now not the one you hope for later.

          Maintainability is one of the most important if not the most important goal when programming. If a dev only designs a solution that fits for exactly the current situation but doesn’t allow any changes, it’s not a good dev.
          But yeah, if you start small, a solution that’s made for that is preferable. You can still refactor things when you get magnitudes larger and have the budget.

          • Potatos_are_not_friends@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            2 years ago

            If a dev only designs a solution that fits for exactly the current situation but doesn’t allow any changes, it’s not a good dev.

            I don’t think anybody is arguing this. Nobody (in my decade-plus in this industry) actively codes in a way to not allow any changes.

            • floofloof@lemmy.ca
              link
              fedilink
              English
              arrow-up
              0
              ·
              2 years ago

              You evidently haven’t met my colleagues. There are always people who go for the quickest hack despite the trouble it stores up for later, and they’re usually encouraged by management.

          • floofloof@lemmy.ca
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 years ago

            The tricky thing about software development is this balance: you don’t want to hobble your system by designing only for today, because that could waste a whole lot of time later when needs change, but you also mustn’t paralyze the project by designing for all possible tomorrows. Finding a middle path is the art, and the only proof that you got it somewhat right is that things get done with relatively few crises.

  • THCDenton@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    Dude just start with a monolith and part it out as you scale. Of course microservices are a waste of time if you build them right off the bat.

    • fidodo@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 years ago

      It’s just not worth it until your monolith reaches a certain size and complexity. Micro services always require more maintenance, devops, tooling, artifact registries, version syncing, etc. Monoliths eventually reach a point where they are so complicated that it becomes worth it to split it up and are worth the extra overhead of micro services, but that takes a while to get there, and a company will be pretty successful by the time they reach that scale.

      The main reason monoliths get a bad rap is because a lot of those projects are just poorly structured and designed. Following the micro service pattern doesn’t guarantee a cleaner project across the entire stack and IMO a poorly designed micro service architecture is harder to maintain than a poorly designed monolith because you have wildly out of sync projects that are all implemented slightly differently making bugs harder to find and fix and deployments harder to coordinate.

    • 1984@lemmy.today
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      2 years ago

      Problem is that companies are using them for all scenarios. It’s often their entire tech stack now, with kubernetes.

      It’s similar to the object oriented hype that came before it, where developers had to write all their programs in a way so they could be extended and prepared for any future changes.

      Everything became complex and difficult to work with. And almost none of those programs were ever extended in any significant way where object oriented design made it easier. On the contrary, it made it far more difficult to understand the program since you had to know which method was called in which object due to polymorphism when you looked at the code. You had to jump around like crazy to see what code was actually running.

      Now with kubernetes, it’s all about making the programs easier to scale and easier to develop for the developers, but it shifts the complexity to the infrastructure needed to support the networking requirements.

      All these programs now need to talk over the network instead of simply communicating in the same process. And with that you have to think about failure scenarios, out of order communication, missing messages, separate databases and data storage for different services etc.

      • prof@infosec.pub
        link
        fedilink
        arrow-up
        0
        ·
        2 years ago

        You can have the best tool in the world and still find people just hitting their own face with it.

  • NigelFrobisher@aussie.zone
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    Pretty sure microservice architecture was invented by enterprise architects as a way to justify their existence, and by dev teams in general to explain why adding new features now takes so long (we have adopted best practice!).

  • GissaMittJobb@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    It’s a tool like any other, appropriate under some circumstances and inappropriate in others.

    Blindly rejecting it without considering whether it’s appropriate in the context is honestly just as bad as choosing it without considering whether it’s appropriate in the context, fwiw.

  • feedmecontent@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    Who at what company is having the conversation “let’s do (generic pattern)” without facing some kind of problem or inherent design need that can be solved by (generic pattern). Do these companies need software developers or did they just notice that all of the other companies have them? Surely some sort of inherent needs are driving their software.

    Edited to make the generic pattern clearer

    • jubilationtcornpone@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 years ago

      Yeah, I work for one of these companies. Some senior executive quotes some stupid thing Jeff Bezos said about everything being an API and is like “This! We need to do this!”

      Nevermind the fact that we’re not AWS and our business has zero overlap with theirs. Nevermind that this mindset turns every service we design into a bloated, unmaintainable nightmare. And, forget the fact that our software division is completely unprofitable due to the checks notes shitty business decisions made by senior management.

      No no, we’re going to somehow solve this by latching onto whatever buzzword is all the rage right. Turns out having an MBA doesn’t mean you know shit about running a business.

  • Tyrangle@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 years ago

    From my perspective the corporate obsession with microservices is a natural evolution from their ongoing obsession with Agile. One of the biggest consequences of Agile adoption I’ve seen has been the expectation of working prototypes within the first few months of development, even for large projects. For architects this could mean honing in on solutions in weeks that we would have had months to settle on in the past. Microservices are attractive in this context because they buy us flexibility without holding up development. Once we’ve identified the services that we’ll need, we can get scrum teams off and running on those services while working alongside them to figure out how they all fit together. Few other architectures give us that kind of flexibility.

    All this is to say that if your current silver bullet introduces a unique set of problems, you shouldn’t be surprised if the solutions to those problems start to also look like silver bullets.