Email or username:

Password:

Forgot your password?
Top-level
Markus Feilner :verified:

@tux0r @tante @dragotin
... interesting view ... plz elaborate ... I'm really interested in the arguments...

17 comments
tux0r :openbsd:

@mfeilner

Not complex:
- One service.

Complex:
- Twelve services which communicate over sophisticated APIs with each other.

I wonder how this is an "interesting view". Just try to draw a map of both models.

@tante @dragotin

Markus Feilner :verified:

@tux0r @tante @dragotin

Well, I guess the server underneath isn't adding much to the complexity any more. I thought modern admins do that through config management, thus that's no overhead anymore and necessary anyhow. The APIs you will need if you want to scale, anyhow.
But I'm only the journalist, not an expert.

Markus Feilner :verified:

@tux0r @tante @dragotin

does "one service" instead of 12 mean the one does the tasks of 12 ? Then complexity is only hidden inside, isn't it? I agree about the APIs, but how do you replace those "inside" the one blob server?

Markus Feilner :verified:

@tux0r the map is simple, you have the same layout, just internal or external, so there's only one square that is resized to fit the model ...

Callionica

@mfeilner @tux0r A call across a network and a call from one function to another in the same process don’t have the same level of complexity. Or just consider uptime monitoring and the visual complexity of a UI that has to show 12 pieces of information vs 1.

Markus Feilner :verified:

@callionica @tux0r Yeah but as size & scalability comes in, complexity becomes a beast... I totally agree that ms dont seem best for small tasks.

Callionica

@mfeilner @tux0r The OP was talking about small projects. But also there’s different ways of looking at scalability. For example, you can scale an app on a single machine to meet a workload of thousands of requests per second by writing efficient code within a single process and buying more RAM/disk/CPU whatever. Start going to out-of-process or cross-machine too early and you limit the capability of your dev org as they spend more time working on infrastructure and ops than feature code.

Callionica replied to Callionica

@mfeilner @tux0r If there’s no security boundary and there’s no resource contention and there’s no way your app can still run if one of your services goes down, these are indications that you don’t need to separate out your services. Plus when you do need to scale out, routing/sharding based on user or user group or geography works for a bunch of apps/services and is simple to implement.

tux0r :openbsd:

@mfeilner

You don't need to replace APIs if your server only needs to talk to itself. One server that performs 12 tasks is still less complex than 12 servers with one task each. "Readable code" and "low complexity" are not the same thing.

@tante @dragotin

tux0r :openbsd:

@mfeilner

"Config management" is not required if you don't have oversized environments. That said, overhead won't go away if you add more overhead to mask your overhead. ;-)

@tante @dragotin

tux0r :openbsd:

@mfeilner "Oversized" is what @tante described. ;-)

If you only need a website, you won't need a server farm. If you only have two servers, you won't need orchestration, "config management" ...

@dragotin

Markus Feilner :verified:

@tux0r @tante @dragotin
I guess that depends on the website, doesn't it? I dont need microservices for mine, because I hardly hit 20k visitors a month. Even LAMP can do that :-P

Markus Feilner :verified:

... but big portals might differ, am I wrong?

tux0r :openbsd:

@mfeilner Chances are that most people who don't run a tech company won't need microservices. @tante @dragotin

Christoph Petrausch

@mfeilner @tux0r @tante @dragotin with micro services, every service call is networked. You have to build mitigations for that. That's nothing your administrator or the underlying platform can safe you from.
Also your architecture/business must be eventually consistent. With every micro services having their own database you can't have one single classic SQL transaction.
I have written something here how to start your small setup and still be able to shift to cloud native inovex.de/de/blog/low-ops-clou

@mfeilner @tux0r @tante @dragotin with micro services, every service call is networked. You have to build mitigations for that. That's nothing your administrator or the underlying platform can safe you from.
Also your architecture/business must be eventually consistent. With every micro services having their own database you can't have one single classic SQL transaction.
I have written something here how to start your small setup and still be able to shift to cloud native inovex.de/de/blog/low-ops-clou

Christoph Petrausch

@mfeilner @tux0r @tante @dragotin From a developer perspective, with microservices calling each other or communicating via a message queue, you loose the ability to make a call and step through the code in your local debugger.

Go Up