강의

멘토링

로드맵

개발 · 프로그래밍

/

백엔드

견고한 결제 시스템 구축

실용적인 결제 시스템 구축 강의, 코드로 배우며, 실제 시스템을 구현하는 데 필요한 지식을 다룹니다.

(4.4) 수강평 22개

수강생 473명

  • 여정민
실습 중심
결제기능
결제기능구현
backendSpringDBMS/RDBMSpaymentsSpring Boot

먼저 경험한 수강생들의 후기

이런 걸 배울 수 있어요

  • 신뢰성을 고려한 결제 시스템 설계

  • 결제 시스템의 기본 원리와 구성요소

  • 트랜잭션 처리와 동시성 제어

  • 결제 프로세스의 이해

💲 "Talk is cheap. Show you the code."

이 강의는 실용적인 접근 방식을 취하며, 다음과 같이 핵심 개념을 쉽게 이해할 수 있도록 구성되어 있습니다.

  • 결제 시스템 설계

  • 결제 승인 기능 구현 및 에러 핸들링

  • Apache Kafka를 활용한 결제 메시지 시스템의 구현

  • Optimistic Locking을 이용한 동시성 제어

  • Dead Letter Queue를 통한 에러 관리 방법

  • Kafka 트랜잭션을 통한 메시지 처리와 전달 보장

  • Transactional Outbox Pattern 을 이용한 결제 승인 메시지 발행

  • 신뢰성 있게 카프카를 사용하는 방법

  • Bulk Head Pattern 과 병렬 처리를 활용한 결제 복구 서비스

  • Double-Entry Ledger 기법을 사용한 Ledger Service 구축


이 강의는 기초 프로그래밍 지식이 있는 백엔드 개발자들을 대상으로 하며, 결제 시스템의 중요 기능을 처음부터 끝까지 이해하고 구축할 수 있는 실질적인 능력을 제공합니다. 강의의 목표는 이론적 지식의 전달이 아니라, 실제 세계의 문제 해결과 프로젝트 적용 능력의 향상에 있습니다. 따라서, 강의를 수료한 후에는 자신만의 결제 시스템을 설계하고, 구현하는 것뿐만 아니라, 기존 시스템의 신뢰성과 성능을 개선할 수 있는 실력을 갖추게 될 것입니다.

💡신뢰성 있는 결제 시스템 기초부터 실전까지: 완벽 가이드

  • 결제 시스템 설계와 구현의 기초부터 신뢰성 있는 메시지 처리 기술까지 배웁니다.

  • Kafka, Wallet Service, 동시성 제어 등 결제 솔루션에 필수적인 전략을 실전에 적용하는 방법을 배워보세요.

📚 이런 내용을 배워요

1. 결제 시스템 설계

결제 시스템의 정의와 핵심 요구사항을 명확히 하고, 고수준의 관점에서 시스템 전체를 조망합니다. 개발할 결제 시스템의 구조를 설계하는 과정에서, 데이터베이스 선택, 통신 스타일, 메시지 전달의 신뢰성과 처리 보장 방법 등을 깊이 있게 다룹니다. 이를 통해 학습자는 결제 시스템의 내부 작동 원리를 이해하고, 실제 구현 시 고려해야 할 다양한 기술적 결정에 대한 통찰을 얻게 됩니다.

2. 결제 승인 기능 구현 및 에러 핸들링

Toss Payments 연동을 통한 결제 승인 기능의 구현 과정을 실습합니다. 해당 강의에서는 결제 과정에서 발생할 수 있는 장애를 극복하기 위해 재시도 매커니즘인 Retry를 구현하는 방법을 배우게 됩니다. 또한, 결제 과정 중 발생할 수 있는 다양한 에러 유형을 식별하고, 이를 처리하는 에러 핸들링 전략에 대해 다룹니다.

3. 결제 복구 서비스

