• 1984@lemmy.today
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    7 months 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
      ·
      7 months ago

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

      • 1984@lemmy.today
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        I don’t think people have a choice. If you join a company where they use kubernetes, you have to use that technology for everything. You can’t escape the complexity even if you just want to make a simple program. It still needs to run in kubernetes.

        • bort@sopuli.xyz
          link
          fedilink
          arrow-up
          1
          ·
          7 months ago

          if you just want to make a simple program. It still needs to run in kubernetes.

          “hello OPS-team. Here is my simple program. Have fun running it on your kubernetes”

    • frezik@midwest.social
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      If object oriented design is fundamentally about components sending messages to each other, then microservices are a different route to OO design. If people are bad at OO design, then they’re likely bad at designing microservices, as well. The two aren’t so separate.

      All these programs now need to talk over the network instead of simply communicating in the same process.

      This is where things go really wrong. Separating components over the network can be useful, but needs careful consideration. The end result can easily be noticeably slower than the original, and I’m surprised anybody thought otherwise.

      • 1984@lemmy.today
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        It’s absolutely slower. There is no way to make a network request faster than a function call. It’s slower by probably thousands of times.

        • namingthingsiseasy@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          7 months ago

          There is no way to make a network request faster than a function call.

          Apologies in advance if this it too pedantic, but this isn’t necessarily true. If you’re talking about an operation call that takes ~seconds to run, then the network overhead is negligible. And if you need specialized hardware for it, then it definitely could be delegate it out to a separate machine over the network. Examples could include requiring a GPU, more RAM, or even a faster CPU if your main application is running on more power-efficient CPUs.

          I’m not saying that this is true in every case - they are definitely niche cases. But I definitely wouldn’t say that network requests are never faster than local function calls.

          • Corbin@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            6 months ago

            Well put. And this is a generic pattern; for example, GPUs are only faster than CPUs if the cost of preparing the GPU and retrieving the result is faster than directly evaluating the algorithm on the CPU. This also applies to main memory! Anything outside of the CPU can incur a latency/throughput/scaling tradeoff.