inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

댓글 삭제 로직에서 동시성 문제 발생 가능성

미해결

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요 쿠케님! 현재 구현되어 있는 댓글 삭제 로직을 보면 1. 댓글 조회 2-1. 자식 댓글이 존재하면 deleted=true 로 변경 2-2. 자식 댓글이 존재하지 않으면 댓글을 물리 삭제하고, 부모 댓글을 재귀적으로 삭제 이렇게 구현되어 있는데요. 동시성 문제가 발생할 수 있겠다는 생각이 들었습니다! T1 삭제 트랜잭션 T2 답글 트랜잭션 ──────────────────────────────────────────── SELECT 부모 SELECT 자식 → 없음 SELECT 부모 → ACTIVE INSERT 답글 COMMIT DELETE 부모 COMMIT (제가 잘 분석한게 맞나 모르겠네요 ㅎㅎ) 물론 이렇게 꼬일 확률은 낮지만, 이런 케이스에 대해서는 select for update를 거는 것이 좋을지, 아니면 fk를 추가하여 정합성을 보장해줘야 할지, 쿠케님 의견을 묻고 싶습니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
bebe 댓글 1 좋아요 0 조회수 10

설계 트레이드 오프 링크 접속 안됨

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 2

https://eternitymwobject.tistory.com/43 를 접속했더니 이렇게 나오네요. 확인 부탁드립니다.

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
아라레 댓글 2 좋아요 0 조회수 18

테스트 질문, 어떤것을 사용할것인것에 대해서

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모름) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 현재 시점(26.8) 에서 강의를 듣고 있는데요. pdf 을 보면, 시간 지남에 따라 assertEquals() 내용이 달라 지듯이, 그 동안 강의 에서 배운 assertj 의 assertThat().isEqualTo()나, 다른 방법 들이 있어서 어떤 것을 쓰는게 맞는지 몰라서 여쭈어 봅니다. 첫 번째는 assertEquals(), assertThat()이고 두번째는 assertThrows() , assertThatThrownBy() 입니다. 영한님 이라면 어떤 것들을 쓰실지 궁금합니다. 답변 부탁 드립니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
생각하는자 댓글 1 좋아요 0 조회수 6

Shape 클래스 실습 코드 피드백 요청드립니다

미해결

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

안녕하세요, 강사님. Shape 클래스 실습을 진행한 결과물을 공유드립니다. 실습 내용을 바탕으로 도형의 크기를 부모 클래스에서 관리하고, 각 자식 클래스에서 기본 크기를 지정할 수 있도록 생성자를 구성해 보았습니다. 시간 괜찮으실 때 구현 방향에서 어색한 부분이나 개선하면 좋을 점이 있는지 간단히 봐주시면 감사하겠습니다. 또한 이번 실습에서 추가로 생각해 보면 좋을 내용이 있다면 함께 알려주시면 감사하겠습니다. 감사합니다. package java2_30; import java.util.Scanner; /** * 화면에 출력할 수 있는 도형의 공통 부모 클래스입니다. * * 현재 실습에서는 삼각형과 정사각형만 다루므로, * 가로와 세로를 구분하지 않고 하나의 size 값으로 크기를 관리합니다. */ abstract class Shape { private final int size; protected Shape(int size) { this.size = size; } protected final int getSize() { return size; } /** * 각 도형의 모양을 콘솔에 출력합니다. */ abstract void render(); } class Rectangle extends Shape { private static final int DEFAULT_SIZE = 4; public Rectangle() { this(DEFAULT_SIZE); } public Rectangle(int size) { super(size); } @Override public void render() { for (int i = 0; i < getSize(); i++) { for (int j = 0; j < getSize(); j++) { System.out.print("*\t"); } System.out.println(); } } } class Triangle extends Shape { private static final int DEFAULT_SIZE = 5; public Triangle() { this(DEFAULT_SIZE); } public Triangle(int size) { super(size); } @Override public void render() { for (int i = 0; i < getSize(); i++) { for (int j = 0; j <= i; j++) { System.out.print("*\t"); } System.out.println(); } } } class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("사각형은 0, 삼각형은 그 외 숫자를 입력하세요: "); int input = scanner.nextInt(); Shape shape; if (input == 0) { shape = new Rectangle(); } else { shape = new Triangle(); } shape.render(); scanner.close(); } }

  • java
  • 객체지향
  • jvm
  • data-structure
