Stop Creating Microservices | Prime Reacts

Sdílet
Vložit
  • čas přidán 24. 07. 2023
  • Recorded live on twitch, GET IN
    / theprimeagen
    Article: blogs.newardassociates.com/bl...
    MY MAIN YT CHANNEL: Has well edited engineering videos
    / theprimeagen
    Discord
    / discord
    Have something for me to read or react to?: / theprimeagenreact
  • Věda a technologie

Komentáře • 365

  • @dankprole7884
    @dankprole7884 Před 27 dny +9

    Personally i love it when my boss forces me to spend 5 days to develop something using microservices, when i could do it in 5 hours in Django, and the app only has 1,000 internal users.

  • @AzureFlash
    @AzureFlash Před rokem +732

    Stonehenge is a distributed monolith, everyone loves it. But I build a distributed monolith, I get fired. It's not fair.

    • @tallskinnygeek
      @tallskinnygeek Před rokem +94

      How well did yours scale vertically? That's an important feature of Stonehenge.

    • @JakeBerg777
      @JakeBerg777 Před rokem +1

      Hahahaha 😂

    • @Brunoenribeiro
      @Brunoenribeiro Před rokem +38

      And stonehenge requires zero maintenance

    • @FainTMako
      @FainTMako Před rokem +3

      Its definitely microservices tho lol.

    • @wolf2965
      @wolf2965 Před rokem +11

      @@Brunoenribeiro Must be why there are parts of it that have collapsed and haven't been fixed for quite some time.

  • @ayoubhr77
    @ayoubhr77 Před rokem +141

    Here is the problem Primeagen:
    > Netflix has a specific issue
    > Netflix comes with a solution for their issue
    > 0.25% of the world companies benefit from the solution the same way cause only a handful of companies in the world at a certain scale can face the issue.
    > blogposts and vlogs on youtube starting flying around about it cause INFLUENSOOOOOOOORS have to cREatE cONTent to live.
    > Mediocre companies adopt the Netflix solution pitching something resembling this at an abstract level: "hei boi, we use what netflix is using, come claim clout for your CV with us."
    > 99.75% of the companies worldwide adopt the same complex solution for their CRUD app cause they need to aTTrAcT tALenT
    > ?????
    > rekt

    • @torinireland6526
      @torinireland6526 Před 8 měsíci +5

      LOL

    • @r1konTheAutomator
      @r1konTheAutomator Před 2 měsíci +3

      That's weirdly accurate

    • @TheLamer5000
      @TheLamer5000 Před 2 měsíci

      Currently working on fixing another team's code where it goes through 4 or 5 different microservices just to... download a file from Azure Blob Storage. Sometimes it takes over 30 seconds just to download a 3KB file. Mind you the complexity and number of microservices are only one of several (dozen) issues with the code.

    • @cuzsleepisthecousinofdeath
      @cuzsleepisthecousinofdeath Před 2 měsíci +4

      @@r1konTheAutomator that's not accurate, that's *THE TRUTH*

    • @emjaytripleo
      @emjaytripleo Před měsícem +1

      Exactly and to solve the issues they bring in more complexity like CQRS, DDD and this thing is an absolute monstrosity which no one wants to touch with a 10nfoot pole

  • @sellicott
    @sellicott Před rokem +133

    Just remember, nothing is quite so permanent as a temporary solution.

    • @matterexplorer
      @matterexplorer Před 11 měsíci +1

      At the start of the project, just ask "what if we try a modular monolith for the first couple of weeks?" 🤫

    • @whimahwhe
      @whimahwhe Před 4 měsíci +1

      Just like government policies

    • @ScorpionCA
      @ScorpionCA Před 3 měsíci

      What about a temporary government program

    • @zo1dberg
      @zo1dberg Před 2 měsíci +1

      Didn't realise Milton Friedman was a software developer?

  • @ESPViper100
    @ESPViper100 Před rokem +179

    Holy shit, that time format rant turned from joke to a full blown PTSD episode real quick.

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Před rokem +69

      yeah... i am a programmer, it happens

    • @jeffwells641
      @jeffwells641 Před rokem +3

      It's funny, I've heard the same time format rant from a coworker of mine (I'm not really a programmer, I just like learning about it).

    • @DevDanIO
      @DevDanIO Před 11 měsíci +1

      I felt your pain

    • @dane2565
      @dane2565 Před 10 měsíci +1

      Hegelian dialectic

    • @TAP7a
      @TAP7a Před 7 měsíci +3

      Never talk to
      - a boomer about ‘nam
      - a New Yorker about 9/11
      - East & South East Asians about the Japanese
      - Developers about dates and times

  • @thegrumpydeveloper
    @thegrumpydeveloper Před rokem +196

    Every microservice adds on a layer of monitoring, alerting, logging, retry processes, synchronization, idempotency requirements, authorization, deployment, and dead letter queues to every “micro” service. Worth it sometimes but go in with eyes open.

    • @dandogamer
      @dandogamer Před rokem +31

      Microservices also demand tracing, without them good luck stitching multiple logs together to figure out how a request flowed through the system and where it went wrong

    • @MrEnsiferum77
      @MrEnsiferum77 Před rokem +2

      U can write code in dockerless languages like erlang...

    • @thegrumpydeveloper
      @thegrumpydeveloper Před rokem +8

      @@MrEnsiferum77 how does writing things without docker remove these requirements? Having the same wrapper around all this could help but I’ve yet to see any important production service that doesn’t need this. Have been burnt by trying to skip any of them.

    • @thegrumpydeveloper
      @thegrumpydeveloper Před rokem +2

      @@dandogamer unique transaction or trace id definitely needed good point.

    • @MrEnsiferum77
      @MrEnsiferum77 Před rokem +1

      @@thegrumpydeveloper simplifies the process of building distributed apps... those languages like erland have baked kind of 'vm' inside those running processes... u don't need k8s or similar crap...

  • @Gornius
    @Gornius Před rokem +308

    I've been thinking lately, that literally every approach is shitty, and there is no holy grail. Your role as an architect is to pick the least shitty option, not the best one.

    • @Action2me
      @Action2me Před rokem +20

      100%. Prime has said the same on his videos multiple times.

    • @parlor3115
      @parlor3115 Před rokem +27

      Yeah, writing software sucks. If it wasn't my only source of income, then I'd be happy if AI took over.

    • @dduncane
      @dduncane Před rokem +2

      I'm gonna add, to be more "precise", the less shitty option depending on the context you have at hands and what you're expected to provide.

    • @XDarkGreyX
      @XDarkGreyX Před rokem +7

      You gotta keep the median shittiness below a threshold

    • @chainingsolid
      @chainingsolid Před rokem +7

      I've wondered the same thing. That or people can't accept that a problem is X hard, and make it 2X hard believing the added complexity made it x/2 hard.

  • @konstantinatwork3105
    @konstantinatwork3105 Před rokem +14

    "There could have been an Amazon competitor back in the days that,
    instead of building a monolith and solving customers problems, they
    build a distributed system (a micro service architecture)...
    That might be the reason, you have never heard of them..."

  • @ANONAAAAAAAAA
    @ANONAAAAAAAAA Před rokem +204

    Breaking a system into distributed systems is arguably the best possible way to make it complex and hard to maintain.

    • @user-qr4jf4tv2x
      @user-qr4jf4tv2x Před rokem +8

      i like this sudden switch just like american politics

    • @markzuckerbread1865
      @markzuckerbread1865 Před rokem

      I turned my ass into a microservice so that I can replicate it when I need to take a big shit, I call it sharting

    • @user-ge2vc3rl1n
      @user-ge2vc3rl1n Před rokem +8

      @@user-qr4jf4tv2x its only sudden because it takes time to develop a good opinion on software design. people tried it and just realized that it wasn't what they were looking for

    • @parlor3115
      @parlor3115 Před rokem +15

      @@user-ge2vc3rl1n Tbf, it's only bad because it's overused and applied were it's not suitable because devs, architects and even managers get sold on the concept having heard about in seminars as opposed to it being a product of careful research and consideration. It's like the shiny new JS framework of software architecting.

    • @DragonRaider5
      @DragonRaider5 Před rokem +4

      Indeed, makes sense for very very big software projects - but that's like what, 0.01% of actual projects?

  • @TheMistr25
    @TheMistr25 Před rokem +16

    Thanks on reading all these articles and putting it on youtube. Your personal take stemming from experience, as a many times more experienced engineer than I am, is truly the value I am looking for in youtube tech content.

  • @datboi449
    @datboi449 Před 10 měsíci +12

    I read Sam Newman’s monolith to microservices. He actually recommends starting with monolith with logical services that could be broken out if it needs to independently scale.

    • @henryvaneyk3769
      @henryvaneyk3769 Před 9 měsíci +2

      I recently attended a workshop with Sam in Copenhagen about this, and it was great as he is a very engaging and funny bloke. It also confirmed that I was on the correct path with my own system. I started with a monolith (start-up company 15 years ago), and now are starting to identify parts to break out as microservices as the company has grown immensely.

    • @JP-hr3xq
      @JP-hr3xq Před 20 dny +1

      This is the common sense approach. Which is why it is disregarded.

  • @kasparsr
    @kasparsr Před rokem +71

    You need a microservice to get time

    • @ricardoamendoeira3800
      @ricardoamendoeira3800 Před rokem +19

      Will it support ISO timestamps? We're currently blocked on showing our users their birthday.

    • @kasparsr
      @kasparsr Před rokem +7

      @@ricardoamendoeira3800 talk to PO

    • @manualautomaton
      @manualautomaton Před rokem +6

      better off distributing an "offline microservice" aka a library

    • @manualautomaton
      @manualautomaton Před rokem +3

      also, this comment is funny. i've seen folks suggest this. smh. makes me question wth we're even doing in this industry.

    • @Landon_S2
      @Landon_S2 Před 4 měsíci

      ​@@ricardoamendoeira3800 We're blocked okay? We're blocked, you sad product manager

  • @archmad
    @archmad Před 4 měsíci +5

    In my team we have more microservices than developers and nobody outside our team uses it

  • @uome2k7
    @uome2k7 Před rokem +20

    Build modules until you need microservices, for scaling, then the modules can be jettisoned as a microservice with minimal changes in code as necessary.

    • @MikkoRantalainen
      @MikkoRantalainen Před měsícem +3

      And while you're running the code as modules, add artificial sleep(2ms) to every call to the module to be prepared for the extra latency you'll suffer when you convert that module to microservice.
      If you feel that your system is getting too slow, remove that artificial sleep call but understand that you cannot ever change that part as microservice either because the latency would be too bad.

  • @T1Oracle
    @T1Oracle Před rokem +8

    Scalability is a performance optimization. Premature optimization is usually a big mistake. Effective performance optimization starts with performance data. So if you are building out a microservice infrastructure for scalability and you don't have real world performance data, then you are doing a premature performance optimization.
    If you want to organize your code for development purposes, you should do so in a way that doesn't have significant performance implications.
    If you want scalability, you should start with real performance data and use that to inform your design decisions.

  • @korbendallasmultipass1524
    @korbendallasmultipass1524 Před 10 měsíci +5

    The whole industry is driven by trends. Everybody is doing it - so it cannot be wrong. This ends up in those waves of going into one direction and then in the other. We should focus us on the use case, take over the responsibility and find the best approach for our solution.

  • @Murihey
    @Murihey Před rokem +9

    The major part why I have found some form of "services" are valuable (how "micro" they should be is a question very specific to every particular project and company) is independent release cycle. If you have a modularized monolith, you still are tied into common release cycle, and it tends to be quite heavy, reducing your ability to release as often as you like.
    Dealing with release cycles if you're in the same process as 20-30 other teams often ends in a situation where your release cycle is "maybe we'll get something on prod in a week or so, depending on the volume of issues".
    Now, this assumes that you can release as often as you like. If you have external limitations to your release frequency (certifications, security/compliance audits, if you're tied to particular firmware patch releases etc.) that math changes a lot.

  • @kallekula84
    @kallekula84 Před rokem +3

    I love how the chat was gaslighting the shit out of you while trying to explain gaslighting hahahaha

    • @iatheman
      @iatheman Před 11 měsíci

      That was priceless. 🤣

  • @FredoCorleone
    @FredoCorleone Před rokem +17

    I've been working for quite some time in the banking industry and I remember a peculiar example of a project some colleagues of mine worked on: a big bank commissioned a multi-million dollars architecture based on microservices and events, at the end of a 3 years period of development they decided to throw away the whole thing and go back to a monolithic non-event architecture. Maybe it was just badly designed, but I think the problem is the very nature of event-driven stuff and I say that because I've worked on another big bank repository a couple of years ago with a similar kind of architecture and it was an event spaghetti and each request caused and untraceable amount of data retrievals and it was ugly to work on and difficult to maintain. Hundreds of people worked on that repository over a 20 years period and it was a huge pile of crap.

    • @MrEnsiferum77
      @MrEnsiferum77 Před rokem +2

      DDD, microservices not help u creating lousselly coupled software, DDD does... Without proper DDD u are ending having monolith microservices...

    • @FredoCorleone
      @FredoCorleone Před rokem +1

      @@MrEnsiferum77 actually the latter was domain-driven still sucked

    • @MrEnsiferum77
      @MrEnsiferum77 Před rokem

      @@FredoCorleone Not properly implemented...

    • @philsburydoboy
      @philsburydoboy Před 10 měsíci +7

      ​@@MrEnsiferum77 Just like communism, agile, and everything else that is great in theory!

    • @MrEnsiferum77
      @MrEnsiferum77 Před 10 měsíci

      @@philsburydoboy Agile is for liberal developers who think they building something valuable, but they rewrite the same crap apps on the web with new framework, while actually using waterfall

  • @emilemil1
    @emilemil1 Před 10 měsíci +19

    For us the biggest issue by far has been network latency. Even the most basic read operations take hundreds of milliseconds to complete due to having to fetch data (often sequentially) from different microservices. Also 90% of our alerts are now request timeouts between microservices.
    My stance today would be that microservices only make sense for fire-and-forget applications. Anything that needs to respond to a user request should be a monolith.

    • @MikkoRantalainen
      @MikkoRantalainen Před měsícem +1

      I mostly agree. Another option is to make every microservice to have hard deadline that results in good enough user experience. I would say that would be about 10 ms because you often need to combine multiple microservices for a single user visible response and the user experience starts to get worse when total response time goes above 100 ms.
      When you write a microservice with 10 ms deadline, you practically have to write it in systems programming language such as C, C++ or Rust. Do you have a team for it? Does that team agree that splitting everything into small microservices is the best way forward?
      If you use Java, Go or other managed language, every time the garbage collection runs stop the world step, all the requests for that microservice instantly fail their deadlines. So obviously you cannot use any of those languages without insane amount of hacks to avoid GC at all times.

  • @ChrisWrightGuitar
    @ChrisWrightGuitar Před rokem +10

    I asked ChatGPT about the fallacy and it said it was the "hasty generalisation" fallacy, which is also known as the "unrepresentative sample" fallacy. The wiki entry for it appears to be "Faulty_generalization".

  • @andrewallbright
    @andrewallbright Před rokem +9

    I think about how to modularize my app code often especially for my hobbyist projects as a game dev. Unity uses (a mangled) C# and I can achieve isolation by declaring assembly defs. However; I often discover I’m bad at setting boundaries. I get into circular dependency arguments with my compiler.
    It’s fun stuff to consider.

    • @dominikvonlavante6113
      @dominikvonlavante6113 Před měsícem

      Modularisation is HARD. I have nearly 20 years of experience, and it is still HARD for me.

  • @beachbum868
    @beachbum868 Před 10 měsíci +2

    I converted a micro-services system to monolith, it resolved about 90% of their issues. The company went on to being acquired for $500 mill

  • @Tony-dp1rl
    @Tony-dp1rl Před 11 měsíci +5

    Many years ago, I worked on a system that hot-swapped DLL libraries from disk gracefully when they were updated with new versions without restarting the application. Now I think about it, that was pretty damn close to micro-services - only faster due to being in memory communication, not via the network stack!

    • @kyjo72682
      @kyjo72682 Před měsícem

      Except microservices are exactly about the "via the network stack". The fact that you solved zero-downtime upgrades on a single machine is not very related to services that are independently scalable across many separate machines.

  • @TheOtherNEO
    @TheOtherNEO Před 11 měsíci +3

    Definitely think whether you go monolith of microservice depends on the project. Recently I was only in an ancillary capacity involved in a project where I strongly advocated for a microservice system.
    My major reasoning was that certain components in the project will have to be replaced in a one or two year horizon. My advice was to have an API to handle these system components with a clear plan to have it replaced with a newer system component when that replacement horizon arrives. But, having a well planned API will mean that the component can be replaced without impacting the rest of the architecture.
    Also, by having it this way, my argument was that I could scale the system between on-prem (no internet connectivity needed) to hybrid or cloud.

  • @rochaaraujo9320
    @rochaaraujo9320 Před rokem +33

    The biggest problem for me with microservices is the persistence/data layer, there are a lot of queues, a lot of streams, a lot of replication, a lot of inconsistent data and so on. Apart from a whole tooling structure that has to be built to sustain production. I don't, sometimes i just believe that a monolith well written, well modularized, works well well damn.

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Před rokem +10

      this

    • @manualautomaton
      @manualautomaton Před rokem +11

      sadly, microservices can also indicate a path around institutional bureaucracy.

    • @LeSchmoo2K
      @LeSchmoo2K Před 11 měsíci +1

      This is one of the emerging benefits of the wasm / wasi modal as that layer is owned by the host and independent to the business logic in the wasm.

    • @chazcheadle
      @chazcheadle Před 6 měsíci

      ⁠@@manualautomaton100% agree. The Sell is that smaller applications can be iterated on very quickly- the reality is that within a large ecosystem of services like this require the same amount of efforts more. It’s a poorly constructed confederate monolith.

  • @tekneinINC
    @tekneinINC Před rokem

    ~ 30:30 about the git submodules… I feel your pain 😂
    We have a Yocto build setup using submodules, and it sounded like a fantastic idea when I was reading up on it getting started, but in practice it’s definitely had some pain points…

  • @JavierBot
    @JavierBot Před rokem

    hey, sorry about the question, do you have somwhere the list of plugins you use for your Vim? (autocompletion and so on) thanks and great video!

  • @yzeerkd
    @yzeerkd Před rokem +4

    My hot take is that people want the flexibility to compose a system from smaller components, so they have a separate repo per component. It seems easier to make each component a service and compose those services to avoid cross-repo dependencies.
    Monorepos -- the /new/ (relative to microservices) buzzword for many of us non-googlers -- make composing components into a single service much easier, and as more orgs adopt them, people are less incentivized to ignore the downsides of making every component a service and therefore are presented with the decision to compose subsets of components into a service or a distributed system on a case by case basis.
    Don't write eventually consistent distributed monorepos

  • @paxdriver
    @paxdriver Před rokem +1

    I only just compiled ffmpeg from source for the first time last week. I felt so proud I went for a walk just to strut and smirk in public lol

  • @samuelvalentine7846
    @samuelvalentine7846 Před 11 měsíci

    Awesome video man, can you do a full video about your editor setup?

  • @danielvaughn4551
    @danielvaughn4551 Před rokem +1

    When he did the Seinfeld impression I CACKLED in the middle of a coffeeshop and got weird looks from strangers.

  • @jamesclark2663
    @jamesclark2663 Před rokem +1

    That isUTCDate function looks a lot like my function I used at work to determine if the material number for a pick order was provided as: an SAP material number, an *outdated* SAP material number that needed to be translated to the newest version (cause they were too dumb to use the versioning system in SAP) the document number that actually appears on blueprints, the customer document number, or some terribly formatted version of any of the above where periods were changed to underscores or someone forgot to change their excel files so they don't drop trailing zeros or just some made-up-ass number that didn't exist in any of our warehousing systems at all. Glad to know that despite the fact that I am very much an armature programmer I can hang with the best of them in the pro world ;)

  • @xDELTAGIx
    @xDELTAGIx Před rokem +2

    cargo workspaces for rust are a god send for this. Keep your data layer (module) as a agreed upon ORM or Raw SQL standard how to call your database. After that for each workspace member imports the shared domain. After that if you want scalability just docker container each set of routes. For example you have 3 workspace members for a twitter clone auth, status and timeline. Each one has the domain workspace and can just call what they need from the database. This allows for code reuse, scalability and low latency. There are somethings I suggest to clients to microservice out. Auth system are usually a good idea and even email/sms message relay servers. 9 times out of 10 thought I don't recommend it. I have found no reason for it, keeping teams in separate bubbles is just as easy as well. As long as you group each set of routes correctly you shouldn't have confusion on what team 'owns' which data. I do this by doing status_media or status_comment in the domain tables. If you need a change ask them to update the layer so their code still works or you can add a new function to the layer and send it over for approval.

  • @osyrisdc
    @osyrisdc Před rokem +6

    What about API Gateways to manage interactions between various versions? Conceptually this allows for multiple parallel versions to operate simultaneously and allow other service teams to iterate at their own pace.

    • @GackFinder
      @GackFinder Před 10 měsíci +1

      Which one of your teams manages the API Gateway?

  • @monad_tcp
    @monad_tcp Před 11 měsíci +1

    7:14 change management is always hard, that's one of the most hard things ever in software. software ate the world because it can change and adapt, but on the other hand, its also its biggest disadvantage, sometimes its too easy to change, then things break.

  • @user-qr4jf4tv2x
    @user-qr4jf4tv2x Před rokem +4

    the real solution here is have a hybrid mixing serverless, monolith ,microservices but not so separated that it takes 3-4 steps to explain something

    • @JakeBerg777
      @JakeBerg777 Před rokem

      This is the boat that I am in.

    • @JakeBerg777
      @JakeBerg777 Před rokem +1

      I’m just not sure if she’s sea worthy

  • @rlstine4982
    @rlstine4982 Před 4 měsíci

    "Who writes bad monoliths?"
    - John Carmack.

  • @familyshare3724
    @familyshare3724 Před měsícem

    The article thesis is defended and correct. One repo, one tested/compiled/coupled unit. Incompatible interfaces must fail to compile. Modules can be separately scaled and deployed as microservices, but maintained, verified, compiled, and tested together.

  • @heyyrudyy404
    @heyyrudyy404 Před rokem +1

    Unison language nailed this, by rebuilding a way to achieve dependency or module injection through ability or algebraic effect. All your needed implementation became libraries or modules. And the deployment process they are building in immaculate.

  • @dave4148
    @dave4148 Před rokem +2

    Enforcing module boundaries in a monolith is incredibly difficult imo.. so I do like some type of “microservice” structure to enforce them. But that doesn’t mean you need to separate things in such a way that you incur such huge dependency chains - you can still have big modules

  • @RNJudas
    @RNJudas Před 3 měsíci +1

    I present to you the monolith: POSTFIX if only it was modular and almost never broke.

  • @ankk98
    @ankk98 Před 7 měsíci +7

    A few weeks ago I spoke to a guy building a startup, building microservices for months. I told him that he should not be doing it this way.
    He wanted to keep code "modern".
    What he should actually be doing is to build the core functionality and ship the code fast. Writing a modular monolith is usually a better idea for startups.
    A big mistake they do is to think that they know the requirements.

    • @dominikvonlavante6113
      @dominikvonlavante6113 Před měsícem

      You should have a handful of independent modules/monoliths/Microservices and a dozen satellite Microservices that do highly specific and technical tasks. The general architecture should implement a "one-hop" architecture. Meaning that every user request must be finished with a single call to one backend service

  • @cabanford
    @cabanford Před 2 měsíci +1

    Date - Time is living hell on Earth

  • @ripplecutter233
    @ripplecutter233 Před rokem

    in. five years we'll be circling back to microservices again

  • @ToddWBucy-lf8yz
    @ToddWBucy-lf8yz Před 5 měsíci

    7:28 go to your LB and add a redirect, keep doing that until your LB dies or you loose your sanity.

  • @pastenml
    @pastenml Před rokem

    Chat: "Oh no, he remembered to disable alerts this time. Lets repeatedly try to break his concentration with highlighted questions completely unrelated to the post he's reading!"

  • @JobStoit
    @JobStoit Před rokem

    You know, there are micro services we all sort of agree upon, Like data storage on a database and files on something like s3/minio, payment systems (not sure if it can be considered "micro" and we often outsource it but still) maybe even that an identity provider should be a separate service as authentication can be a cause for security concern which you might just want up and ready as a service.

  • @steffennilsen2132
    @steffennilsen2132 Před 10 měsíci

    30:00 I tried git submodules exactly once in deployed code and ive been looking at it for the past 6 months thinking this was a mistake

  • @Nyxar-2077
    @Nyxar-2077 Před 2 měsíci

    5:36 bro's face is so symmetrical

  • @AHN1444
    @AHN1444 Před rokem +1

    I am remaking a real estate crm I have from 0. I think that I am only going to have the images on other serivice. The backend code and database is going to be on the same place I don't want the frontend to wait for the backend to wait for an external call to the service where the db is, no way.

  • @NeilHighley
    @NeilHighley Před měsícem

    In the film, Gaslight he was upstairs rooting around in a boarded up attic, using the gas lights upstairs which caused the lights downstairs to dim. When his wife brought this up, he convinced her that she was going mad. He also hid things and accused her of hiding them in the pursuit of getting her getting her locked up in an asylum and getting the house.

  • @MichaelAuerswald
    @MichaelAuerswald Před 11 měsíci +1

    "My tool should not exist in a year"... there's nothing more permanent than a temporary solution.

  • @MyGroo
    @MyGroo Před 11 měsíci +1

    Actchually, they are pretty hard to maintain if you are dropped into a new project. Deploying the app is actually deploying 50 different apps which can all fail separately.

  • @YTCrazytieguy
    @YTCrazytieguy Před rokem +11

    People hate large monoliths because they take forever to build, test, and deploy. Often if one person messes up, it blocks everyone. Modules offer a better authoring experience than microservices, but microservices have great CICD. I think the ideal setup is a monorepo with shared tooling+packages, and granular build/test/deploy.

  • @davidpoole409
    @davidpoole409 Před 4 měsíci

    Galactus knows all, you must not have kept him happy

  • @FuDaVan
    @FuDaVan Před 15 dny

    he always marks the text from the 2nd to the 3rd last character. in array terms from 1 to i-2, which bugs me for some reason.

  • @MarcLucksch
    @MarcLucksch Před 4 měsíci

    “Date is just a number” -prime

  • @klaudyw3
    @klaudyw3 Před rokem +1

    You know that image of Homer looking great, but all the fat flaps were tied up behind his back? That's UML for me.

  • @PasselivreEdicoes
    @PasselivreEdicoes Před rokem

    how does the UTC hack work

  • @terrencemoore8739
    @terrencemoore8739 Před rokem +6

    Go has been getting daily love and I'm here for it😂

  • @dls1191
    @dls1191 Před rokem

    The company I work at attempted using submodules...and later abandoned it for NPM modules approach

  • @SXsoft99
    @SXsoft99 Před rokem +2

    Me being ahead of the curve and writing my code modular for over 3 years

  • @frankhaugen
    @frankhaugen Před 4 měsíci

    As a dev and architect I will argue for distributed monolith or microservices as the best way, because the targeted scaling you can do is great

  • @manualautomaton
    @manualautomaton Před rokem

    9:39 linkerd is an excellent, open-source service mesh that gives observability and control across the entire call stack. it essentially runs an in-pod, transparent proxy for k8s service traffic.

    • @GackFinder
      @GackFinder Před 10 měsíci

      So in other words we just reinvented CORBA architecture, which has been around since 1991.

  • @BenRangel
    @BenRangel Před rokem

    I'm unsure of where to draw the line for when a product uses microservices.
    My perception has previously been that if my TEAM only has a single service - I am not developing any microservices. But articles argue that microservices is just when "each team can work on isolated parts of a system".
    I work for a frontend web team. We use many services developed as separate codebases by separate teams (content-API, auth, tracking, ads, payments, personalization, and a website-team) some would say we are using microservices since each team can work independently on their own codebase.
    However from the viewpoint of one dev who's only concerned with the work within my own team I sure don't feel like I'm working with microservices if I decide to add a brand new feature like a game into the same codebase and service that normally consists of a news website.

  • @kengu
    @kengu Před rokem +3

    I would argue that microservices is more about optimizing for development process speed (by promoting more losely coupled and high cohesion modules) at the cost of less optimal technology choices imposed by the distributed system that follow by it. Short Time to market is more important today than optimal technology choices. We trade off one upside for another downside here. And regardless of any current regime, nothing can replace strong engineering practices in the organization. Without it you will eventually end up with big ball of mud regardless of whichever architectural regime you follow. The return of the monolith will hence solve nothing on it self. It is just another technology choice. Strong engineering practices is key for any architecture to work and evolve over time in respons to changes in requirements.

  • @dontdoit6986
    @dontdoit6986 Před rokem +4

    For serverless your codebase functions like a monolith for the developer working on it, however the deployment chunks out your defined functions into individual microservices. In your regression test harness you can capture the behavior of each service post-deployment. IAC in a single system is the best of both worlds.

    • @MrEnsiferum77
      @MrEnsiferum77 Před rokem

      Serverless + microfrontends...

    • @dontdoit6986
      @dontdoit6986 Před rokem

      @@MrEnsiferum77 heck yes!

    • @HonestCode
      @HonestCode Před rokem

      Except you have to wait a million years for cold starts

    • @dontdoit6986
      @dontdoit6986 Před rokem +2

      @@HonestCode this should be taken into consideration when designing the data flows for various events. check the medium article “AWS Lambda battle 2021: performance comparison for all languages (cold and warm start)” for the coldstart comparisons for various runtimes. Ultimately, you probably want certain operations to be faster than others and so your prioritize your architecture to be “close to the data” when returning responses. Fan out what needs to be fanned out. It’s one paradigm, among many (such as cost optimization) that public cloud has to deal with. Most cloud apps are crud with minimal processing, anyway.

  • @sbsftw4232
    @sbsftw4232 Před 4 měsíci

    At my job the management has us just kicking the can down the road, with sufficient force to ensure it won't be our can anymore by the time we get back to it.

  • @mwwhited
    @mwwhited Před 5 měsíci

    What's funny is this is all possible with monolithic apps too. especially webserver monoliths. you only pay for processing.. and unused http end point on the same server costs you nothing additional. And it will have faster spin up time for the rare instance it is actually required.

  • @rexxman79
    @rexxman79 Před 10 měsíci

    I see few reasons for microservices: 1. Legal constraints. If you are working with an external software development company to integrate their software into your system. 2. if the service has already been developed because it is a common problem, such as authorization, reporting, user management, etc. - everything except business logic. You could even go so far as to title backup and monitoring as a "microservice".

  • @nskeip
    @nskeip Před rokem +2

    Probably not in Python or somethin that manages dependencies like Python :))
    At one of jobs, I saw how folks made modules with C# instead of microservices. I liked it. They had projects organized like multiple libraries (some of them were kinda old, even in older versions of the C#), they could manage every librarie's dependencies separately. Even have "libraryA 1.0" in one place and "libraryA 1.1" in another (I am NOT saying they did it for some purpose, I am just saying that that it caused no trouble at all).
    Correct me if I am wrong, but when I think about the same approach for Python - I think it will be a dependency hell, because when project becomes large, one module obligates all the other modules be in the same context and fit into dependencies.

  • @Yetisnowstop
    @Yetisnowstop Před rokem +4

    I’d subscribe to more insightful tech talk discussions. I understand the funny guy live takes but I’m genuinely interested in these topics but it’s hard to process the randomness and sidebars.

  • @JustinLyon
    @JustinLyon Před 6 měsíci

    Only because you mentioned obs, this is better than the obs overlay imo. White text overlaid on often other white text in the blogs being read is basically impossible to keep up with.

  • @amoliski
    @amoliski Před měsícem

    And today I learned about numeric separators in javascript- 2023_0000 - neat!

  • @gjermundification
    @gjermundification Před 10 měsíci

    1:19 `Scalability` appears to be the same as `uptime`?

  • @carmineingaldi47
    @carmineingaldi47 Před 11 měsíci

    Usually we associate the monolith with the concept of "big ball of mud" while microservices are tidy, tiny little cute (or at worst case, the are "small" balls of mud)
    One may wonder why it's not possible to achieve a tidy monolith, and in fact there is no theorethical limitation that prevents to fulfill this ambition....
    But try to work in a monolith and explain to some manager/stakeholder or even some engineer that "I can't just query that table straight away....IT'S OUTSIDE MY BOUNDARIES", while in a microservice architecture it's easy: "do you want me to add one week of work to set up a a new endpoint, a client a circuit breaker a subscriber and a projection? Well so don'ask me again to read data in someone else's table"

  • @NeoShameMan
    @NeoShameMan Před rokem +1

    Microservices isn't real they can't hurt you ❤
    Meanwhile microservices at work:

  • @MartinsTalbergs
    @MartinsTalbergs Před 11 měsíci

    gosh hitting up 100 services to deliver one request?! That's one fine technical debt! chop chop..
    10:22

  • @elerius2
    @elerius2 Před rokem +1

    I'm convinced microservices exist (partially) because JavaScript has no concept of "visibility" or access modifiers. One of the things microservices offer is a well-defined boundary between "modules", which is obviously useful for large projects, making up for a shortcoming of the language. What should be a very lightweight function call, becomes a very expensive remote/network call.

  • @AnuragDeshpande
    @AnuragDeshpande Před 8 měsíci

    Libraries are a good thing and have existed forever, and yes, adding dependencies to many projects where you need it, will serve the need. But next time you want to make a change to the library source code, you are now stuck updating 100 other projects that depend on it, or worse forget to update a project that depends on it. So instead of writing a service with code, you can just wrap the library with a lightweight server (netty, micronaut) and host the library on it instead. You get best of both worlds and only have 1 place to update the code and others will just fall into place as long as the serving API is still the same, ofcourse.

  • @JoaoPaletas
    @JoaoPaletas Před rokem

    One detail I also believe is often overlooked, microservices does not mean communicating over a network using HTTP, for latency critical a sidecar strategy using pipes could also be used if the code separation is worth the effort.

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Před rokem +1

      pipes are still significantly more expensive than a call to a function

  • @paxdriver
    @paxdriver Před rokem

    The saying you're thinking of is something like "creating the disease to match the cure", I think.
    "We discivered a cure for the disease we created, " or something?

  • @ian3084
    @ian3084 Před rokem +1

    when MS were in vogue, I attended an MS focus conference. Even the people that presented MS solutions you could feel they knew they were selling horsesh&t with all the hacks you had to do just to make simple things work. Do people really still think this is a good idea?

  • @DavidSchoutens
    @DavidSchoutens Před 11 měsíci

    27:52 Just here to clarify that n orders of magnitude is 10^n , so "five to seven orders of magnitude" is 100000x - 10000000x, not merely 10x (which is ONE order of magnitude)

  • @Sindoku
    @Sindoku Před 7 měsíci

    It sounds like NetFlix had a time assignment problem then, and need a standard library for each language used that is then used by all devs so time stamps are consistent. I guess there would need to be a company wide developer update in it, but it would be worth it long run.

  • @Coffeemancer
    @Coffeemancer Před rokem +1

    Touching Some Fuking Grass Dude

  • @BrianTakita
    @BrianTakita Před 5 měsíci

    I work with hundreds of git submodules. You have to write automation scripts to make it manageable. When sharing libraries across projects, it's faster to develop with submodules than republishing npm packages, so they have a place.

  • @MikkoRantalainen
    @MikkoRantalainen Před měsícem

    Microserves would be a great solution to many problems if communication wasn't limited by the speed of light and physical interconnects. When you physically separate all the computation, you are forcing processing to happen in serialized form and overall latency for a given request gets worse.

  • @vainamietzsche
    @vainamietzsche Před 11 měsíci

    It's called the "Nutpicking fallacy"

  • @Wielorybkek
    @Wielorybkek Před rokem +2

    I suppose the modular monolith is becoming the "new trendy thing".

    • @MrEnsiferum77
      @MrEnsiferum77 Před rokem

      what is that crap name... that's the whole purpose of DDD... with DDD u can have modular monolith for ages, before migrating to microservices... i'm sick and tired on stupid new trends...

    • @Wielorybkek
      @Wielorybkek Před rokem

      you can call DDD a "stupid new trend" as well

    • @Massenhaft1
      @Massenhaft1 Před rokem

      Very new trend from 2003... Fresh ;).

  • @matteac_rs
    @matteac_rs Před rokem

    20:44 I have some traumas with that word

  • @Chad-xh8zs
    @Chad-xh8zs Před 6 měsíci

    Code and it’s consequences have been a disaster for the human race.

  • @mwwhited
    @mwwhited Před 5 měsíci

    I enjoy the arguments about all these companies switching to microservices, kafka, and mongo as magic on improving their applications... when it was actually the fact they took 10+ years of lessons learned to just rewrite the application. Switching stacks and patterns was an excuse. They would have had just as good performance improvements had they taken the same stack they were already on and used lessons learned to get rid of all the old garbage.

  • @ANONAAAAAAAAA
    @ANONAAAAAAAAA Před rokem +1

    I think the following is more reasonable than Micoservices even for larger corps:
    1. one team, one module
    2. a team can own dedicated datastorage if they have to deal with write heavy traffics.
    More specifically, imagine we are building CZcams.
    There would be 'chat team' who's developing backend system for chat.
    It's a very bad idea to let them use RDB for developing chat functionality since RDBs are not scalable for write heavy tasks.
    Instead, they should use scalable NoSQL or NewSQL like DynamoDB or CloudSpanner to store chat data.
    Using their own datastorage doesn't mean they have to own dedicated codebase (repository) or application server.
    They can just develop a module or client library or API endpoints which utilize the datastorage while sharing codes and application servers with other teams.

    • @yzeerkd
      @yzeerkd Před rokem +2

      > Isolated data storage + server sharing
      I like that this is the opposite of what many "microservices" implementations end up being, where several services share the same database

  • @exe2543
    @exe2543 Před 10 měsíci

    "The key is to establish that common architectural backplane with well-understood integration and communication conventions, whatever you want or need it to be" -> *Solid foundation for the tech*
    "The key is to give the team the direction and goal, the autonomy to accomplish it, and the clarion call to get it done" -> *Solid foundation for the people*

  • @bobbycrosby9765
    @bobbycrosby9765 Před rokem

    Strawman, but also, people are looking for a silver bullet. If there's a problem with something it's obviously not a silver bullet, so time to use something else.

  • @toxicitysocks
    @toxicitysocks Před 9 měsíci

    Best advantage of microservices is the ability to deploy changes without relying on another team and also not needing to work in whatever service language + frameworks another team chose.

  • @georgehelyar
    @georgehelyar Před 11 měsíci

    Really it just comes down to how easily you can make changes.
    A real monolith is simple, but can be difficult to deploy when lots of people are working on it and they don't always guarantee that it's in a deployable state, and that can lead to long lived feature branches, painful merges, slow release cycles, etc.
    Microservices solve an organisational problem, not a technical problem. They allow pieces of the software to be deployed quickly and independently, and allow teams to focus on their own areas without having to be an expert in the entire system, but that comes at the cost of many network calls that may fail. You accept that complexity in order to scale the number of people that can work on the system.
    A distributed monolith with shared modules is the worst of both worlds. You make a change in a module and then have to deploy multiple services that use it.

  • @AntonioBarba_TheKaneB

    that is the wrong definition of scalability, lol :D 0:50