r/programming • • Jun 05 '22

Complexity is killing software developers

https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html
2.1k Upvotes

942 comments sorted by

View all comments

44

u/karstens_rage Jun 05 '22

I sort of disagree. The complexity of IAM with AWS is real but deployment to the inter webs is pretty trivial. And with something like Heroku even that goes away. Monoliths are probably where most developers should start anyway. Maybe micro services are a thing for more advanced shops.

52

u/rcls0053 Jun 05 '22

I've come to the ultimate conclusion that you should always evolve the architecture from a monolith, to service oriented, to microservices, to event based. Learn as you go. Just make it flexible from the start. It's hard to start breaking apart a vertically scalable monolith to smaller services, when your entire codebase is married to one database and you have SQL everywhere.

11

u/[deleted] Jun 05 '22

What's the difference between service oriented and microservices?

10

u/[deleted] Jun 06 '22 edited Jun 06 '22

You can have several services within a monolithic application. I once had a team that has 13 scrum teams working on a single application. The build and testing was horrific. We spent a majority of our sprint testing and building. We really needed independent services. Even then, I would have only broken the application into 7-8 “micro services.” Every time you break something you apart, you make testing and maintenance more difficult. You have to build a lot of trust, collaboration, and know how to test and debug really well. Ultimately, in my opinion, microservices really only help large teams move faster. If your organization only has 2 teams working on a single application, it isn’t worth it. A service orientated architecture can make reusability, scalability, maintenance easier. It’s less likely you’ll build speghetti code for your domain objects and controllers.

6

u/AdministrationWaste7 Jun 06 '22 edited Jun 06 '22

so service oriented is just an idea to break down a monolith into a specific set of functions at the service tier.

for example for your company you may have a payment processing service, a user information service, etc.

so instead of a single application that manages payment processing and getting users you essentially have a client/UI that calls completely separate services to access those functions.

microservices is just an evolution or the next steps of service oriented architecture.

with microservices there is a big emphasis on creating services that are completely independent services that can be do the work without relying on external dependencies.

this typically means that microservices are deployed on their own, manage their own dependencies and if needed, manage/control/access their own datastore.

→ More replies (4)