ice28 댓글 1 좋아요 0 조회수 7

재고 감소와 쿠폰 발급은 왜 서로 다른 방식으로 동시성을 제어하나요?

미해결

실습으로 배우는 선착순 이벤트 시스템

강사님 안녕하세요, 좋은 강의 여러번 반복해서 잘 듣고 있습니다. 재고 감소와 비교했을때 차이점이 궁금하여 문의드립니다. 안녕하세요 강사님 이전 재고 관리 강의와 차이에 대해 궁금합니다. 이전 질문을 참고하였으나 추가로 더 궁금한게 있어서 문의드립니다. 재고 감소와 쿠폰 발급의 차이점이 너무 헷갈려서 정리하고 있습니다. 두 경우 모두 한정된 수량을 여러 요청이 동시에 차지한다는 점에서는 비슷해 보입니다. 그렇다면 쿠폰도 이벤트 테이블에 잔여 수량을 100개나 300개로 설정하고, 재고처럼 수량을 차감한 뒤 사용자 쿠폰을 생성하는 방식으로 구현할 수 있지 않을까요? 강의에서는 쿠폰 발급의 정합성을 위해서 전체 로직에 락을 걸 필요가 없다고 하셨는데, 그러면 반대로 재고 감소 같은 경우도 마찬가지로 재고 감소의 정합성을 위해 전체로직에 락을 걸 필요 없이 다른 방법으로 하는게 더 나은 방법 아닌가요?? 비슷해 보이는 한정 수량 문제를 서로 다르게 푼 이유를 잘 모르겠습니다 ㅠㅠ

  • java
  • docker
  • spring-boot
  • kafka
  • redis
차니 댓글 0 좋아요 0 조회수 7

깃허브주소 궁금합니다.

미해결

코드로 배우는 스프링 웹 프로젝트 - Basic

강의 중에 내용 소스 공유 받고 싶습니다. 구멍가게코딩단 깃허브 주소 요청드립니다

  • java
  • jsp
  • spring
  • mybatis
실력자되긔 댓글 2 좋아요 0 조회수 10

mariaDB 설정

미해결

코드로 배우는 스프링 웹 프로젝트 - Basic

mariaDB 설정에서 create database springdb; 이거 나오는 쿼리구문 어디에서 공유받을 수 있나요?

  • java
  • jsp
  • spring
  • mybatis
실력자되긔 댓글 1 좋아요 0 조회수 9

섹션4 퀴즈 오타있어요.

미해결

클로드 코드의 정석: 실전 에이전틱 엔지니어링

(사진)

  • java
  • spring
  • 소프트웨어-설계
  • 인공지능(ai)
  • ai-agent
  • claude
  • 바이브코딩
kichun852 댓글 1 좋아요 0 조회수 24

유저 이미지 등록 에러

미해결

AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법

현재 인스턴스는 잘 떴고 health_check 도 문제없이 잘 되는데 이미지 등록을 하려고 하면 서버 에러가 납니다. 제가 자바쪽은 에러로그를 어떻게 봐야 하는지 잘 몰라서 서버쪽 에러 로그 확인 하지 못했습니다.

  • aws
  • docker
  • msa
  • container
  • ecs
lee zena 댓글 1 좋아요 0 조회수 22

service-discovery 프로세스 가동 이유

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요 강사님 양질의 강의 제공해주셔서 감사합니다 api-gateway yml 파일에 micro-service url에 매핑된 host 정보를 기입하셨는데요 이러면 service-discovery 프로세스를 가동시키신 이유가 뭘까요? 제가 이해하기론 service-discovery는 dns정도로 이해하고 있습니다

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
hotalibi 댓글 1 좋아요 0 조회수 22