결제 복구 서비스 강의에서는 처리되지 않거나 알 수 없는 예외로 실패한 결제 이벤트를 복구하는 매커니즘에 초점을 맞춥니다. 이 강의에서는 시스템의 신뢰성을 향상시키기 위해 Bulk Head 패턴을 적용하는 방법을 배우게 됩니다. 또한, 병렬 처리 기술을 활용하여 결제 시스템 복구 기능 성능을 향상시키는 전략에 대해서도 다룹니다.

4. 결제 승인 메시지 발행

결제 승인 성공 후 Apache Kafka를 활용해 이벤트 메시지를 발행하는 방법을 중점적으로 다룹니다. 이 강의에서는 이벤트 메시지가 무조건적으로 발행될 수 있도록 보장하는 Transactional Outbox Pattern의 적용 방법을 학습하게 됩니다. 이 과정을 통해, 결제 시스템과 다른 시스템 간의 일관성과 신뢰성 있는 데이터 통신을 구현하는 실질적인 기술과 전략을 습득하게 됩니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): Windows, macOS, Linux 등 모든 OS가 가능합니다.

  • 사용 도구: Intellij, Datagrip, Kotlin, Docker, Toss App, Git, Confluent Kafka Cloud

  • PC 사양: 인터넷 접속이 가능한 기본 사양의 PC


학습 자료

  • 제공하는 학습 자료 형식: Notion

  • 분량 및 용량: 각 섹션별로 학습 자료 제공

선수 지식 및 유의사항

  • 본 강의는 Alex Xu 의 Systems Design Interview: An Insider’s Guide: Volume 2 의 Payment System 설계의 이론을 보다 응용하고, 실제 사례에 적용하여 독창적인 커리큘럼을 개발했습니다.

  • Kotlin, Spring Webflux, Spring Data R2DBC, Spring Data JPA, MySQL 그리고 Apache Kafka 등의 기술을 활용합니다. 이 기술들에 대한 사전 지식이 없어도 강의 이해에 문제 없습니다.


이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 결제 시스템이 궁금한 백엔드 개발자

  • 실전 프로젝트를 하고 싶은 학생

선수 지식,
필요할까요?

  • Kotlin

  • Spring Webflux

  • Spring Data Jpa

  • Spring Data R2DBC

  • MySQL

  • Apache Kafka

안녕하세요
입니다.

976

수강생

52

수강평

38

답변

4.5

강의 평점

3

강의

안녕하세요.

저는 개발자면서 교육자로 신뢰할 수 있는 강의를 만들려고 노력하고 있습니다.

강의를 만들 땐 필요한 지식과 기술을 군더더기 없이 전달하는 정보 밀도 높은 콘텐츠를 제공하려고 합니다.

제가 관심있는 분야, 정말 의미 있다고 믿는 영역에만 강의를 만들며, 누구나 만들 수 있는 강의는 만들지 않습니다.

추가로 커리어리에서도 유용한 글들을 쓰고 있습니다. 

- (前) 카카오엔터프라이즈 소프트웨어 엔지니어

- (前) 카카오 Ground X 소프트웨어 엔지니어

커리큘럼

전체

