묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Path Enumeration 방식 적용 후 redis 적용 방법 관련 질문
안녕하세요 강사님.강의에서 Path Enumeration 방식을 활용해 데이터베이스 조회 성능을 최적화하는 방법을 매우 유익하게 배웠습니다.실제 대규모 서비스 환경에서 이 조회 결과를 Redis로 캐싱하려고 할 때, 캐시를 저장하는 자료구조 선택에 대해 강사님의 의견을 듣고 싶습니다.현재는 Path를 기반으로 DB에서 계층 구조를 유지하며 정렬된 댓글 목록을 조회하고 있습니다. 이 결과를 Redis에 저장하는 방법으로 아래 두 가지를 고려하고 있습니다.1. List 구조 (LRANGE)장점: DB에서 조회한 정렬 순서를 그대로 Redis에 저장할 수 있어, 조회 시 한 번에 가져올 수 있습니다.고민: CUD(특히 중간 삽입) 발생 시 전체 List를 삭제하고 DB에서 다시 조회해 재저장해야 하므로 비효율적일 수 있습니다.2. Sorted Set 구조 (ZADD)장점: 각 댓글을 멤버로 저장하고 Path 값이나 정렬 기준을 score로 부여하면, CUD 발생 시 해당 멤버만 ADD/REMOVE로 처리할 수 있어 갱신이 효율적입니다.고민: Path 기반의 정렬 값을 Redis의 score로 매핑하는 과정이 다소 복잡합니다.이처럼 캐싱 로직의 구현 복잡도(Sorted Set)와 갱신 효율성(List의 TTL 전략) 사이의 균형을 고려할 때,강사님께서는 무한 depth 댓글 구조를 캐싱할 때 어떤 Redis 자료구조가 더 적합하다고 생각하시는지 궁금합니다.감사합니다.
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
OutBox 패턴에 대한 질문입니다.
안녕하세요 ! 강의 잘 듣고 있습니다.최근 OutBox 패턴을 사용해보려고 시도중입니다 !CDC도구를 사용하지않고 어플리케이션에서 폴링을 구현한다고 하였을 때 폴링전용 어플리케이션을 따로 두어야 하는지 궁금합니다.ex) 주문서버에서 DB에 저장 -> 폴링 서버에서 DB에 저장된 이벤트를 폴링으로 조회 후 메시지 발행이렇게 생각한 이유는 주문서버에 폴링을 구현한다면 스케일 아웃 상황에서 폴링 로직도 저절로 스케일아웃되기때문입니다.여러개의 폴링 로직이 같이 돌아가면 데이터가 꼬일 수도 있지 않을까 합니다.어플리케이션 폴링구조의 outbox 패턴 구현에 대한 정석이 있는지 궁금합니다.
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
kafka 컨슘은 실시간 인가요?
실시간 이라면 stream하고 어떻게 차이가 나는걸까요?
-
미해결김영한의 실전 자바 - 기본편
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의를 듣다가 궁금한 부분이 있어 질문 드립니다. this 와 super의 호출 순서는 왜 중요한가요?개념으로 이해하기에는 부모에 해당하는 super가 있어야 자식에 해당하는 this 를 호출할 수 있다고 생각하고 있습니다. top -down으로 이해하고 있는데 이것외에도 중요한 이유가 있을까요?
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
8강 도메인 모델과 DDD 내용에 대해 질문있습니다.
8강 도메인 모델과 DDD 에서코드의 내용이 도메인에도 반영이 되어야 할 때도 있다고 하셨는데 예시를 들어 주실 수 있을까요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
표준 예외와 커스텀 예외 사용 전략 질문
안녕하세요. 수업 내용과는 크게 관계가 없지만... 예외처리 관련 내용에 대한 질문을 드립니다. 스프링이 제공하는 표준 예외(IllegalArgumentException, IllegalStateException)와 비즈니스 로직을 표현하는 커스텀 예외(NotFoundUserException) 사이에서 표준 예외를 사용하는 경우와 커스텀 예외를 사용하는 경우에 대한 기준을 알 수 있을까요? 감사합니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
도메인의 응집도와 모델 복잡도간 밸런스 고민
강의 너무 재미있게 듣고 있습니다.도메인이라는 개념에 대해서 고민하다가 궁금한 사항이 생겨서 질문드립니다. "도메인 모델이 비즈니스 규칙을 모두 내포하면 응집도는 높아지지만, 복잡도도 함께 커집니다. 이때 어디까지를 도메인 모델에 포함시키는 게 적절할까요?"
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
Application Service와 Domain Service를 명확하게 이해한 건지 궁금합니다.
Application Service에서는 흐름을 관리하고 (예를 들면 DB에서 데이터를 가져오는 등) Domain Service는 복잡한 비즈니스 로직을 처리하는 역할로 이해를 했는데 이해한 것이 맞을까요?
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
빈약한 도메인 모델을 보완하기
안녕하세요. 빈약한 도메인 모델에 관하여 질문이 있습니다.현재 개인적으로 진행하는 프로젝트에서 데이터 홀더 역할정도만 하는 빈약한 도메인 모델이 있습니다.repository에는 테이블의 상태 컬럼을 업데이트하는 메소드가 존재하는데 이를 도메인 모델 내부에 메소드를 만들어 업데이트하고 repository의 save를 통해 엔티티의 상태를 update하는 것이 강의에서 의도한 내용으로 이해했는데 맞을까요?추가로 이런 경우(비즈니스 로직이 복잡하지 않은)에 꼭 도메인 모델이 없어도 될지 궁금합니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
JAVA 질문입니다. 5-2.LINE 인턴 채용 코딩 테스트 에서 List에 Map<Integer, boolean>을 사용한 이유가 궁금합니다.
일단 자바질문이라 죄송합니다. ㅎㅎㅎ 1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 5-2.LINE 인턴 채용 코딩 테스트 입니다.어떤 알고리즘을 학습하고 계신가요? BFS 내용입니다.여기까지 이해하신 내용은 무엇인가요? time단위로 체크하기위해 visited list와 for문을 사용하는것을 이해했습니다. 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? visited에서 Map에 true를 받는 이유가 궁금합니다.코드의 어떤 로직이 이해가 안 되시나요? visited에서 Map에 true를 받는 이유가 궁금합니다.어떤 개념이 헷갈리시나요? List<List<Integer>>를 사용 할 수 있을꺼 같은데 map을 사용한 이유가 궁금합니다. 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요? 강의를 10번정도 다시본거같습니다.에러가 발생했다면 어떤 에러인가요? 초반에 while문 탈출조건을 잘못설정하여 무한루프가 돌았습니다.현재 작성하신 코드를 공유해주세요public static int solution(int c, int b) { int time = 0; Queue<int[]> q = new LinkedList<>(); q.add(new int[]{b, 0}); List<List<Integer>> visited = new ArrayList<>(200001); // [{},{} .... 20만개] for (int i = 0; i < 200001; i++) { visited.add(new ArrayList<>()); } while (c <= 200000) { c += time; if (visited.get(c).contains(time)) { return time; } time++; int qSize = q.size(); for (int i = 0; i < qSize; i++) { int[] cos = q.poll(); int nextB = cos[0]; if (nextB - 1 >= 0) { visited.get(nextB - 1).add(time); q.add(new int []{nextB - 1, time}); } if (nextB + 1 <= 200000) { visited.get(nextB + 1).add(time); q.add(new int[]{nextB + 1, time}); } if (nextB 2 <= 200000) { visited.get(nextB 2).add(time); q.add(new int[]{nextB * 2, time}); } } } return 0; } 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영속성 컨텍스트는 1차 캐시와 쓰기 지연 메모리가 있다고 강의에서 배웠습니다. 이 부분은 클라이언트단에서 관리하는 것인지 서버라면 어디에 저장되고 어떻게 관리되는 메모리인지 궁금합니다. (ex. 힙 등)
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
IntelliJ 한글 깨지는 현상 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이전에 Spring MVC 강의에서는 한글이 잘 나왔었는데, Java 강의 시 설정을 잘 못 헀는지.. 추가 설정이 필요한건지,한글이 깨지는 현상이 있어서, 처리법이 따로 있는지 문의 드립니다.Java는 강의 따라하면서 21로 설정 한 상태입니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
JPA entity와 도메인 모델을 분리하는 케이스에 대한 질문입니다.
JPA entity와 도메인 모델을 분리하는 케이스에서 데이터 저장 기술이 바뀌는 경우 Spring Data를 사용하면 해당되지 않는다고 하셨는데 JPA에서 MyBatis로 변경하는 경우도 Spring Data로 커버가 가능한가요? 회사에서 JPA로 개발을 진행중인데 MyBatis로 마이그레이션을 해야할수도 있어서 질문드립니다.
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
메세지 저장 관련 질문입니다
카프카 메시지 저장 방식에 대한 질문카프카에 대해서 잘 알지 못할때 카프카에 메시지가 저장되어 편리하다는 이야기를 들었습니다. 그래서 AWS SQS에서 카프카로 전환하면 별도의 메시지 저장소가 필요 없을 것 같았는데, 강의를 들어보니 장기 보관이 필요하면 결국 따로 저장해야 하는 것 같더라고요.질문:장기 보관이 필요한 메시지는 별도 저장소(DB, S3 등)에 저장하시나요?카프카 자체 저장만으로 충분한 경우와 별도 저장이 필요한 경우를 어떻게 구분하시나요?
-
미해결이펙티브 자바 완벽 공략 3부
42번 아이템의 아래 요약본이 41로 되어있습니다.
정정 부탁 드립니다~
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
자원 정리시 에러가 발생 했을 때 메모리 상황 및 실무에서 로그 확인 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 안녕하세요 강의 잘 듣고 있습니다. 자원정리에 대한 강의를 듣던 와중에 OS단의 메모리 상황과 실무에서 처리 방법이 궁금하여 질문드립니다. [질문 내용]강의 내용 자원 정리를 하다가 나는 에러 (CloseException) 등에 대해선 try-catch로 잡은 뒤, log만 남긴 뒤 무시하고 있음 궁금한 점 자원 정리를 하다가 에러가 나면 자원이 정리가 안된 채로 메모리에 남아있을 것 같습니다. 이를 추후 로그를 확인하고 일괄 수동 정리 처리를 하는지, 아니면 보통 자원마다 동작 타임 같은 게 설정되어 있어서 자동으로 정리되기 때문에 신경쓰지 않고 넘어가는지 궁금합니다. 만약 첫번째 질문에서 추후 로그를 확인하고 일괄 수동 정리 처리를 하는게 맞다면, 자원정리 도중 뜬 에러 관련한 것만 로그에서 추출해서 확인한다던지 어떤 방식으로 로그에서 필요한 내용만을 효율적으로 확인해서 처리하는지 궁금합니다. (참고로 이전에 김영한님 강의에서 Logger를 AOP를 이용해 남겨 양식을 통일화 시키고 레벨을 통해 효율적으로 확인하는 방법은 확인하였습니다.)
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
함수형 프로그래밍 적용 범위/원칙
질문 1. 자바는 인터페이스와 클래스로 설계와 구현을 나눠 유지보수의 효율성을 높이는 언어인데, 함수형 프로그래밍은 언제 쓸까요? 실무에서 함수형을 적용하는 범위/원칙(불변, 부작용 분리 등)가 궁금합니다! 질문 2. stream vs for-loop 선택 기준이 궁금합니다. 가독성을 위해서 또는 단순 변환 및 집계일 때 이외에도 스트림을 사용하는지, 성능적으로는 어떤 것이 더 좋은지 등도 궁금합니다.
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
아키텍쳐 선택의 순수한 질문드립니다.
안녕하세요 토비님! 순수한 궁금증이 생겨서 질문 드립니다!아키텍처마다 장단점이 있다고 생각합니다. 프로젝트의 규모나 확장성 여부에 따라 어울리는 아키텍처가 다를 것 같은데요, 토비님은 현업에서 어떤 기준을 가장 중점적으로 두고 아키텍처를 선택하시는지 궁금합니다!
-
미해결김영한의 실전 자바 - 기본편
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]기본형과 참조형 - 참조형과 메서드 호출 - 활용 강의 자료 보고 생긴 궁금증입니다!자바에는 객체 생성 시 초기화를 담당하는 "생성자(Constructor)"가 있는데, createStudent()와 같은 팩토리 메서드 패턴과 일반 생성자를 사용하는 것의 장단점이나, 어떤 상황에 어떤 방법을 사용하는 것이 더 적절한지 궁금합니다!
-
해결됨토비의 스프링 6 - 이해와 원리
오브젝트와 인스턴스
안녕하세요. 오브젝트와 인스턴스에 대해 제가 기억하고 있는 비유가 하나 있습니다."오브젝트가 소나타라면, 돌아다니는 소나타 하나 하나가 인스턴스이다."이 비유는 적절한 비유인가요? 혹은 오해의 여지가 있는 비유일까요?