Razorpay's Journey to Microservices w/ Arjun | Ep 1

Поділитися
Вставка
  • Опубліковано 23 лип 2024
  • System Design for SDE-2 and above: arpitbhayani.me/masterclass
    System Design for Beginners: arpitbhayani.me/sys-design
    Redis Internals: arpitbhayani.me/redis
    Build Your Own Redis / DNS / BitTorrent / SQLite - with CodeCrafters.
    Sign up and get 40% off - app.codecrafters.io/join?via=...
    In the video, I discussed the challenges of maintaining data consistency in microservices, focusing on the payment system at Razorpay. Initially, they used a monolithic architecture with MySQL for strong data consistency. However, as traffic grew, they transitioned to microservices to handle the load. They faced issues with database connection limits and decided to split core entities like payments, orders, and ledger into separate microservices. The transition was gradual, involving dual writes to ensure data consistency before fully transitioning traffic.
    Recommended videos and playlists
    If you liked this video, you will find the following videos and playlists helpful
    System Design: • PostgreSQL connection ...
    Designing Microservices: • Advantages of adopting...
    Database Engineering: • How nested loop, hash,...
    Concurrency In-depth: • How to write efficient...
    Research paper dissections: • The Google File System...
    Outage Dissections: • Dissecting GitHub Outa...
    Hash Table Internals: • Internal Structure of ...
    Bittorrent Internals: • Introduction to BitTor...
    Things you will find amusing
    Knowledge Base: arpitbhayani.me/knowledge-base
    Bookshelf: arpitbhayani.me/bookshelf
    Papershelf: arpitbhayani.me/papershelf
    Other socials
    I keep writing and sharing my practical experience and learnings every day, so if you resonate then follow along. I keep it no fluff.
    LinkedIn: / arpitbhayani
    Twitter: / arpit_bhayani
    Weekly Newsletter: arpit.substack.com
    Thank you for watching and supporting! it means a ton.
    I am on a mission to bring out the best engineering stories from around the world and make you all fall in
    love with engineering. If you resonate with this then follow along, I always keep it no-fluff.
  • Наука та технологія