AWS 배포 성능테스트

미해결

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 섹션 3 15강 수강 2. 어려움을 겪는 부분 아직 섹션3 15강밖에 수강하지 않았지만 예전에 배포했을때 설정 문제로 과금이 나간적이있어서 강의는 계속 들으면서 로컬에서 해보고 개인 프로젝트에 적용해보는것이 좋을까요? 아니면 둘 다 하는것이 좋을까요??

  • java
  • spring
  • mysql
  • redis
  • 이력서
개발자....? 댓글 1 좋아요 0 조회수 42

조건 반복문 질문: for 문 ?

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

for 문에서 초기화 -> 조검검사->참이면 처리->증감->조건검사->조건 감사-> 아닌가요? intc=0; for(I=1; I>3; i++) { c++; } printf("c=%d",c); 정답: ? 답변이 어려운 질문 좋은 질문 예시 3강 12분 35초에서 설명하신 반복문 조건식이 이해되지 않습니다. 왜 i < 10으로 작성하나요? 5강 08분 10초에서 나온 코드 실행 결과가 제 환경에서는 다르게 나옵니다. 아래는 제가 작성한 코드입니다. 정확한 강의 위치와 질문 내용을 함께 남겨주시면 더 빠르고 정확하게 답변드릴 수 있습니다.

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
마미에르 댓글 1 좋아요 0 조회수 44

안녕하세요 한번 더 문의드립니다.

미해결

카카오 면접관이 알려주는 문서기반의 프레임워크 통신 패턴을 위한 GraphQL

안녕하세요 평소에 hong님 강의를 수강하고 잇는 수강생입니다. 다름이 아니라 기존에 나눠주신 resolvers.js파일에는 새로 적어야 하는 코드에 대한 자료가 없습니다. 제가 못찾은 걸수도 있는데 현재로서는 보이지가 않습니다.

  • javascript
  • typescript
  • graphql
  • msa
  • 국비지원-부트캠프
잉꼬팡이 댓글 4 좋아요 0 조회수 53

보상트랜잭션 실패시 데이터베이스 저장하는데 그것조차 실패하면 어떻게 하나요??

해결됨

주문시스템으로 알아보는 분산트랜잭션

안녕하세요!!! 강사님!!! 3년차 백엔드 개발자입니다. 재고차감부터 쿠폰 그리고 분산 트랜잭션까지 쭉 너무 잘 듣고 있습니다!(이건 회사 계정이고 제 개인 계정으로 구매했습니다 ㅎㅎ) Orchestaration - 현재구조의 문제점과 해결방법 강의를 수강중인데, 보상트랜잭션 실패시 데이터 베이스에 저장하는것과 같이 장애가 났을 경우를 대비하는것 같은습니다. 여기서 궁금한게 실무에서는 어느정도 장애상황까지 대비를 하는지 궁금합니다. 예를들어 지금과 같이 데이터베이스에 실패한 기록을 남기는것조차 실패할 수도 있을것 같은데요... 만약 카프카를 쓴다고 해도 카프카 장애로 기록이 안된다면??? 이렇게 장애 상황을 계속 꼬리질문 하다보면 정말 끝도 없이 갈것 같은데... 실무에서는 어느정도 타협(?) 트레이드 오프(?)를 하는지 궁금합니다!! 추가로 혹시 강사님께서는 어떤 책으로 시스템 설계를 공부 하시는지도 궁금합니다..ㅎㅎㅎ 감사합니다!

  • msa
HJ 댓글 2 좋아요 0 조회수 42

run() 메서드 안에 지역변수 sum을 사용한 이유

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

