inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

MSA 아키텍쳐 DB관게

해결됨

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

MSA 구조에서 DB는 FK로 묶여있지 않고 다 분리된 테이블일까요? 아니라면 ERD 다이어그램도 추가해 주실 수 있으실까요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
최어진 댓글 1 좋아요 0 조회수 170

MSA 아키텍쳐 DB관게

해결됨

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

MSA 구조에서 DB는 FK로 묶여있지 않고 다 분리된 테이블일까요? 아니라면 ERD 다이어그램도 추가해 주실 수 있으실까요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
최어진 댓글 2 좋아요 0 조회수 67

[수정 건의] 문제3의 실행 결과

해결됨

김영한의 실전 데이터베이스 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요, 영한님. 중요한 내용은 아니지만, 강의자료 개선에 조금이나마 도움이 될까 해서 글 남깁니다. 요약: 문제3의 [실행 결과] 의 행 순서를 변경하는 것을 제안합니다. 본론: 문제3: 회사 주요 이벤트 타임라인 만들기 의 경우 '최신 이벤트가 가장 위에 오도록 내림차순으로 정렬' 할 것을 요구하고 있습니다. 현재 강의록의 [실행 결과] 에는 다음 사진과 같이 고객 가입 이벤트가 모두 상품 주문 이벤트 보다 아래에 위치하고 있고, " 고객 가입 이벤트의 날짜는 쿼리 실행 시점의 created_at 값에 따라 달라질 수 있다" 고 명시되어 있습니다. 수강생들이 위 사진만 얼핏 보고 섣불리 접근한다면, " (고객 생성 일시) 가 쿼리 실행 시점에 따라 달라지기는 하지만, 그래도 모든 상품 주문 이벤트 이후에 위치하는게 올바른 결과겠구나" 라고 판단할 위험이 있다고 생각해서 다음과 같이 수정하면 어떨까 의견을 제시합니다. 수정 이후: 모든 고객 가입 이벤트 행이 모든 상품 주문 행보다 위에 위치. 즉, 현재 [실행 결과] 에서 두 이벤트의 위치를 맞바꿈. 수정 제안에 대한 근거는 다음과 같습니다. 예제 데이터를 삽입할 때 users.created_at 컬럼의 경우 DEFAULT CURRENT_TIMESTAMP 로 추가했음. 수강생은 강의 오픈 날짜인 2025-08-01 이후에 쿼리를 실행하는 것이 보장되기 때문에 users.crated_at 컬럼의 값 또한 마찬가지로 보장됨. 상품_주문 이벤트의 이벤트_날짜 중 가장 최근은 2025-06-17 로 강의 오픈 날짜보다 이전 임. 따라서 모든 상품_주문 이벤트 또한 마찬가지로 보장됨. 따라서 모든 users.created_at 데이터는 orders.order_date 보다 최근임이 보장됨. 아래 사진은 참고용으로, 수강생인 제 경우의 실행 결과입니다. 위에서 설명한 바와 같이 고객 가입 이벤트가 항상 상품 주문 이벤트보다 그 시점이 최근임을 확인할 수 있습니다.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
dev.rudevico 댓글 1 좋아요 0 조회수 103

CommentApiTest 중 오류가 발생합니다

해결됨

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

