Thumbnail
BEST
개발 · 프로그래밍 백엔드

재고시스템으로 알아보는 동시성이슈 해결방법 대시보드

(4.8)
134개의 수강평 ∙  1433명의 수강생

19,800원

지식공유자: 최상용
총 18개 수업 (1시간 11분)
수강기한: 무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
초급자를 위해 준비한
[백엔드, 웹 개발] 강의입니다.

동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다.

✍️
이런 걸
배워요!
동시성 이슈가 무엇인지 알 수 있게 됩니다.
동시성 이슈를 처리하는 방법들을 알게 됩니다.

동시성 이슈 처리도 자신있게! 
간단한 재고 시스템으로 차근차근 배워보세요.

백엔드 개발자라면 
꼭 알아야 할 동시성 이슈 🚩

동시성 이슈를 아시나요? 백엔드 개발자라면 동시성을 고려한 프로그래밍을 반드시 할 줄 알아야 합니다. 막 프로젝트를 시작할 때 동시성 이슈를 고려하지 않은 채로 개발을 시작하게 되면 데이터 정합성이 중요한 상황에서 여러 가지 문제가 발생할 수 있기 때문입니다.

이 강의에서는 동시성 이슈가 무엇이고, 어떤 방식으로 해결할 수 있는지를 알아봅니다. 간단한 재고 시스템을 직접 만들어보면서 동시성 이슈에 대해 알아보고, 문제를 해결하는 방법에 대해 알아봅니다. 자바(Java)와 스프링(Spring)을 막 뗀 초보 백엔드 개발자 여러분께 도움이 되고자 이번 강의를 제작하게 되었습니다. 함께 알아가볼까요?

이런 분들께 추천합니다 💡

게시판은 만들어보았지만, 실무 백엔드 개발에는 어떤 걸 고려해야 하는지 알고 싶은 분 

재고와 같이 데이터 정합성이 중요한 기능을 어떻게 개발해야 하는지 궁금한 분


3-Step으로 해결하는 
재고 시스템 정합성 문제!

DB랑 실제 상품 재고 숫자가 안 맞아요. 
어떻게 하면 좋을까요?

동시성 문제(Concurrency Issue)

문제 해결 #1
Application Level

Application 레벨에서 문제를 해결합니다.

Synchronized 키워드 사용

문제 해결 #2
Database Lock

데이터베이스가 제공하는 Lock을 이용하여 동시성을 제어해 봅니다. 

  • Pessimistic Lock (비관적 락)
  • Optimistic Lock (낙관적 락)
  • Name Lock (네임 락)

Pessimistic Lock 사용

문제 해결 #3
Redis Distributed Lock

Redis(레디스)의 기능을 활용해 동시성을 제어해 봅니다.

  • 라이브러리 비교
  • Redis Cli를 통한 명령어 실습
  • Lettuce 활용하기
  • Redisson 활용하기

Lettuce, Redission 사용


Q&A를 확인해보세요 💬

Q. 이제 자바(Java)를 다 배웠습니다. 이 강의를 들어도 될까요?

이 강의는 스프링(Spring)을 이용하여 게시판을 만들어보신 분들에게 권장합니다. 스프링으로 게시판을 한 번 만들어보신 후에 들으시는 걸 권장합니다.

Q. 이 강의를 들으면 동시성 이슈를 전부 처리할 수 있게 되나요?

상황마다 처리하는 방법이 다르기 때문에 전부 처리할 수 있지는 않습니다. 다만 동시성 이슈가 무엇이고, 어떤 식으로 해결하는지를 배우기 때문에 상황에 따라 응용하는 방법을 기르실 수 있다고 생각합니다.

Q. Node.js를 사용하여 개발하던 현직자입니다. 이 강의를 들어도 될까요?

스프링에 특화된 기능을 많이 사용하지 않기 때문에 자바를 이해하실 수 있다면 들으셔도 괜찮습니다.

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
동시성 이슈가 무엇인지 잘 모르시는 분
동시성 이슈는 무엇인지 알지만 어떻게 해결해야 하는지 모르시는 분
Spring을 이용하여 게시판을 한 번이라도 만들어보신 분
📚
선수 지식,
필요할까요?
Java
Spring

안녕하세요
최상용 입니다.
최상용의 썸네일

안녕하세요. 지식공유자 최상용입니다.

많은 오픈소스에 기여한 경험이 있는 현직 백엔드 개발자입니다.

- Spring Data Mongo Contributor
- querydsl Contributor
- grpc-kotlin Contributor
- ksp Contributor
- mybatis Contributor

