Live data from Hacker News

Microservices Are Something You Grow Into, Not Begin With

nickjanetakis.com

51–60 of 159 posts

Re: Microservices Are Something You Grow Into, Not Begin With

#51

Interesting that the article mentions Shopify supporting over 600,000 users with a Rails monolith. At my day job, one of the justifications for us adopting microservices is that we want to horizontally scale. We have fewer than 8,000 users. Hubris, eh?

Don't forget, that's only the number of stores on Shopify, not the number of people accessing those stores.

Re: Microservices Are Something You Grow Into, Not Begin With

#52

Most of the time, I've found a push to microservices within an organization to be due to some combination of: 1) Business is pressuring tech teams to deliver faster, and they cannot, so they blame current system (derogatory name: monolith) and present microservices as solution. Note, this is the same tired argument from years ago when people would refer to legacy systems/legacy code as the reason for not being able t…

I don't believe it os reasonable to portray microservices as the result of incompetence and blame-shifting. Microservices are actually a very basic and fundamental principle of software engineering: separation of concerns. If your system is extensive enough so that it covers multiple independent concerns and your team is large and already organized into teams focused on each concerns then it makes technical and organ…

They're subject to a clear limit, though. The more micro you make your services, the less they resemble operational units and the more they resemble primitives from which your actual system is built, sort of like an inner-platform effect. And then you have to debug interactions between microservices, with all the overhead that entails.

Re: Microservices Are Something You Grow Into, Not Begin With

#53
post #33

I think you can selective. We started with ~5 services all built fairly ad-hoc, splitting on sensible boundaries with the goal of never having a "mega" service. This means it has been reasonably easy over time to fully replace them on an individual basis with more mature systems without changing the API design. Now we're 3 years in with ~40 services and the approach has served us very well. Definitely agree you shoul…

> Definitely agree you shouldn't start with a ton of services, but I think you should definitely start with more than one. The jump from monolith to service-oriented thinking is a huge one. I can't get my head around this. Why should you start with more than one? What is so different about "breaking your application into services" and "breaking your your application into appropriate modules / classes"? If those need…

What is different about breaking an application into services is that because services run as different processes: * you have an immediate natural failure domain (the process) as well as resource isolation between services, * services can be updated independently (something that is done many thousands of times every day at companies like Amazon or Google), * a corollary of independent updates is that services can be tested independently and new code can be "canaried" by initially deploying only a single instance of a service.

The statement that service orientation "... just replaces internal calls between services of your monolith with flaky and slower network calls" is correct in that network calls are flaky and slower but incorrect in its assessment that you gain nothing from using services.

Re: Microservices Are Something You Grow Into, Not Begin With

#54

Earlier quoted context omitted.

> Sounds like resume-driven-development. Sure. That's one of the responsibilities of a team lead: to help team members to work and gradually build up their CVs. I want my team to experiment new stuff and learn while working. But I also want to limit the risk boundary. The whole reason why younger people are leaving dinosaur companies is that no one in management layer lets juniors experiment and fail. End of the day…

Nah, your job is to lead the team in the most effective direction in order to fulfil business objectives, not build resumes.

NOPE. First and foremost, you work for yourself. Employers come and go. If you are sacrificing your resume to meet your employer's "business objectives", you could end up with a dead worthless skillset.

A balance has to be achieved. Obviously we can't sit around all day rewriting simple things in our pet language of the week...but employers need to understand that a good developer will not let their resume atrophy.

The days of the twenty-five year stint followed by a gold watch and a pension are over...you simply cannot put your employer's needs ahead of your own anymore.

Re: Microservices Are Something You Grow Into, Not Begin With

#55

The argument here is that microservices are another level of code reuse, with their own encapsulation. But microservices are also about coupling: just have a self-contained service that does one thing.

> But microservices are also about coupling: just have a self-contained service that does one thing.

What stops you from creating a module inside a monolith with an interface that provides a self-contained service that does one thing?

Re: Microservices Are Something You Grow Into, Not Begin With

#56

Why not? I mean we don't use micro-services for what it is supposed to do. The application would perfectly be a monolith. We do it, just because it lets us experiment newer technologies in not-so-important services in a smaller scale without undergoing major re-work since when the change is big, everyone in management layer understandably becomes conservative.

Sounds like resume-driven-development. I worked at a company with this disease before. The system was an abomination of vastly different technologies over the years stitched together loosely. Development was slowed substantially by having such a mess and the company couldn't move fast enough to compete so the startup died. Usually tech isn't the reason for a startup's death. In this case, it was.

> Sounds like resume-driven-development.

aka managing your own career. Don't wait for a company to do that for you, its not 1955 anymore.

Re: Microservices Are Something You Grow Into, Not Begin With

#57
post #17

There's trade-off's. They are using a fairly complex CI while with micro-services you release each service individually. It's hard to turn a monolith architecture into a architecture with micro-services. So it all depends on what works best for you. The idea with micro-services is that with a much smaller service - development is faster and cheaper, you can for example rewrite the entire service, use different softwa…

It's hard to turn a monolith architecture into a architecture with micro-services.

It’s only hard if your monolith wasn’t designed properly. In C# parlance...

1. From day one create your monolith with different domain specific projects where the functionality is exposed as an interface.

2. All consumers of each service use a dependency injection framework to map the interface to the service - not http service, in process domain service/module/namespace.

3. When you need to separate out a module to a separate service, it’s easy to split that specific module into a separate service by putting an http front end on it. If you integrate Swagger into your API, there are tools to automatically create proxy classes for your client.

4. Your proxy client can implement the same interface the interface from step 1. Just change your DI appropriately.

5. If you have modules that are shared between the monolith and new microservice, create a package and a private package repo.

Re: Microservices Are Something You Grow Into, Not Begin With

#58

Most of the time, I've found a push to microservices within an organization to be due to some combination of: 1) Business is pressuring tech teams to deliver faster, and they cannot, so they blame current system (derogatory name: monolith) and present microservices as solution. Note, this is the same tired argument from years ago when people would refer to legacy systems/legacy code as the reason for not being able t…

I don't believe it os reasonable to portray microservices as the result of incompetence and blame-shifting. Microservices are actually a very basic and fundamental principle of software engineering: separation of concerns. If your system is extensive enough so that it covers multiple independent concerns and your team is large and already organized into teams focused on each concerns then it makes technical and organ…

Isn't separation of concerns addressed by modularization? Of course using microservices is one kind modularization.

Re: Microservices Are Something You Grow Into, Not Begin With

#59

Most of the time, I've found a push to microservices within an organization to be due to some combination of: 1) Business is pressuring tech teams to deliver faster, and they cannot, so they blame current system (derogatory name: monolith) and present microservices as solution. Note, this is the same tired argument from years ago when people would refer to legacy systems/legacy code as the reason for not being able t…

Microservices are a cult, but SOA is Amazon's conerstone. Most services are the right size to fit a team (so, not micro) and implement separation of concerns.

Random link: https://www.zdnet.com/article/soa-done-right-the-amazon-stra...

Re: Microservices Are Something You Grow Into, Not Begin With

#60

There are many ways to slice an apple. Sometimes it is a good idea to build something as microservices, but you just have taken the wrong approach, and therefore it is a pain in the *. So slicing it a different way might still be a microservice architecture but feel much better. Recently I thought about setting up a Firefox Sync server. The first bumper was when I learnt that the sync server has a dependency on the a…

FWIW, as a developer on the Firefox Accounts team, I strongly endorse the sentiment of this article. We've occasionally found ourselves merging microservices back together because the abstraction boundaries we designed up-front weren't working out in practice...
Post reply on HN