КОМЕНТАРІ • 161

  • @pradiptagure7492
    @pradiptagure7492 Рік тому +55

    You should continue this podcast series. Out of all the podcasts or technical tutorials, there is no one in this niche. Students or experienced professionals will learn a lot from this. Kudos to you.

  • @marcusaureliusfanboy
    @marcusaureliusfanboy Рік тому +33

    *timestamps:*
    0:00 Introduction
    2:48 Initial architecture/techstack of RazorPay
    4:30 ensuring strong consistency on monolithic architecture
    9:06 check constraints
    10:47 deciding to move from monolith to microservices
    15:23 splitting of databases/application logic when moving to microservices
    18:25 dual writing of data into monolith as well as microservice dbs(during transition phase), transaction outbox pattern
    21:19 databases in current microservice architecture
    22:45 deciding on SQL vs NOSQL
    25:10 ensuring consistency in microservice architecture
    28:10 payment flow with eventual consistency
    34:40 prioritization for settlements@T+0
    37:20 chaos testing
    39:00 integration tests on interface between 2 services
    41:00 incidents when things went wrong
    47:40 outro

  • @kunalsharma1621
    @kunalsharma1621 Рік тому +21

    The way you progress the communication through passively narrating and curiously listening made this podcast different from other existing system design podcasts.

  • @arnabsen1729
    @arnabsen1729 Рік тому +2

    Such a technical dense podcast, rare to find such podcasts, nothing less than a technical conference talk. Great job Arpit !!

  • @mayankbinayake8975
    @mayankbinayake8975 Рік тому +3

    These 49.48 mins went pass like some couple of minutes.
    This is so much learning and that also in such such basic terminology. That's one heck of a enginnering.
    Thanks for the podcast Arpit and Arjun. I wish this series never comes to an end ❤️

  • @tesla1772
    @tesla1772 Рік тому +2

    Such an amazing and detailed conversation. Absolutely loved it 💯

  • @arunrajput1007
    @arunrajput1007 Рік тому +8

    Few things amazed me and I am not sure about whether its worth it.
    1. Just for connection pooling they migrated monolith to microservice.
    2. They remove foreign key constraints in their table and made custom orm.

  • @unspoken_verbose1825
    @unspoken_verbose1825 Рік тому +1

    This is one of the best Podcasts I have ever seen. Such deep and niche insights. Beauty of Engineering!

  • @joobis.b4568
    @joobis.b4568 Рік тому +1

    Great conversation !! Covered almost end to end high level architecture, challenges etc.

  • @tusharagarwal331
    @tusharagarwal331 Рік тому +2

    Loved every bit of it . Please continue this series .

  • @rishabhkalra9505
    @rishabhkalra9505 Рік тому +3

    loved this episode, so much to learn from razorpay. The data consistency section and ledger settlement is such a creative insight for anybody who hasn't worked on it yet. Thanks for recording this session and happy 1 month @google Arpit!!!

  • @travelism6385
    @travelism6385 Рік тому +2

    Just one word.. Brilliant Podcast
    This is really Asli Engineering Stuff. Worth watching every second of this podcast, can't skip anything. Very Insightful.

  • @exquisite_moment
    @exquisite_moment Рік тому +1

    Wow! what an amazing podcast. Looking forward for more such Videos.

  • @AbhishekVerma-vh7gi
    @AbhishekVerma-vh7gi Рік тому

    Amazing stuff! Looking forward to more such podcasts.

  • @SahilRajput03
    @SahilRajput03 Рік тому +1

    Thanks for the video to both of you, the content is really phaad!!

  • @navinmittal4809
    @navinmittal4809 Рік тому +1

    Great podcast Arpit. Best thing I loved was that you were paraphrasing most of the things that Arjun said. I think you already know most of the things and still you sounded like a newbie with excitement who's listening about systems for the first time :)

  • @atulsingh29
    @atulsingh29 Рік тому +1

    Can’t state how insightful it was. It blew my mind. Discussion really took my understanding to next level.

  • @pushpaksrivastava6576
    @pushpaksrivastava6576 Рік тому +1

    Wow Arpit....very knowledgeable session, Thanks for bringing him and the insights

  • @saswatsenapati7870
    @saswatsenapati7870 Рік тому +1

    Thank you so muchh arpit.... It is true knowledge that will help engineers in real time, who are newly taking you challenges.

  • @amitbansal7754
    @amitbansal7754 Рік тому +1

    Awesome talk. Thanks for doing this.

  • @sunnychaturvedi9958
    @sunnychaturvedi9958 Рік тому +1

    Brilliant value addition to engineering contents, real stuff! ❤️

  • @mystryb345
    @mystryb345 Рік тому +2

    As always superb content and also I had recently cracked offered from Razorpay and Its Interview Process is also Amazing.

  • @raghavddps2
    @raghavddps2 Рік тому

    Brilliant podcast! Thank you arpit for doing this!!

  • @ujjalroy1442
    @ujjalroy1442 Рік тому

    You must continue this series.... Phenomenal insights... Waiting for more

  • @dasmala9175
    @dasmala9175 Рік тому

    woow, my mind blows away, so much knowledge on a plate, lots of things to get to know about how the actual digital payment system works, which may appear simple from a normal person's perspective. Thank you, Arpit.

  • @namankumar7275
    @namankumar7275 Рік тому +1

    loved It, amazing things are doing by Razorpay Engineers. 😍

  • @sweiscool
    @sweiscool Рік тому +5

    Wow! What a knowledge packed podcast and this is just ep1! So glad this exists! Really enjoyed conversations between both of you!
    Excited for future eps! Thanks Arpit!

  • @sumanthreddy9391
    @sumanthreddy9391 Рік тому +1

    Informative session. Learnt so much!

  • @phLife_13
    @phLife_13 Рік тому +1

    i am very excited for this series.
    #thanks#gratefulToArpit

  • @bibekkakati
    @bibekkakati Рік тому

    Great discussion. Enjoyed and got to learn new things. 🔥

  • @sasanknvs5603
    @sasanknvs5603 Рік тому +1

    Very interesting and informative. Loved it.

  • @kunalsharma1621
    @kunalsharma1621 Рік тому +4

    Pure gold content 👏

  • @adarsh0431
    @adarsh0431 Рік тому

    Best engineering interview out there. loved it.

  • @abhishekdutta6189
    @abhishekdutta6189 Рік тому +2

    Keep this series going!!! So much knowledge in one video

    • @AsliEngineering
      @AsliEngineering  Рік тому +1

      I have a ton of videos on various topics that you'll find more interesting than this. Scroll through my channel once.

  • @adityaagrawal8507
    @adityaagrawal8507 Рік тому

    really insightful video , keep up the good work

  • @rvs99
    @rvs99 Рік тому

    superb… really learned lot of things from this session.🤘🏻

  • @sumitnegi2708
    @sumitnegi2708 Рік тому

    Thankyou for providing this content ❤, really insightful

  • @sanjeevrajora7335
    @sanjeevrajora7335 Рік тому

    Really loved this one, thanks Arpit for bringing such insightful engineering podcast

  • @sritejaparimi6605
    @sritejaparimi6605 Рік тому +1

    Looking forward!!

  • @pranayreddy5824
    @pranayreddy5824 Рік тому +1

    Thanks for this amazing video.

  • @iam_kundan
    @iam_kundan Рік тому

    Lots of engineering insights and technical points. Got to learn many new things.

  • @anshulgupta9754
    @anshulgupta9754 Рік тому

    This is Asli Hardcore Engineering! Thanks a lot Arpit for bringing this amazing episode. Really amazed by the engineering practices at Razorpay. The way Arjun explained each and every detail was enlightening; definitely a skill to be learned by every software engineer. It is one of the best engineering podcasts and I got to learn so much!

  • @ashutosh887_
    @ashutosh887_ Рік тому +1

    Thanks Arpit Bhaiya for this awesome podcast.

  • @jaydipaawte7324
    @jaydipaawte7324 Рік тому +1

    Really Enjoyed it
    thanks
    Need More Sir

  • @yashwanth1777
    @yashwanth1777 Рік тому +1

    Great start of the day.

  • @utsavanand5558
    @utsavanand5558 Рік тому +1

    Loved it.. insightful

  • @JardaniJovonovich192
    @JardaniJovonovich192 Рік тому

    Great video, we want more of these

  • @abhinavvsinhaa
    @abhinavvsinhaa Рік тому

    Learned a lot from these 49 minutes! Hats off to the engineers!!

  • @Engineerhooon
    @Engineerhooon Рік тому

    Mind blown podcast 🤯Thanks Arpit. You really inspires many like me. 😁

  • @ashutoshsrivastava6951
    @ashutoshsrivastava6951 Рік тому

    A brilliant show. Thank you guys. One thing that I am still interested to know. I have seen so many people talks about a lot of requests we were getting. But there is no number. So if you could tell this in your next video. Then it would be really great.

  • @prasangsinghal7887
    @prasangsinghal7887 Рік тому

    Really insightful and learnt a lot.

  • @surajpatil3247
    @surajpatil3247 9 місяців тому +1

    need more podcasts like this

  • @nishanksoni7120
    @nishanksoni7120 Рік тому +1

    gold content. I got to learn from this video a lot .Thanks Arpit .

  • @bhanvaibhav
    @bhanvaibhav 11 місяців тому

    This is truly asli engineering . Seedhi Baat no bakwaas, Real domain challenges and solution . I know that no architectures is The BEST. OutBox CDC ... amazing stuff ... please continue making stuff like this.

  • @ALEEMKHAWAR1
    @ALEEMKHAWAR1 Рік тому +1

    Thanks arpit such a wonderful podcast

  • @rite2riddhi
    @rite2riddhi Рік тому +1

    Was waiting for this one.

  • @niharpatel2631
    @niharpatel2631 8 місяців тому +1

    Really inspiring series of videos, arpit. Keep it going I am sure it is inspiring a lot of Indian techies to dive deep and try these things on, it will definitely make better quality made in india for the world systems at an unbelievable price point.

  • @HimanshuKumar-xz5tk
    @HimanshuKumar-xz5tk Рік тому +1

    This style of system design discussion is lit and interesting af

    • @AsliEngineering
      @AsliEngineering  Рік тому +1

      There are bunch of videos on my channel on real-world System Design. You will definitely find them interesting.

  • @bharathn1059
    @bharathn1059 Рік тому

    Great podcast very informative, thanks

  • @gmmkeshav
    @gmmkeshav Рік тому

    maja agaya sir bas 🙏
    ase podcast kar te rahiye

  • @myaccount09011975
    @myaccount09011975 11 місяців тому

    Great watch. Couldn't understand few of the technology used as my experience is mostly related to MS stack. But it has generated lot of curiosity about the stack used at RazorPay. Looking for more such podcasts. Thanks Arjan/Arpit for this wonderful discussion.

  • @tarun8101
    @tarun8101 Рік тому

    Very nice podcast , Enjoying the technology

  • @ajaybabupatel1665
    @ajaybabupatel1665 Місяць тому

    Real engineering hits more than any dopamine.
    Got facinated by the number of DBs razorpay is using depends on seevice.
    Really cool stuff with cool Engineer

  • @varunnmiglani2531
    @varunnmiglani2531 Рік тому +3

    Wow great video, such complex concepts put so simple without using a single diagram.
    Good going arjun…

  • @prashantshubham
    @prashantshubham Рік тому +1

    Great video, one interesting question would’ve been what have been some issues with microservice architecture which still they’re in process of solving or need to evolve more

  • @jyotsnamadhavi6203
    @jyotsnamadhavi6203 Рік тому

    We really need these kind of podcasts. Thank you Arpit

    • @AsliEngineering
      @AsliEngineering  Рік тому

      Would recommend going through other videos of my channel.

  • @antrapurohit8010
    @antrapurohit8010 Рік тому +1

    Very informative content

  • @yogeshgophane653
    @yogeshgophane653 Рік тому

    As Always Arjun is great at explaining!

  • @bhargavbehara7747
    @bhargavbehara7747 Рік тому

    It always amazes to see real world problems.

  • @adityajha3116
    @adityajha3116 Рік тому +1

    Pure Gold

  • @adarshpathak3839
    @adarshpathak3839 Рік тому +2

    Brilliant Engineering by razorpay.

  • @santoshbhatnagar2155
    @santoshbhatnagar2155 Рік тому

    Please get more such videos

  • @trustaniket
    @trustaniket Рік тому

    just one word: wow!

  • @saptarshimanna4550
    @saptarshimanna4550 Рік тому

    Amazing ♥

  • @charan775
    @charan775 Рік тому

    I think one more step before dual write is to backup the existing data so that traffic can be served

  • @akhil1996kc
    @akhil1996kc Рік тому +1

    It’s really difficult to think that a foreign key validation at PHP (application) level would be faster than what MySQL can do. Database are optimized for these things.

    • @AsliEngineering
      @AsliEngineering  Рік тому

      not about the speed. But having the ability to split.

  • @soumyasengupta7018
    @soumyasengupta7018 Рік тому

    Curious about how uniqueness & race conditions regd database writes were achieved by moving db validations & constraints to application layers.

  • @utsavprabhakar5072
    @utsavprabhakar5072 Рік тому

    Would love a 20 mins video where you can make notes about this conversation and explain. There were some terms and flows which i couldnt follow. CDC was new, sounds like ddb streams. Also the part where they ensure the ledger update was pretty cool but I couldnt understand it fully.

  • @Cornies.
    @Cornies. Рік тому

    The interviewee is providing calm and composed answers. I liked the clarity and the interviewer has to improve and avoid rephrasing every answer for such.a long time

  • @singhsaurabh920
    @singhsaurabh920 Рік тому

    How can you decide to which bank you should route request its chooseen by customer

  • @sepraveen
    @sepraveen 9 місяців тому

    Intial tech stack:Php, Larvel, Route 53, alb, mysql rds

  • @kapilpatel9379
    @kapilpatel9379 Рік тому

    Going good...

  • @SachinDolta
    @SachinDolta Рік тому

    Good one bro

  • @dipanjanm
    @dipanjanm Рік тому

    Payments data can be huge is rdbms enough to support the data , are you removing payments data periodically to some cold store from the transactional rdbms?

  • @manikeshverma7102
    @manikeshverma7102 Рік тому

    When we said MySQL is high on consistency. which consistency we r referring here..ACID one or CAP one.. it sound like acid one but then you removed all the constraints from db.. which is bit conflicting @arujn

  • @cshivani
    @cshivani Рік тому

    Deadlock not raising exception (Causing dirty ready) should this not be happening by default in all rdbms databases? Curious is this also the case in other db's which guarantee acid?.
    The last section on incidents and their resolution was good.

  • @k.k.gayansanjeewa7432
    @k.k.gayansanjeewa7432 Рік тому

    I just knew I too using transaction out box pattern (by name) :)

  • @aniruddhkhera510
    @aniruddhkhera510 5 місяців тому

    Hi Arpit & Arjun,
    I've been thoroughly enjoying your content and have been binge-watching your videos.
    At 18:25, Arjun discussed implementing the outbox pattern for dual writes. While I understand the concept well (and have implemented something similar), I wanted to delve deeper into the actual implementation. The traditional use case for this pattern involves achieving ACD (a form of transactionality) for database writes and event publication in the message queue or a different DB.
    Once the data is transactionally written to both the monolith table and the outbox table, an asynchronous job, using transactional log tailing (binlog consumption), allows us to consistently write to the microservice table.
    However, let's consider a scenario where the broker is down (acting as a SPoF). How does the OUTBOX PATTERN ensure consistency in this situation?
    In my implementation, instead of relying on binlog consumption, I've set up a cronjob (using a serverless service) to read from the outbox table and publish the event to the message queue. If it succeeds, it updates the status in the outbox table to prevent the next run of the cronjob from picking it up again.
    I'd love to hear your thoughts.

  • @nedwize
    @nedwize Рік тому

    Hi Arpit, top video with some great insights. One request though - could you add timestamps to the video covering different topics that were discussed in the podcast, would be a huge help?

    • @AsliEngineering
      @AsliEngineering  Рік тому +3

      I have observed that people skip most of the part when I add timestamps.
      If they jump forward and there comes a point where some context is needed, people are more likely to drop at that point.
      Hence I have stopped adding timestamps.

  • @VisKu-ck1wr
    @VisKu-ck1wr 2 місяці тому

    after learning DBMS and MySQL able to understand this podcast

  • @singhsaurabh920
    @singhsaurabh920 Рік тому

    Instead of outboxer pattern cant we use read replica

  • @tarunstv796
    @tarunstv796 Рік тому

    You can add visual explanations of some technical concepts as every one might not understand/know all the concepts.

  • @plenue
    @plenue Рік тому +1

    Hey Arpit,
    Do read LedgerStore paper by Uber. With that in mind, you will love the beauty of both razorpay and Ubers ledger system, especially the way uber migrated their db from aws to in house and writing to both db parallels to test thing out.

    • @AsliEngineering
      @AsliEngineering  Рік тому

      Thanks a ton for sharing. Definitely going through it.

    • @plenue
      @plenue Рік тому

      @@AsliEngineering
      Please do make video on same if possible. I think it is good enough for everyone to learn something from a large db migration.
      Love your content and open for any help you need (not for technical perspective as I am still learning and growing but any other task or any initiative) in growing your community.

  • @harsh3305
    @harsh3305 9 місяців тому

    I have always wondered about this scenario with the foreign key/constraint validation being done in application code because I have seen a couple of threads where big companies don't use foreign key constraints. Consider a situation where you are persisting entity X (which must have a unique name) and it also holds a bunch of foreign refs(say Y,Z,..). Won't performing the validation in the application code involve querying the entire X table with the name projection (check unique), querying the Y,Z,.. other tables by ID? Why is this a better option than letting the relational database handle this ? As far as I understand it, this approach will make you perform more queries than required. What if there are millions of rows (say users table) in each of the tables ?

    • @vorishirne_7539
      @vorishirne_7539 7 місяців тому

      the orm does this only for data which they wouldn't have to query for.

  • @karanpk28
    @karanpk28 10 місяців тому

    Hi Arpit! Eager to listen to Dr. Kailash of Zerodha in such podcasts as well. Thanks!

  • @pranupranav5563
    @pranupranav5563 9 місяців тому +1

    Tazorpay walo ne abhi naya merchant ko onboard nhi kar raha hai 😭😭😭😭Muze phonepe or paym pg jaana pad raha hai.

  • @karankap00r
    @karankap00r Рік тому +1

    Amazing discussion! :D
    Being a part of debugging through the last issue mentioned would be lit af :D

    • @AsliEngineering
      @AsliEngineering  Рік тому

      Yeah. Even I got engrossed and tried to get max info on it 😀

  • @_nitingoyal_
    @_nitingoyal_ Рік тому

    Loved it Arpit!

  • @Vivek-yh1ns
    @Vivek-yh1ns Рік тому +3

    Good one Arpit and Arjun learned a lot, I am so stuck with AWS that can only relate to amazon specific service be it queue or notification topics, this is triggering an alarm for me to look into other similar products used at scale worldwide.
    PS:~ Not sure their UTs are with 95% code coverage; hahaha Arjun can reply and confirm.

  • @AdeshAtole
    @AdeshAtole Рік тому

    No bullshit vid. Loved it. I work as part of Platform too, can relate.
    One doubt though,
    Wouldn't ensuring fkey constraint at app layer be slower than having db handle it?

    • @AsliEngineering
      @AsliEngineering  Рік тому +1

      You have to do it when you are sharding. No way out.