커리큘럼 총 18 개 ˙ 1시간 11분의 수업
이 강의는 영상, 수업 노트가 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 강의소개 및 환경세팅
섹션 1. 재고시스템 만들어보기
섹션 2. Synchronized 이용해보기
Synchronized 이용해보기 03:43
문제점 01:44
섹션 3. Database 이용해보기
다양한 방법 알아보기 03:46
Pessimistic Lock 활용해보기 03:46
Optimistic Lock 활용해보기 06:46
Named Lock 활용해보기 07:48
섹션 4. Redis 이용해보기
Redis 라이브러리 알아보기 03:03
작업환경 세팅 01:36
Lettuce를 작성하여 재고감소 로직 작성하기 06:16
Redisson 을 활용하여 재고로직 작성하기 06:27
라이브러리 장단점 01:35
섹션 5. 마무리
Mysql 과 Redis 비교하기 01:26
강의 게시일 : 2022년 08월 08일 (마지막 업데이트일 : 2022년 08월 23일)
수강평 총 134개
수강생분들이 직접 작성하신 수강평입니다.
4.8
134개의 수강평
5점
4점
3점
2점
1점
VIEW 좋아요 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
김태영 thumbnail
인강계의 체리피커같은 강의, 군살은 쏙 빼고 필요한 것만 담은 다이어트 패키지 같은 강의였습니다. 동시성을 간단한 예제를 통해 쉽고 빠르게 익힐 수 있는 유익한 시간이었습니다. 글씨는 좀 작아요.. ;ㅅ;
2022-08-24
지식공유자 최상용
김태영님 너무 좋은 후기 감사합니다 :) 최대한 간략하되 도움되는 정보를 드리고 싶었습니다! 글씨는 차차 조금씩 키워보도록 하겠습니다. 강의를 수강해주셔서 감사합니다!
2022-08-24
seonjun Moon thumbnail
이게 한시간 짜리이지만 도커도 만져보고, 여러가지 기능들을 전부 다 실행해보고 하니 진짜 엄청 알차네요... 또 피드백도 잘 되어있고... 당신 정체가 무엇이죠...?
2022-11-20
지식공유자 최상용
seonjun Moon 님 너무 좋은후기 감사드립니다!
2022-11-26
김동희 thumbnail
강의 너무 좋습니다. 다른 개발자분들 꼭 들었으면 좋겠네요 앞으로 실무에 도움되는 깊이 있는 다른 좋은 강의 부탁드립니다 건강 하고 행복하세요~
2022-09-06
지식공유자 최상용
김동희님 너무 좋은 후기감사합니다! 김동희님도 건강하고 행복하세요!!
2022-09-06
최정민 thumbnail
간단하게 synchronized, DB Lock, Redis에 대해 알아볼 수 있었던 시간이었습니다. 다만 코드를 따로 공개해주시면 더 좋겠다고 생각했습니다. 저는 강의 듣는 시간보다 옵션이나 어노테이션을 안 달은 문제로 오류가 나 오류를 해결하는 시간이 더 오래 걸려서 완강이 좀 힘들었습니다... 코드를 공개해주시면 오류 발견이 더 쉬울 것 같습니다.
2022-08-22
지식공유자 최상용
최정민님 후기 감사합니다 :) 코드는 빠른시간내에 깃헙에 올린후에 공개하도록 하겠습니다. 강의를 수강해주셔서 감사합니다 :)
2022-08-22
code4109 thumbnail
주제는 좋습니다. 주제에 혹해서 구입했는데... 다 듣고 나니 내용의 깊이나 강의의 품질에 비해 가격이 비싸네요. 2만원 정도라 살 때도 동료에게 좀 좋은 식사 대접하고 얘기 듣는 마음으로 구입했는데, 커피 한 잔 정도였어도 좋을 듯. 일단 글씨가 너무 작아요. 작아도 너무 작습니다. 아마 본인 화면이 크거나 그런 환경의 분들만 생각하신 것 같은데, 어쩌면 전혀 생각 안 했을 수도 있고요. 15인치 노트북에서 보는 건 너무 힘드네요. 강의 시작하고 뭐 좀 따라서 만들려고 보면 화면의 글씨를 읽기 힘들어서 기분이 상하고 강의 그만 듣고 싶어집니다... 그리고 중간중간 각 Lock의 설명이 너무 간단해 보입니다. 듣고 보니 다 알고 있던 것들이라 수강료가 더 비싸게 느껴졌던 것 같네요. 또 서비스 대신 파사드를 만드실 때 왜 여기서는 서비스 인터페이스나 클래스 대신 파사드를 쓰는 지 정도는 알려주시면 좋을 것 같아요. 마지막으로 NamedLock 부터는 테스트 케이스가 하나도 동작 안 하네요... 환경 똑같고 코드도 똑같은데 왜 작동을 안 하는지... 심지어 github에서 강의 소스 받아서 실행해도 동작을 안 해서 그냥 학습 종료했습니다.
2023-01-06
지식공유자 최상용
code4109 님 솔직한 후기 감사드립니다. 혹시 github 에서 어떠한 테스트코드가 동작하지 않는지 알려주신다면 다른 수강생분들께 도움이 될 수 있을듯합니다. 어떤 테스트코드가 동작하지 않는지 알려주실 수 있으실까요 ?
2023-01-28