섹션3 23강 댓글 최대 2 depth - CUD API 테스트 & 테스트 데이터 삽입 파트 수강 중 create 테스트를 실행하는데 오류가 계속 발생합니다 package kuke.board.comment.api; import kuke.board.comment.service.response.CommentResponse; import lombok.AllArgsConstructor; import lombok.Getter; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestClient; public class CommentApiTest { RestClient restClient = RestClient.create("http://localhost:9001"); @Test void create() { CommentResponse response1 = createComment(new CommentCreateRequest(1L, "my comment1", null, 1L)); CommentResponse response2 = createComment(new CommentCreateRequest(1L, "my comment2", response1.getCommentId(), 1L)); CommentResponse response3 = createComment(new CommentCreateRequest(1L, "my comment3", response1.getCommentId(), 1L)); System.out.println("commentId=%s".formatted(response1.getCommentId())); System.out.println("\tcommentId=%s".formatted(response2.getCommentId())); System.out.println("\tcommentId=%s".formatted(response3.getCommentId())); // commentId=123694721668214784 // commentId=123694721986981888 // commentId=123694722045702144 } CommentResponse createComment(CommentCreateRequest request) { return restClient.post() .uri("/v1/comments") .body(request) .retrieve() .body(CommentResponse.class); } @Getter @AllArgsConstructor public static class CommentCreateRequest { private Long articleId; private String content; private Long parentCommentId; private Long writerId; } } 코드는 강사님 코드를 복붙을 해 봤는데도 아래의 오류가 지속적으로 발생합니다 500 Internal Server Error: "{"timestamp":"2025-08-24T11:27:31.828+00:00","status":500,"error":"Internal Server Error","path":"/v1/comments"}" org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error: "{"timestamp":"2025-08-24T11:27:31.828+00:00","status":500,"error":"Internal Server Error","path":"/v1/comments"}" at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:102) at org.springframework.web.client.StatusHandler.lambda defaultHandler defaultHandler 3(StatusHandler.java:89) at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:698) at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:200) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:685) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.body(DefaultRestClient.java:631) at kuke.board.comment.api.CommentApiTest.createComment(CommentApiTest.java:32) at kuke.board.comment.api.CommentApiTest.create(CommentApiTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) DB를 봤을 때 parent_comment_id 가 NOT NULL이라 안 되나 싶다가도 강사님은 pdf의 create table comment ( comment_id bigint not null primary key, content varchar(3000) not null, article_id bigint not null, parent_comment_id bigint not null, writer_id bigint not null, deleted bool not null, created_at datetime not null ); sql문과 똑같이 만들었던걸 생각하면 아닌 거 같기도 하고 뭐가 문제인지 감이 안 옵니다 @Service @RequiredArgsConstructor public class CommentService { private final Snowflake snowflake = new Snowflake(); private final CommentRepository commentRepository; @Transactional public CommentResponse create(CommentCreateRequest request) { Comment parent = findParent(request); Comment comment = commentRepository.save( Comment.create( snowflake.nextId(), request.getContent(), parent == null ? null : parent.getCommentId(), request.getArticleId(), request.getWriterId() ) ); return CommentResponse.from(comment); } private Comment findParent(CommentCreateRequest request) { Long parentCommentId = request.getParentCommentId(); if ( parentCommentId == null) { return null; } return commentRepository.findById(parentCommentId) .filter(not(Comment::getDeleted)) .filter(Comment::isRoot) .orElseThrow(); } public CommentResponse read(Long commentId) { return CommentResponse.from( commentRepository.findById(commentId).orElseThrow() ); } @Transactional public void delete(Long commentId) { commentRepository.findById(commentId) .filter(not(Comment::getDeleted)) .ifPresent(comment -> { if (hasChildren(comment)) { comment.delete(); } else { delete(comment); } }); } private boolean hasChildren(Comment comment) { return commentRepository.countBy(comment.getArticleId(), comment.getCommentId(), 2L) == 2; } private void delete(Comment comment) { commentRepository.delete(comment); if (!comment.isRoot()) { commentRepository.findById(comment.getParentCommentId()) .filter(Comment::getDeleted) .filter(not(this::hasChildren)) .ifPresent(this::delete); } } } 서비스의 경우에도 딱히 차이점을 발견하지 못했고 혹시나 싶어 복붙을 해도 마찬가지의 오류가 발생합니다

  • java
  • mysql
  • spring-boot
jackt0506 댓글 2 좋아요 0 조회수 125

38강 editConfiguration에 active profiles 가 없어요

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

위와 같이 active profiles가 없는데 어떻게 하면 될까요?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
커디널스 댓글 1 좋아요 1 조회수 52

로컬 모니터링 구축에 대해 질문있습니다.

해결됨

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

Actuator, 프로메테우스, Grafana를 통해 운영 서버 모니터링 대시보드를 구축하려고 합니다. (CloudWatch는 일정 용량 이후 비용이 부과되는 문제로 Prometheus를 선택했습니다.) 근데 운영 서버에서 Actuator와 프로메테우스 서버를 띄우면 외부에서도 Actuator 가 제공하는 메트릭 정보뿐만 아니라, 프로메테우스가 수집한 정보를 9090 포트 번호를 통해 접근 가능하다고 생각하였습니다. 처음에는 Actuator의 정보를 ADMIN 권한을 가진 관리자만 접근 가능하도록 설정하였지만, Prometheus 서버에서 접근이 불가능한 문제가 생겼습니다. Prometheus와 Grafana를 통해 모니터링을 구축할 때, 데이터에 대한 보안을 강화할 수 있는 방법이 뭐가 있는지 궁금합니다.

  • java
  • spring
  • mysql
  • redis
  • 이력서
foureach2025 댓글 2 좋아요 0 조회수 109

코드성 테이블과 캐시에 대한 질문

해결됨

김영한의 실전 데이터베이스 - 기본편

안녕하세요, 영한님. 다른 수강생 분의 질문 글에 남겨주신 답변에다가 제 질문을 작성했는데 혹시 이에 대한 알람은 가지 않을까봐 질문글을 따로 올리고, 아래에 그 링크를 첨부하도록 하겠습니다..!! (현재 글은 추후 자체 삭제 예정입니다) 질문 글 링크 https://inf.run/Rywjc

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
dev.rudevico 댓글 3 좋아요 0 조회수 94

실무에서 인덱스 설계는 보통 개발 어느 시점에 진행하나요?

해결됨

김영한의 실전 데이터베이스 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 영한님이 제시해주신 가이드라인을 보면서 '모든 기능 요구사항을 기본적으로 구현한 후, 작성된 쿼리를 전반적으로 훑어보면서 인덱스를 설계' 하는 것이 가장 효율적일 것이라고 생각이 들었는데요. 영한님은 실무에서 인덱스 설계는 보통 개발 어떤 시점에 진행하시는지 궁금합니다.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
bebe 댓글 2 좋아요 0 조회수 111

gradle source sets가 없을때

해결됨

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

안녕하세요 8강 강의에서 멀티모듈 구조 만드실때 각 서비스에 디렉토리를 추가하는 과정에서 new -> directory 클릭했을 때 강사님은 경로명 입력하는 칸 밑에 gradle source sets가 떠서 쉽게 src와 test디렉토리 등을 추가하셨는데 저는 뜨지 않습니다.. 왜 그런걸까요??

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
유근찬 댓글 2 좋아요 0 조회수 102

카카오맵 API 를 사용해서 내컴퓨터의 갤러리맵 만들기

해결됨

파이썬으로 뭘 만들지? 남박사의 파이썬 알쓸파잡

해당 강의를 해볼려고 해도 카카오 개발자 사이트에서 'Web 플랫폼 등록'탭이 없는데 다른 방법이 없나요?

  • python
  • 웹-크롤링
  • gui
이종익 댓글 2 좋아요 0 조회수 119

모듈 간 의존성 관리에 대한 질문

해결됨

멀티 모듈 아키텍처로 구현하는 은행 서버 핵심 기능 [ Kotlin & Spring ]

안녕하세요. 강의 수강중에 의존성 추가에 대해서 의문이 들어 질문드립니다. 제가 26강까지 듣고 올리는 질문이라 후속 강의에서 리팩토링 되는 것이라면 넘어가주세요! 멀티모듈 프로젝트에서는 각 모듈이 각자의 의존성을 갖고 관리하도록 하는 것으로 이해하고 있었는데요. 현재 강의에서는 아래 의존성들이 여러 모듈에 흩어져있습니다. 이렇게 되면 의존성 관리 포인트가 늘어나 단점이 생길 것 같은데요. 하나의 모듈에서 각자의 역할과 책임에 맞게 의존성을 관리하는 것에 대해 강사님의 생각이 궁금합니다! spring data jpa bank-domain bank-event resilience4j bank-core bank-api 만약 위의 의존성들이 각자의 모듈에서 관리된다면 다른 모듈에서 사용할 수 있도록 특정 기능들을 wrapping 해서 제공해주는 방법이 맞을까요? 아니면 혹시 더 좋은 방법이 있을지 궁금합니다. spring data jpa bank-domain 에서 save() , 혹은 findById() 를 다른 모듈에서 사용할 수 있도록 인자만 받는 메소드를 제공한다면 bank-event 에선 id값 혹은 entity형식의 객체(필요시 model or dto 추가)만 넘겨 처리할 수 있으니 spring-data-jpa 의존성을 끊을 수 있을 것 같아서요.

  • java
  • spring
  • kotlin
  • mysql
  • spring-boot
1q2w3e4r 댓글 1 좋아요 0 조회수 126

data class 관련 질문입니다

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

강사님 안녕하세요! 강의를 듣다가 궁금한 부분이 있어서 질문드립니다. 다름이 아니라, 검색을 해보면 코틀린에서 Entity 정의 시, data class는 권장하지 않고 사용하지 말라는 글들도 나오는데 강의에서는 data class를 사용하셔서 조금 혼란이 오는데요 ㅠㅠ 혹시 실제 코틀린을 사용하는 회사들은 Entity를 정의할 때, 일반 class가 아닌 data class를 사용하나요?

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
BBBB 댓글 2 좋아요 0 조회수 109

remark-gfm

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

remark-gfm 설치 이후 모든 css 가 망가지고 글자와 이미지만 렌더링 되는데 뭐가 문제일까요? global css 에서 import 한것도 아니고 영상과 같이 Plugin 으로 했어요. next-mdx-remote 깃헙 보니까 업데이트도 1년 지났고 버그 로그 많던데 그거 때문이려나요? https://github.com/hashicorp/next-mdx-remote next 공식문서에서도 next-mdx-remote 는 더이상 없고 next-mdx-remote-client 만 있던데 그거 쓰면 되는걸까요?

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
주병규 댓글 2 좋아요 0 조회수 146

마크업 파트 가독성 향상 방법

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

전부 다 따라하면서 배우고 있습니다! 다만, 마크업 파트 에서 이렇게 글자 색으로 인해 가독성이 떨어지는데 마크업 파트 속성을 바꿀 방법은 없을까요?

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
주병규 댓글 2 좋아요 0 조회수 92

Next.js 블로그 결과물 공유 이벤트 진행 여부

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요, 선생님. 아직 디스코드에 Next.js 블로그 결과물 공유하면 실용적인 블로그 소스코드 받을 수 있는 이벤트 진행하고 있나요?

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
산독기 댓글 1 좋아요 0 조회수 93

[수업 노트] ISR 공식 문서 링크 변경

해결됨

한 입 크기로 잘라먹는 Next.js

현재 강의 수업노트에 첨부된 ISR 공식 문서 링크에 접속하면 SSR 관련 문서로 표시되고 있습니다. 문서 링크가 아래로 변경된 것으로 보입니다. https://nextjs.org/docs/pages/guides/incremental-static-regeneration

  • react
  • typescript
  • next.js
Next 댓글 2 좋아요 0 조회수 86

질문 있습니다

해결됨

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

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2-10 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 강의 잘 보고 있습니다. 이전 강의에서 로컬이 아니라, 리소스가 제한된 클라우드 환경에서 성능 테스트를 하는 것이 좋다고 이해했습니다. 그런데 인텔리제이에서 제공하는 Profile이 기능은 클라우드 환경에서는 따로 사용할 수가 없지 않나요?? 해당 기능을 어떻게 클라우드 환경에서 애플리케이션 성능 측정을 위해 사용할 수 있을까요? 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
blackhole124 댓글 2 좋아요 0 조회수 60

서브쿼리 메인쿼리 논리적 순서

미해결

김영한의 실전 데이터베이스 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의에서 서브쿼리가 먼저 실행된다고 설명해주셨는데, 그럼 메인쿼리 입장에서는 WHERE절이 먼저 실행되는거 아닌가요? 메인쿼리 입장에서는 FROM절 -> WHERE절 실행이니까 FROM먼저 실행되고, 그 다음에 서브쿼리(서브쿼리 내에서도 논리적 실행 순서 동일)가 실행되는건지 아니면 서브쿼리 즉 메인쿼리 입장에선 WHERE절이 먼저 실행되는건지 궁긍합니다.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
hxhxhx 댓글 2 좋아요 0 조회수 91

섹션 4 퀴즈 3번 문제 질문

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

A - str[6:]도 정답이지 않나요?

  • python
이용채(Yongchae Lee) 댓글 2 좋아요 0 조회수 87

인기 태그

인프런 TOP Writers

주간 인기글