인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
BEST

견고한 결제 시스템 구축

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

초급자를 위해 준비한
[백엔드, 웹 개발] 강의입니다.

이런 걸 배울 수 있어요

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

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

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

  • 결제 프로세스의 이해

💲 "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

안녕하세요
입니다.

926

수강생

39

수강평

38

답변

4.6

강의 평점

3

강의

안녕하세요.

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

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

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

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

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

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

커리큘럼

전체

21개 ∙ (7시간 8분)

해당 강의에서 제공:

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

수강평

전체

17개

4.6

17개의 수강평

  • 강프로그래머님의 프로필 이미지
    강프로그래머

    수강평 24

    평균 평점 4.6

    5

    62% 수강 후 작성

    부끄럽지만 경력직이다 이전 회사에서 배달앱 중개 서비스를 담당하였으며 주문, 결제 서비스에 대한 도메인 지식이 있었기 때문에 이 강의를 수월하게 들을 줄 알았다.. 그런데 아니다.. 매우 어렵다.. 초급 수준이 아니다.. 이전에 재직했던 회사 주문 시스템이 우스울 정도다.. 확실히 기술적으로 상위 버전의 결제 서비스를 배우는 기분이다.. 아래 리뷰처럼(아효님) 코틀린, 리액티브, 헥사고날 아키텍처, 카프카 지식이 기본 베이스로 필요하며 Java, SpringBoot MVC 정도 할 줄 아는 수준이라면 분명 코드 따라 치기에 정신없이 바쁠지도 모른다 하지만 이 강의는 분명히 결제 서비스에 대해서 역량을 기르려면 제대로 이해하기 전까지 계속 봐야된다고 생각한다. 매우 중요하다고 생각한다.. (돌머리인 난 매우 어렵다ㅠㅠ) 이 강의는 완강후에 시간적 여유가 된다면 원래 알고 있던 java, Spring MVC 패턴으로 리팩토링 하면서 다시 제대로 공부해서 꼭 지식을 습득해야겠다.. 롤에서 그마 챌린저 만나서 멘탈 털린 느낌이다 공부를 더 열심히 해야겠다는 동기부여가 생긴다

    • 여정민
      지식공유자

      좋은 리뷰 감사합니다! 익숙한 닉네임이네요 ㅎ 좀 더 강의를 따라가기 쉽게 핵사고날 아키텍처, 코틀린, 리액티브에 대해서도 간략하게 설명을 넣어야 했나 싶네요.. 이 설명을 넣을까도 고민을 많이 헀지만 배보다 배꼽이 더 커지는거 아닌가 싶긴 했어서 넣지 않았어요. 그래도 어려운 코틀린 문법을 쓰거나 하지는 않았어서 크게 어렵지는 않으실거라고 생각합니다! 다음 강의에서는 좀 더 친절하고 쉽게 설명하려고 많이 노력해볼게요. 좋은 피드백 감사합니다~~

  • 이채림님의 프로필 이미지
    이채림

    수강평 1

    평균 평점 4.0

    4

    19% 수강 후 작성

    정말 주제도 그렇고 내용도 코드도 완벽한 강의인데... 헥사고날 아키텍처인게 너무너무너무 아쉬워요. 이것만 아니었으면 별점 5점입니다... 헥사고날이 필요한 아키텍처인지도 사실 잘 모르겠구요. ㅠㅠ 오히려 결제 로직을 더 이해하기 힘들었어요... 결제에 대한 강의라 집중이 잘 안됐습니다. 이것만 아니면 정말 완벽합니다. 강의자료도 진짜 깔끔하게 정리해놓으셔서 이해하기도 편했고, 편집도 신경쓰신 것 같아서 좋아요. 헥사고날.. 이것만 빼면 100000점입니다... 다음 강의가 기대됩니다!

    • 리나님의 프로필 이미지
      리나

      수강평 5

      평균 평점 5.0

      5

      90% 수강 후 작성

      견고한 결제 서비스 통해 좋은 지식을 얻을 수 있어서 너무 좋았어요! 개인적으로 결제 서비스는 데이터 일관성이 굉장히 중요한 부분인데 누락 안되도록 여러 기술들을 습득 할 수 있어서 너무 좋았습니다. 아쉽지만 java 언어로 해주었으면 좋을꺼 같고 '견고한 결제 서비스' 중점인데 spring webflux 는 도입 한 것에 대해 힘든 부분이 있었어요. spring webflux 를 모르는 학생은 접근 하기 어렵지 않았을까 생각 합니다.

      • Daegun Kim님의 프로필 이미지
        Daegun Kim

        수강평 16

        평균 평점 4.2

        3

        71% 수강 후 작성

        단순 재사용 재배열하지 않았다고 했지만 double-entry ledger에 대해서나 기본적인 ledger/wallet 개념도 제대로 설명해 놓지 않은걸 보면 좀 아쉽다는 느낌이 많네요. 여러 모로 payment system에서는 조금 벗어난 주제 같네요.

        • 여정민
          지식공유자

          왜 Ledger System 이 나왔는지 등에 대해서 좀 더 자세한 역사를 소개했어야 했나요? Double Ledger 와 Wallet 시스템에 대해 충분히 핵심적인 부분은 설명했다고 생각합니다. 뒷 부분인 Ledger 와 Wallet 부분은 들으신 것 같지 않은 것 같은대 단순 재배열/재사용에 대해 언급하신 건 납득되지 않네요. 실제 이론을 구현 하는 것이 대해서도 여러 고민이 있기 마련인거 아닌지 묻고 싶습니다.

        • 어떻게 구현되는지가 중요하다는 말씀을 드린게 아닙니다. 제가 드리고 싶은 말은 단순히 필드만 보아도 차변(debit)이나 대변(credit) 그리고 테이블 이름에서도 ledger라고 장부라는 개념이 사용되었고 복식부기라는 명칭인 double entry라는 개념이 사용되었다면 이 부분에 대한 설명이 필요하다는 말씀드린 겁니다. 복식부기를 어느 정도 이해하고 이 복식부기를 구현해서 어떻게 안정적으로 결제를 추적하고 관리하는지에 대한 설명이 필요한게 아닐까요?? 이게 도메인을 이해하고 해당 도메인의 정의와 요구사항을 파악하는게 아닌가요? 이게 되어야지 이 결제라는 도메인을 제대로 설명해주시는게 아닐까요? 이 강의에서는 대략적인 결제과정을 안정적으로 운영하는 코드를 제시하고 이를 카프카로 어떻게 이벤트로 관리하고 이 과정에서 트렌젝션을 관리하는 과정을 보여주시는데 이는 제가 보기에 결제도메인이 주가 아니라 카프카와 트렌젝션 관리가 메인이고 이 것들을 단순히 결제과정에서 보여주는 걸로 보입니다. 강사님이 준비가 부족했거나 강의 내용이 성실하지 않았다는건 아닙니다. 다만 결제 도메인에 대한 궁금증을 풀 수 있을까하여 기대하고 10만원을 결제했는데 얻은게 별로 없는 것 같아 날카롭게 수강평을 남겼네요. 홧김에 2점을 남기긴 했는데 3점으로 변경해놓고 갑니다.

      • 이재혁님의 프로필 이미지
        이재혁

        수강평 15

        평균 평점 5.0

        5

        100% 수강 후 작성

        조금 빨라서 따라가기는 어려운데 좋은 강의 같아요.

        비슷한 강의

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