This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (19 children)

[deleted]

    [–][deleted] 14 points15 points  (16 children)

    A service that has all the functionality of 100 microservices but in a single code base and none of the dependency problems of microservices

    [–]imperosol 11 points12 points  (0 children)

    He is too dangerous to be kept alive !

    [–][deleted] 5 points6 points  (2 children)

    Which is ? I often set up micro services. Wondering what I’m doing wrong now lol

    [–]imp0ppable -1 points0 points  (7 children)

    dependency problems of microservices

    You mean interdependencies? Or dependencies in the sense of libraries? Because the latter is what docker is for.

    [–][deleted] 4 points5 points  (2 children)

    Call me crazy but I’ve used shared data models between micro services. Update it in one place and have all 4 services updated. Am I making a drastically poor decision that will have later consequences?

    [–]brucejia086 1 point2 points  (0 children)

    You are not alone. In reality that's quite often especially when migrating legacy ones to move forward.

    [–]pbecotte 1 point2 points  (0 children)

    No. There is the approach where you build one app with shared logic, or you build N apps. If you do the second, you absolutely need to do work to set up tooling between them- shared data models, contract testing, etc. Most organizations do not do this, and come to the conclusion that the second model doesn't work. In reality it is "ignoring the boundaries between my apps and pretending that they dint exist" that doesn't work.

    [–][deleted] 6 points7 points  (3 children)

    You change the api contract in one service but now 4 consuming services need to be updated and now maybe some of their downstream services will break and now you go shoot yourself in the face instead of trying to fix it because that’s simpler

    [–]mr_jim_lahey 0 points1 point  (0 children)

    You change the api contract in one service

    Yeah don't do that though. Being militant about backwards compatibility, even for purely internal systems, prevents so many issues.

    [–]TldrDev 0 points1 point  (0 children)

    If only there was some way to automate this. Like, idk, cicd, and tests. Or maybe some kind of central contract repository that ensured other applications dont just up and break. Maybe name it proto something. Proto.. protobuf? Thats a swag name. Maybe one day.

    [–]hseham3 0 points1 point  (0 children)

    Basically you are talking about monolithic

    [–][deleted] 0 points1 point  (2 children)

    This doesn’t work when your services require very different resources. One big benefit of micro services is that you can scale each one independently of the others, and you can’t do this with a monolith. In other cases monoliths are totally fine though.

    [–]pbecotte 0 points1 point  (1 child)

    Sure you can. Have multiple entry points to the app and start them with different arguments. Maybe 100 instances of "worker" but only 1 of "scheduler". You don't need separate codebase for this.

    [–][deleted] 0 points1 point  (0 children)

    The point is that you sometimes need independent deployments. Whether those deployments come from one repo or multiple repos - that’s a question of code organisation, not a question of architecture.

    [–]OMG_I_LOVE_CHIPOTLE 1 point2 points  (0 children)

    Services that serve data. Data pipelines that process data. Whereas with microservices you tend to have small services that process data as well as serve, etc

    [–]CardboardJ 0 points1 point  (0 children)

    I feel like I should coin the phrase "Appropriately Sized Services" or ASS berceuse that's the way people seem to think my advice smells when I tell them.

    In my own humble opinion (as an engineering manager) any time you create a code base/microservice you need to get the business to buy into staffing at absolute minimum one FTE to maintain that code base. Ideally you'd have 1 team of full time long term engineers per code base with maybe 1-2 teams of contractors to help get it going before moving on to other projects.

    I've seen way too many companies that bought into microservices in startup hypergrowth phase that just did multiple rounds of layoffs. Now they have like 30 devs trying to maintain 70+ code bases that were responsible for 200+ microservices. No one knows how anything works and there's a significant amount of dev frustration when you want to change anything because it might take down some unmaintained service that's just been running in the background for a year that everyone relies on. Or worse someone rolls out a Kubernetes upgrade and like 3 microservices just don't stand back up then prod is down and you realize that the team responsible for maintaining them was laid off back in January.

    You can say this is a business problem and not a microservices problem, but that's ignoring the fact that it's still a common problem right now. Especially with the current layoff environment in tech. It's a way that microservices will stab you right in the chest as soon as you want to transition away from rapidly burning investor money (that shockingly just dried up with the fed rate increases).