3 ms·
Sooo... Can somebody explain to me the difference between microservices and Service Oriented Architecture?
by s_q_b 11y ago
Sooo... Can somebody explain to me the difference between microservices and Service Oriented Architecture?
- WestCoastJustin 11y agoI think of microservices as an implementation of SOA. Guess that is not that helpful, but it's almost like a battle tested guide on what the best way of implementing SOA is via trial and error. If you look at how startups are using microservices today, you will find almost a blueprint or common theme coming out. Use an API, embedded metrics in the microservice, how to do monitoring, tracing, use CI/CD, app+dependancy packaging, operations tools, etc.
- s_q_b 11y agoThanks for the info, very much appreciated. My job is basically to import best practices from good tech companies into an ancient silo'ed giant dev shop. Any idea where I should start for finding best practices with microservices? I've read the Oreilly book, but I'm not seeing any significant difference from how we run things. Is this eXP vs. Agile all over again, or do I need this?
- WestCoastJustin 11y agoIf you are not hitting one of the -- 1) slow rate of deployed changes, 2) app performance is sluggish, or 3) freedom to choose language<->problem issues, 4) poor resource utilization across a fleet of boxes, then I don't see the rush to change anything. In that one of these issues would need to justify the investment to make the switch. Normally people are looking for a solution to one of these really broken/festering issues and they see microservices as a solution. For example, maybe your code deploys are super slow due to developer contention and a competitor is going to kill you -- maybe it's worth a look. Or, maybe you are blowing 100k / month on cloud servers, that if only you could get better utilization, you could save all that money. You get the idea. Here are some pretty good war stories told by people in the trenches. Highly suggest watching these talks by TellApart [1] & Wunderlist [2]. Both talk about the pain points of why they moved to microservices. FYI - Youtube 2x speed is your friend ;) [1] https://www.youtube.com/watch?v=ZHABassUOlo https://www.youtube.com/watch?v=ZHABassUOlo [2] https://www.youtube.com/watch?v=RrX_28s70ww https://www.youtube.com/watch?v=RrX_28s70ww
- mseebach 11y agoFWIW, it seems early SOA placed a lot of emphasis on the bus and the middleware[1], with the problem being solved having more to do with enterprise governance[2], not one of software architecture. It seems to me, true scotsman and all, that modern micro services architecture has emerged from a first-order attempt to solve actual problems around both scaling vertically and collaborating on large systems in large organisations. 1: https://en.wikipedia.org/wiki/JBoss_Enterprise_SOA_Platform https://en.wikipedia.org/wiki/JBoss_Enterprise_SOA_Platform 2: "OMG how do we keep track of all the stuff running on all the servers? Multiple versions, multiple languages, multiple OSs? This sounds really scary, no, leaving it to the nerds is not an option, think of the BUS COUNT!" (caricature).
- WestCoastJustin 11y agoYeah, 100% agree with you.
- UK-AL 11y agoWe use NServiceBus, and Microservices for a lot of stuff and its really helped development. It handles retries(for network unreliability), transactions, and monitoring for us. Generally most of the issues of distributed systems.
- rdli 11y agoWe've spent a lot of time with a lot of different companies learning about microservices and SOA. There are a ton of definitions, but the one that we've settled on and is simple is that it's an architecture that supports distributed development of distributed systems. That's what's new (I wrote a blog post on this: https://datawire.io/what-are-microservices-a-practical-definition/ https://datawire.io/what-are-microservices-a-practical-defin...).
- jamestenglish 11y agoIn my opinion they are the same thing, unfortunately the term SOA has gotten a bit poisoned. SOA mostly refers to "Enterprise SOA" now and Enterprise SOA has skewed many of the decoupled principles of SOA. For example Enterprise SOA heavily focuses on middleware, of course all these middlewares are vender specific and create vender lock-in. Microservices mostly focus on just HTTP for their middleware. Another example of Enterprise SOA is using SOAP and most people configure their SOAP services to have very rigid contracts. So if you update your SOAP service schema to add a field, even if none of your consumers need that field they all need to update their consuming schemas which is very tightly coupled. Microservices should focus on consumer-driven contracts for services. Language evolves and I would say a lot of people now consider SOA to mean heavy middleware and SOAP with strong contracts creating the new term "microservices" help to differentiate.