• draughtcyclist@lemmy.world
    link
    fedilink
    arrow-up
    59
    arrow-down
    4
    ·
    5 months 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.

    • Ephera@lemmy.ml
      link
      fedilink
      arrow-up
      31
      ·
      5 months 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.

      • whoisearth@lemmy.ca
        link
        fedilink
        arrow-up
        37
        ·
        5 months 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.

    • frezik@midwest.social
      link
      fedilink
      arrow-up
      6
      ·
      5 months 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.

    • lemmyvore@feddit.nl
      link
      fedilink
      English
      arrow-up
      5
      ·
      5 months ago

      Most software developers have no concept of real world limitations and issues like tolerances, failure, probability, latency, hysteresis, ramp-up etc. because they’re not engineers.

      Normally they’d be expected to at least account for software-specific aspects like ACID or CAP or some vague awareness of the fact that when you’re dealing with multiple systems the data may not always arrive as you expect it, when you expect it. But even that is a crapshoot.