21개 ∙ (7시간 8분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

22개

4.4

22개의 수강평

  • xpdpfal5210님의 프로필 이미지
    xpdpfal5210

    수강평 1

    평균 평점 4.0

    4

    19% 수강 후 작성

    This lecture is perfect in terms of topic, content, and code... It's such a shame that it's hexagonal architecture. If it weren't for this, I'd give it 5 stars... I'm not even sure if hexagonal is a necessary architecture. ㅠㅠ Rather, the payment logic was harder to understand... I couldn't concentrate well because it was a lecture about payment. If it weren't for this, it would be perfect. The lecture materials are organized really neatly, so they're easy to understand, and I like that they put a lot of thought into editing. Hexagonal... If only this were excluded, it would be 100,000 points... I'm looking forward to the next lecture!

    • kms920106님의 프로필 이미지
      kms920106

      수강평 24

      평균 평점 4.6

      5

      62% 수강 후 작성

      I'm embarrassed to say this, but I'm a career employee. I was in charge of a delivery app brokerage service at my previous company, and I had domain knowledge of order and payment services, so I thought I would be able to take this course easily. But no.. It's very difficult.. It's not beginner level.. The order system at my previous company was ridiculous.. It definitely feels like I'm learning a higher version of a payment service in terms of technology.. As in the review below (Ahyo), knowledge of Kotlin, reactive, hexagonal architecture, and Kafka is required as a basic base, and if you know Java, SpringBoot MVC, you might be very busy following the code. However, I think that this course is something that you should keep watching until you properly understand it in order to build your capabilities in payment services. I think it's very important.. (I'm a noob so it's very difficult for meㅠㅠ) After completing this lecture, if I have time, I should study it properly again while refactoring it to the Java and Spring MVC patterns that I originally knew, and definitely acquire the knowledge.. I feel mentally exhausted after meeting that challenger in LoL I feel motivated to study harder

      • yjm9505168574
        지식공유자

        Thank you for the great review! It's a familiar nickname. I think I should have briefly explained the nuclear accident architecture, Kotlin, and reactive to make it easier to follow the lecture. I thought a lot about whether to include this explanation, but I didn't include it because I thought it would be too much of a hassle. However, I didn't use difficult Kotlin grammar or anything, so I think it won't be too difficult! I'll try harder to explain it more kindly and easily in the next lecture. Thank you for the good feedback~~

    • syh8088님의 프로필 이미지
      syh8088

      수강평 7

      평균 평점 5.0

      5

      90% 수강 후 작성

      It was great to be able to gain good knowledge through a solid payment service! Personally, data consistency is a very important part of payment service, so it was great to be able to acquire various technologies so that it is not missed. It would have been better if it had been done in Java, and the focus was on a 'solid payment service', but there were some difficult parts about introducing spring webflux. I think it would have been difficult for students who do not know spring webflux to approach it.

      • blutics님의 프로필 이미지
        blutics

        수강평 16

        평균 평점 4.2

        3

        71% 수강 후 작성

        Although it is said that it is not a simple reuse rearrangement, it is a bit disappointing that it does not properly explain the double-entry ledger or the basic ledger/wallet concept. In many ways, it seems like a topic that is a bit off topic for payment systems.

        • yjm9505168574
          지식공유자

          Should I have introduced a more detailed history, such as why the Ledger System came out? I think I have explained the core parts of the Double Ledger and Wallet systems sufficiently. I don't think you have heard the Ledger and Wallet part, but I don't understand what you said about simple rearrangement/reuse. I would like to ask if there are many concerns about actually implementing the theory.

        • I am not saying that how it is implemented is important. What I want to say is that if you simply look at the fields, debit or credit, and the table name uses the concept of ledger as a ledger, and the concept of double entry, which is the name of double-entry bookkeeping, then this part needs to be explained. Don't you need to understand double-entry bookkeeping to some extent and explain how to implement this double-entry bookkeeping to reliably track and manage payments? Isn't this understanding the domain and understanding the definition and requirements of the domain? Isn't this the right way to properly explain this payment domain? In this lecture, you present a code that operates the general payment process reliably and show how to manage it as an event with Kafka and the process of managing transactions in this process. In my opinion, the payment domain is not the main focus, but Kafka and transaction management are the main focus, and these are simply shown in the payment process. It's not that the instructor was not prepared enough or the lecture content was not sincere. I paid 100,000 won hoping that it would solve my curiosity about the payment domain, but I feel like I didn't get much out of it, so I left a sharp review. I left 2 points in anger, but I changed it to 3 points and am leaving.

      • nmy64526584님의 프로필 이미지
        nmy64526584

        수강평 2

        평균 평점 5.0

        5

        100% 수강 후 작성

        ₩148,500

        여정민님의 다른 강의

        지식공유자님의 다른 강의를 만나보세요!

        비슷한 강의

        같은 분야의 다른 강의를 만나보세요!