[질문 내용] SumTask의 run()메서드 안 for문에서 result += i;를 하지 않고 지역변수인 sum을 사용하여 마지막에 result = sum을 하신 이유가 지역변수(sum)는 스택영역, 멤버변수(result)는 힙 영역에 관리되어, 매번 메인 메모리에 있는 result의 값을 변경하는 것이 아닌 cpu 코어의 캐시 메모리를 사용하는 것이 더 빨라서일까요?

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
ᄒᄉ 댓글 1 좋아요 0 조회수 61

7강 보고 있는데요.. 글자가 너무 작아요

미해결

Spring WebFlux + LLM 실전 구현

모니터 27인치 최대크기로 해도 너무 작아서 모니터 엄청 가까이 하고 봐야하네요.. 너무 불편해요..

  • java
  • spring
  • webflux
  • chatgpt
  • llm
YongIl Park 댓글 1 좋아요 0 조회수 31

무한 depth 구현 중 CommentPath 관련 질문

미해결

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요. 현재 27강 수강중입니다. 무한 depth 댓글 구현 중 CommentPath 관련 질문 있습니다. entity 레벨에서 path의 정합성 검증이 필요하지 않나 생각합니다. 1. path가 다섯글자 단위로 넘어오는지 2. path의 length()가 25자를 넘어가는지 위의 정합성과 관련되어 예시로 26글자의 path가 넘어오는 경우 테이블 컬럼이 varchar(25)이기 때문에 DB에 INSERT되지는 않겠지만 calDepth 메서드에서 26 / 5 는 5 depth로 계산되고 필요한 로직이 처리되지 않을까 생각됩니다.

  • java
threekkk 댓글 1 좋아요 0 조회수 42

코드 자료는 없는걸까요?

해결됨

카카오 면접관이 알려주는 문서기반의 프레임워크 통신 패턴을 위한 GraphQL

안녕하세요 hong님 강의를 수강하고 있는 수강생입니다. 다름이 아니라 코드 자료들은 따로 안보이는데, 직접 일시정지하고 쳐야하는 건가요? 아니면 제가 못찾은 걸까요?? 강의 일시정지 하고 코드를 치기엔 조금 힘들거 같아서 그렇습니다!

  • javascript
  • typescript
  • graphql
  • msa
  • 국비지원-부트캠프
잉꼬팡이 댓글 3 좋아요 0 조회수 66

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 2

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다. 예를 들어 채팅방 목록 화면에서 각 채팅방마다 다음 정보를 한 번에 보여줘야 한다고 가정하겠습니다 . ex) 채팅방 이름, 마지막 채팅 내용, 읽지 않은 채팅 개수 이 정보를 구하려면 room, chat, read_status 같은 여러 테이블을 함께 조회해야 하고 , N+1 문제를 피하려면 Querydsl 이나 JDBC 등을 사용해서 한 번의 쿼리로 조회하는 방식이 필요해 보입니다 . 이 경우 제 생각에는 기존 포트와 분리해서 , 조회 전용 port 와 query repository interface 를 application 계층에 두고 , adapter 계층에서 Querydsl/JDBC/MyBatis 등으로 구현하는 것이 해결책 같습니다. 이런 식으로 cqrs패턴을 적용하는 것이 유일한 해결책인가요? 혹시 더 나은 방법이 있는지 궁금하여 질문남깁니다. (강의 너무 잘 보고 있습니다)

  • java
  • spring
  • spring-boot
  • jpa
  • 리팩터링
  • ddd
jayuffh22 댓글 2 좋아요 0 조회수 78

DLQ의 수동 커밋에 대해서 질문있습니다.

해결됨

핵심만 빠르게 끝내는 실전 카프카(kafka)

처리에 실패한 메시지를 DLQ로 재발행해서 별도로 재처리하는 구조를 설계한다면 굳이 수동 커밋을 유지하지 않고 enable.auto.commit=true 로 바꿔도 무방한지 궁금합니다!

  • spring-boot
  • kafka
  • msa
  • spring-kafka
이찬원 댓글 2 좋아요 0 조회수 54

인기 태그

인프런 TOP Writers

주간 인기글