The real reason most companies use microservices

Ғылым және технология

Microservices are the dominant model for modern web services and their architecture. It feels like we teach microservices backwards -- the real motivation (and value) is often not mentioned, or mentioned as a footnote to many lesser advantages.
0:00 Intro
1:40 The way this is taught to new engineers is kind of silly.
1:55 microservices are complex: why do people use them?
2:40 official benefits of microservices
2:55 Modularity
4:03 Scalability
5:01 Integration of heterogeneous/legacy systems
5:22 Distributed development
6:55 Tech LARPing and Cargo Cults
8:35 What are your experiences with microservices?
Step-by-step project-based Linux course for beginners: www.udemy.com/course/hands-on...
Free Linux Sysadmin Course Playlist: • The Linux Basics Cours...
DigitalOcean referral link: m.do.co/c/0380a1db56a6
Patreon: / tutorialinux
Official Site & e-mail list: tutorialinux.com/
Twitter: / tutorialinux
Facebook: / tutorialinux
Podcast: kernelpanicpodcast.com

Пікірлер: 71

  • @tutoriaLinux
    @tutoriaLinux3 жыл бұрын

    Sorry about the clicking sound -- my microphone died and it's picking up the sound of the camera autofocusing :(. *shame* *sadness* *etc* I'll spend this week re-recording the other videos I made on this same day.

  • @stevenroman3564

    @stevenroman3564

    2 жыл бұрын

    i know Im asking randomly but does anybody know of a tool to get back into an Instagram account..? I was dumb lost my login password. I would appreciate any tips you can offer me.

  • @randallbilly1122

    @randallbilly1122

    2 жыл бұрын

    @Steven Roman instablaster ;)

  • @stevenroman3564

    @stevenroman3564

    2 жыл бұрын

    @Randall Billy I really appreciate your reply. I found the site on google and im in the hacking process now. Takes a while so I will get back to you later when my account password hopefully is recovered.

  • @stevenroman3564

    @stevenroman3564

    2 жыл бұрын

    @Randall Billy it did the trick and I finally got access to my account again. I'm so happy! Thank you so much, you saved my account!

  • @randallbilly1122

    @randallbilly1122

    2 жыл бұрын

    @Steven Roman Glad I could help :)

  • @anbu_r
    @anbu_r3 жыл бұрын

    I work in a large corporate environment. In my experience, most newly minted "architects" sell the idea of microservices. The reason most often given is that it would solve the current performance problems with the monolith. Often the problems with the existing monolith is its poor design, a well engineered monolith could solve the problem. But, selling the idea of replacing one monolith with another, despite the newer being a better engineered one is hard. But selling microservices is easy, because you know - it works at Google and Amazon.

  • @randomthoughtstech
    @randomthoughtstech3 жыл бұрын

    Agreed and I hope that's a HashiCorp sweatsuit

  • @tutoriaLinux

    @tutoriaLinux

    3 жыл бұрын

    Haha I wish, top only, shorts and flip flips on the bottom.

  • @randomthoughtstech

    @randomthoughtstech

    3 жыл бұрын

    @@tutoriaLinux speedsuit* :-p

  • @darktoster
    @darktoster3 жыл бұрын

    team lead of a 4 person team in an area with 16 devs working on the same product. We used to, and occasionally still do, run into problems where multiple people deploy the same service in the same sprint and have to work together. But the more we've broken off into microservices the less we face this. But the more we've had to face a mess of retries, failovers, and system maps requiring additional tech like distributed trace. You also end up with a ton of services that have no performance issues and a few leaf nodes that still need heavy optimization and back up the system with retries, db load affecting other services, etc.

  • @ruiztulio
    @ruiztulio3 жыл бұрын

    I think there are 2 main problems with microservice architecture: 1. The "silver bullet" way of thinking about it: if we do MS all of our problems will be solved, scalability, etc.... 2. "Let's make a MS for everything" so people end with 100's of MS and everything is a chaos There is no such thing as silver bullet and making everything a "micro", I'm more inclined to use "domain driven development", so instead of a "micro" just write a service. We can end with 5 or 6 services and is a reasonable amount, it can still be scalled, have separated teams for the services and is not as hard to deploy as 100's of micros...also what works for one company does not work for others...just my 2 cents

  • @eugenetapang
    @eugenetapang3 жыл бұрын

    You had me at "Tech LARPing". :>

  • @richardmaduka4747
    @richardmaduka47473 жыл бұрын

    Microservices might be expensive from a devops/SRE perspective, but I think the pros outweigh the cons from a software architecture POV. It is better to build your applications to scale easily rather than having to rebuild everything when your user base becomes large. Most businesses want to grow their customer/user base, why would they not prepare to scale up? Implementing microservices is like laying a good foundation for the future.

  • @darkpill

    @darkpill

    3 жыл бұрын

    Everything you’ve stated is categorically wrong.

  • @richardmaduka4747

    @richardmaduka4747

    3 жыл бұрын

    @@darkpill you’re welcome to present a counter-argument

  • @darkpill

    @darkpill

    3 жыл бұрын

    You have not even made an argument for me to counter? How are micro services a “good foundation”? What if you have to lay off 1/2 your staff, how are you now supposed to manage the mess of micro services you have?

  • @richardmaduka4747

    @richardmaduka4747

    3 жыл бұрын

    @@darkpill just because it’s microservices does not mean that each microservice is built by a separate team. Microservices allow multiple teams to work somewhat independently, but it’s possible for one team/individual to create all the microservices. Microservices is not a management style, it’s application architecture. The good foundation is the ability to scale without needing to be rebuilt later on.

  • @darkpill

    @darkpill

    3 жыл бұрын

    @@richardmaduka4747 Of course it will need to be rebuilt when requirements change or you your platform pivots.

  • @BerndGoetz
    @BerndGoetz3 жыл бұрын

    Well put! Thanks for sharing your thoughts about it. What's bugging me most currently is the large amount of "stuff" that has to be done around the core business logic within a single microservice - repository, documentation, glue/"ceremony" code, e.g. for upstream service calls, logging/monitoring, the security setup, build and deployment pipelines, quality report execution, and so on. I.e. redundant stuff that increases maintenance costs. We can escape this but only by investing into the creation of shareable, standardized components reused by all our microservices, e.g. in the form of Spring Boot starters. I'll try to push this as much as possible in my context. Pressure is high in creating ever smaller components in our application architectures. It will be the art of finding the right balance between too microservices and moduliths that are simple enough to be effective in maintaining and extending them.

  • @adammontgomery7980
    @adammontgomery79803 жыл бұрын

    I've been wondering about this from a non-developer perspective. The way I see it, you're siloing APIs which you would also do in a monolith. One benefit I see, that you didn't mention, is dependency management.

  • @j.j.9538

    @j.j.9538

    2 жыл бұрын

    I don't think so. There's interdependence between microservicesand interdependencies in the way they communicate. In order to make changes, there's a lot of bureaucracy. to the point that people just try to hack it in some ways.

  • @Colony28
    @Colony283 жыл бұрын

    In addition to having the ability to distribute work on codebases, you can have codebases in different languages / versions / dependency library versions. Even though your programming language is likely Turing complete, that doesn't mean it is the right tool for the job. SImple webserver might be quicker in Python vs. Kafka consumer might work better in Java. Also, I don't think you need to scale to massive proportions in order to benefit from scaling abilites. Compute intensive batch jobs running for an hour every day don't require for the expensive infra to be paid the other 23 hours sitting and doing nothing.

  • @dankierson
    @dankierson5 күн бұрын

    Good to hear someone talk common sense on some of these behemoth developed techs once in a while. A lot of us are working on small sites and apps that will never need things like Kubernetes or even Docker. Imagine if some guy who struck gold making $500 sites went around preaching about his custom tech called *Matchbox* or something. It might be handy for small guys like himself who scratch out a living from local stores. But it's gonna be found out at the medium sized company level. And the big boys will use the tech name as an insult. "Keep away from those guys - they're just Matchboxers!" 😂

  • @ianhamilton350
    @ianhamilton3502 жыл бұрын

    If parallel development is the only real benefit for you, you could save yourself the networking overhead by having the services communicate through IPC. That way you would just treat it as a monolith from a networking/scaling perspective but develop it as a microservice architecture.

  • @RIAJULISLAMI
    @RIAJULISLAMI2 жыл бұрын

    Distributed development can also be done using Monolith architecture with some workaround, I've implemented already in Backend & Android Projects. I've split my monolith Backend repository into multiple repositories each repository is independent and development can be done by a different person/team without giving access to other features/repositories, using a feature of git called git-submodule and when final deployment comes we use all repositories combined at build-time and produce a full-fledged Application. This is awesome, I've implemented this architecture in Android & Laravel projects. Our main goal was to hire resources part-time to develop some features or modules and we didn't want to share our existing codebases with those part-time workers. Thanks.

  • @tutoriaLinux

    @tutoriaLinux

    2 жыл бұрын

    Thanks, I appreciate that perspective. It makes sense as a solution to the privacy problem you described!

  • @vikingthedude
    @vikingthedudeАй бұрын

    Point 4 is OP

  • @jhippl
    @jhippl3 жыл бұрын

    for production stuff i hate it but for dev its almost the only way. i will use docker for smaller things like unifi controller or iperf.

  • @Bare_Essence
    @Bare_Essence3 жыл бұрын

    The problem is somewhat resolved since every design service states "simplify". The minimum data for the user. Don't do to much. This then reflects in the GUI and application in that it does the bare minimum. This means we now have loads of s4it applications that are "easier" to scale and distribute. Yeah! And still they fail all the time. Oh well. We are where we are; tilting at windmills. Thanks for sharing!

  • @antonparas4782
    @antonparas47823 жыл бұрын

    I like the typing sound asmr, but why is it there haha

  • @ShainAndrews

    @ShainAndrews

    3 жыл бұрын

    We can see both his hands most of the time... skills?

  • @tutoriaLinux

    @tutoriaLinux

    3 жыл бұрын

    I'll do ANYTHING to get more subscribers #linux #asmr #programmingoutloud #mouthsounds

  • @antonparas4782

    @antonparas4782

    3 жыл бұрын

    @@tutoriaLinux linux asmr, you could be the first!

  • @alexandarsoc
    @alexandarsoc3 жыл бұрын

    I totally agree bro...

  • @alexandarsoc

    @alexandarsoc

    3 жыл бұрын

    Even though my company is using microservices at lowes possible scale they are pain in the...

  • @catraaaw
    @catraaaw3 жыл бұрын

    > Ross's Game Dungeon My man!

  • @darkpill
    @darkpill3 жыл бұрын

    If your using micro services to make better use of the developers you’ve hired, then you’ve hired too many developers.

  • @lextr3110

    @lextr3110

    2 жыл бұрын

    these days they hire 2 architect, one team lead, one tech lead, one project manager, devops, 2 backend coder and 1 full stack coder that do all the actual work until they fire him because hr have problem with their crappy micro-architecture... they are so proud of their overly-architectured CRUD microcrap.. they dont even see that normal backend coding is actually nothing complex and just crud op, optimized queries and sometimes caching..

  • @sporkybutterz
    @sporkybutterz3 жыл бұрын

    At what point does the containerized mindset going to tip into utter complexity? A rats nest of trying to decipher...a wonderful thing of beauty for hackers

  • @AnyFactor
    @AnyFactor3 жыл бұрын

    I don’t even virtual environments :(

  • @abrahamsteinberg8374
    @abrahamsteinberg83743 жыл бұрын

    And why they need it?

  • @adiero
    @adiero3 жыл бұрын

    Where once we spaghetti, we now have webghetti. le plus ca change...

  • @abeard1
    @abeard13 жыл бұрын

    Do we have anything better in bigger scale than microservices? Any alternative ?

  • @darkpill

    @darkpill

    3 жыл бұрын

    Don’t write shitty code? I know. Crazy!

  • @FrankLloydTeh

    @FrankLloydTeh

    3 жыл бұрын

    StackOverflow is a monolith that works because the devs are obsessed with making high performing code.

  • @darkpill

    @darkpill

    3 жыл бұрын

    @@FrankLloydTeh Shopify, one of the worlds biggest e-commerce sites is also a monolith.

  • @BerndGoetz

    @BerndGoetz

    3 жыл бұрын

    Maybe github.com/odrotbohm/moduliths... I'm currently building microservices based architectures, but I'm also more reluctant than others to split up functionality too early, as I fully buy into the YAGNI principle here, as mentioned by Frank. I was playing with the idea to try the modulith approach, but haven't been able to do so yet. One reason I'm reluctant is that a modulith takes more discipline to keep the architecture clean than a more enforced separation with multiple microservices. It boils down to scaling the organization, as described in en.wikipedia.org/wiki/Conway%27s_law

  • @RichardBronosky
    @RichardBronosky3 жыл бұрын

    I’ve seen microservices done extremely well and realized great benefits. I’ve also seen them done poorly. Microservices are not a cure for poor architecture and poor leadership. As a DevOps leader, I don’t ever want to go back.

  • @FrankLloydTeh

    @FrankLloydTeh

    3 жыл бұрын

    It does not matter if microservices are done well if it is not needed. Like he said. 99% of the time the companies that do microservices, do not actually have the number of users to justify its use.

  • @RichardBronosky

    @RichardBronosky

    3 жыл бұрын

    @@FrankLloydTeh my Unix has only one user. But the Unix philosophy of making small utilities that do one thing very well and share a universal interface is not wasted. That’s what microservices are.

  • @PauloSilva-yp6pl
    @PauloSilva-yp6pl3 жыл бұрын

    Hi

  • @user-hj8rn5wp8z
    @user-hj8rn5wp8z3 жыл бұрын

    YES!!! Mine 10 year expirience of web+enterprice development support this. `docker-stack` suck. Every `fork` of this stack, espessiall `kube-stack` suck as well. But if implementation suck, idea still is really good. IT should start using erlang for 20 years ago. Then we would have had rigth implementation of microservices.

  • @user-hj8rn5wp8z

    @user-hj8rn5wp8z

    3 жыл бұрын

    sorry for bad English this video made me subscribe to channel

  • @John_Smith__
    @John_Smith__3 жыл бұрын

    i don even know how no one has made a video this before. it's Obvious that modularizing and distributing an application has a very Limited and Specific Context to be made Efficient. It is only Justified indeed Only in a very Particular Application context. That is very Large applications with Multiple Interfaces to Several, let's call them, "interactions". That is very large systems that interact with a very big number of Different platforms and services. Other then that forget it ... it's a complete Waste of resources, scalability and efficiency.

  • @Flankymanga
    @Flankymanga3 жыл бұрын

    What would be the golden rule to decide if we should split a monolith into microservices or not?

  • @stevencoto834

    @stevencoto834

    3 жыл бұрын

    curious too

  • @10e999
    @10e9993 жыл бұрын

    I don't want to be too cynical, but I would not be surprised if developer replaceability plays a big role in the decision of using microservices. Just my 2 cents.

  • @cristianpallares7565

    @cristianpallares7565

    3 жыл бұрын

    Well, I'd still prefer to work on a simple codebase than a huge crazy monolith, even if I finish my job sooner.

  • @j.j.9538
    @j.j.95382 жыл бұрын

    I feel like under the hood, the promise with microservice was that developers would not break the codebase, because it was separated. They thought that if they divided the application up, they wouldn't need to worry about spaghetti code and everything would be faster. I feel like this was the original ideia, but... i don't think it solved the problem. it just made it worse. Soon enough we'll have a spaghettis of microservices. Just wait and see.

  • @Chavez3d
    @Chavez3d2 жыл бұрын

    lol "header aw gin us"

  • @alexmathews6387
    @alexmathews63873 жыл бұрын

    Who is typing like a maniac in the background 😂😂😂😂😂

  • @kingjamoose
    @kingjamoose3 жыл бұрын

    Everyone keeps asking how we plan on containerizing these elements, and I am like... bro, they run on a few scripts at boot time. Please stop hearing buzz words and forcing silly changes that help nothing.

  • @adrianteri
    @adrianteri3 жыл бұрын

    1 repo becomes 5,6,7....n

  • @RockTheCage55
    @RockTheCage55 Жыл бұрын

    All i can tell you at this point is i HATE microservices. What ends up happening is you call them "micro" and they aren't. They are megaservices. We have a system with very complex interactions that one user interaction can cause a cascade of changes to happen. Things can and will fail and if they fail you have "weird" things happen that can't be explained. Because you have a bunch of diseperate services you lose the security blanket of a transaction (unless you want to deal with the mess that is distributed transactions). Your users are breathing down your neck with scenarios that happened & want to know "how could this happen" & won't take "can't repro" as an excuse so you end up happen to come up with well if we had a timeout here (& at the same time trying to correlate error logs) and if this happened at the same time. IMO micro services should be TINY and should be bounded to a "bounded context". If you see a bunch of interaction for your microservices to other microservices your doing it wrong.

  • @tutoriaLinux

    @tutoriaLinux

    Жыл бұрын

    Yeah, doing microservices right is really tough. Operationalizing them -- instrumenting them, securing them, monitoring them, and troubleshooting them -- is even harder. Good design is hard. I agree that monoliths work better for what most companies (not the world's largest companies, but most companies) are doing.

  • @UGPepe
    @UGPepe2 жыл бұрын

    ... and the reason behind what you said is that programmers today are far less skilled compared to programmers even 20 years ago, due to massive commodification of the profession in recent years

Келесі