묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
DAP 자격증 현업에서 유용한가요?
DAP 데이터 설계 자격증 현업에서 유용하거나 인정해주는 자격증인가요
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
mysql을 가상 서버에 설치해도 강의에서 진행되는 내용을 따라서 실습하는데 영향이 없을까요?
안녕하세요 강의 섹션2를 진행하는 중에 질문드립니다. 제 개발환경은 윈도우 os를 쓰고 있어 리눅스 환경에서 mysql을 설치하고자 가상머신에 ubuntu os 서버를 생성하여 mysql을 설치했는데요. 이렇게 해도 뒷부분 강의까지 실습을 따라가는데에 영향이 없는지 문의드립니다. 개발환경과 동일한 서버에 mysql을 설치해야 한다면, 다시 설정하려고 합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
PK타입 UUID
물리적 모델링에서 PK의 타입을 선택할 때 대부분 BIGINT를 사용하고 용량 차이도 크지않다는 강의가 매우 좋았습니다.그런데 논리적 모델링에서 PK로 UUID도 사용한다고 들었는데 UUID는 128바이트로 16바이트로 정수 PK보다 2배 더 크고 식별하기도 힘들것이라고 생각되는데 사용한 경험이 있으실까요?아니면 어떠한 상황에서 장점이 있는지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
개발자로서 차별화
AI 도구가 발전한 지금, 개발자로서 차별화되는 실력은 어떤 부분에서 나타나나요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
무한 뎁스 댓글 테스트 데이터 삽입 질문
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.2뎁스 댓글 목록의 테스트 데이터 삽입 시에는 계층 구조까지 파악할 수 있게끔 작성이 되었는데무한 뎁스 댓글의 테스트 데이터 삽입은 계층 구조로 생성하지 않으신 이유가 궁금합니다!
-
미해결은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스
Kotlin data class 엔티티에서 copy로 수정 후 save하는 이유가 있을까요?
data class로 엔티티를 정의해서 copy로 변경 후 save하는 방식을 사용하셨는데, 일반적으로는 JPA의 더티 체킹을 이용해 변경 감지를 활용하는 경우가 많습니다.혹시 copy 방식을 사용하신 게 의도하신 설계 방향일까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 정보와 게시글 조회수 동시에 필요한 API 조회 질문
현재처럼 서비스 구조가 거의 테이블 단위로 DB와 API 서비스가 분리될 때,이런 구조에서 화면에서 리스트 형태로 두 도메인 데이터를 함께 조회해야 하는 경우가 있을 것 같습니다.예를 들자면 게시글과 게시글 조회 수를 함께 보여주는 리스트 API가 필요한 상황에서,단건 조회라면 프론트에서 별도로 API를 호출해도 괜찮을 것 같은데,페이징 처리나 리스트 형태로 여러 데이터를 묶어서 조회해야 할 때,실무에서는 보통한 서비스에서 다른 서비스를 RestClient(Feign 등) 로 호출해서 데이터를 합치는 방식으로 처리하는지,아니면, 같은 도메인 서비스로 묶어버린다던지아니면 프론트엔드에서 각각의 API를 호출한 뒤 병합하는 방식으로 처리하는지궁금합니다.실제 현업에서는 이런 경우 어떤 접근 방식을 주로 사용하나요?
-
미해결김영한의 실전 데이터베이스 - 기본편
데이터 검증 방법 질문입니다
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)CHECK 제약조건을 최후의 방어선으로 활용한다고 말씀해주셨는데제약 조건 이외에도 DBMS 에서 별도로 제공해주는 데이터 검증 방법이 존재하나요?그리고 실무에서는 이런 기능들을 제약조건과 어떻게 활용하는지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
정말 별 거 아니긴 한데요
6. SQL - 데이터 가공, 8페이지 LENGTH() 예시 부분오탈자도 아니고 정상적으로 실행되는 거 알지만 다른 쿼리문들은 알리아스가 대문자인데 여기만 소문자라서 제보합니다. 잘 보고 있습니다 ㅎㅎ 좋은 강의 감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
실제 실무에서도 이런식으로 쿼리를 작성하는지 궁금합니다!
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요.향로님의 추석 챌리지에서 우연히 제목을 보고 바로 구매했는데 아직 완강하지는 못했지만 정말 좋은 강의 같습니다!선배 개발자님이 개발하시는 느낌으로 보고있습니다! ㅎㅎ궁금한 점은 혹시 실무에서도 이런식으로 서브쿼리를 이용해서 대규모 데이터에 대해서 처리를 하는지가 궁금해져서 질문 남겨봅니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
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 자료구조가 더 적합하다고 생각하시는지 궁금합니다.감사합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
실전 2편에서는 어떤 것들을 준비 중인지 궁금합니다
안녕하세요 강사님 강의 너무 잘 듣고 있습니다! 아직 많은 DB설계를 해보진 않아서 알려주시는 개념들이 차곡차곡 잘 정립되는 것 같아 도움이 많이 되고 있습니다.실제 조금 더 복잡한 프로젝트들에서의 DB 설계, 성능이나 쿼리들도 궁금한데 혹시 앞으로 이에 관한 내용들도 강의하실 예정에 있으신지 궁금합니다. 또 실전 2편이 기다려지는데 어떤 것들을 준비 중에 있는지 궁금합니다!
-
미해결김영한의 실전 데이터베이스 - 기본편
이해하기 쉬운 SQL 코드 작성 배울 수 있는 자료 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]> ALL()이나 > ANY() 대신 MAX, MIN 집계 함수를 사용하는 방식이 더 이해가 잘 된다고 말씀해주셨는데요, 저도 그게 직관적으로 느껴졌습니다. 😊혹시 이런 best practice를 배울 수 있는 자료가 있을까요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
PK 타입에 관한 문의
강의를 너무 잘 듣고 있습니다.PK 타입과 관련되어 문득 궁금한 점이 생겨 문의 드립니다.혹시 대규모 시스템에서 UUID를 PK를 사용할때 실무에서 고민하셨던 팁이 있으신지 궁금합니다.보안성이나 마이그레이션 가능성이 있는 테이블들에 부분적으로 UUID를 적용해 보았으나, 대규모 환경에서는 어떤 설계 팁이 있을지 궁금하네요.감사합니다^^ * 이건 질문은 아니나 사소한 오타 제보입니다.수업 자료중 1-A. 윈도우 - MySQL 설치 안내 파일의4P 맨 아래'mysql-installer-community-8.0.x.dmg`로 되어 있습니다. 참고하시면 좋을 것 같습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
락 오래 점유 시 장애 발생 가능성 질문
9:55 쯤에락을 오래 점유하면 발생하는 문제는 치명적이고 다양하다.리소스 고갈 등으로 인해 장애가 발생할 수 있는 것이다.지식공유자님께서는 오래 점유하는 상황에서 겪으셨던 문제가 있었나요?좋아요라는 게, 네트워크 문제가 아닌 이상 빠르게 끝날 처리인데, 혹시 좋아요 말고도 (다른) 쓰기 상태에서 락을 오래 점유하고 있을 때 어떤 문제를 겪으셨는지, 어떻게 해결하셨는지 러프하게라도 말씀해 주시면 감사드리겠습니다!! 감이 잘 안 와서 궁금해서 질문드립니다.
-
해결됨Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기
댓글 생성, 삭제 시 게시글의 댓글 수 증감 로직 질문
안녕하세요. 코드에서 궁금한 점 질문드립니다.댓글 생성, 삭제 시에 게시글의 댓글 수 증감 로직이 아래 예시 코드처럼 CommentService에서 이루어지고 있는데 과한 책임이 아닌가 싶어서요. 실무에서는 어떻게 나누게 되는지 궁금합니다. public CommentResponse createComment(Long postId, CommentRequest request) { Post post = postRepository.findById(postId) .orElseThrow(() -> new IllegalArgumentException("게시글을 찾을 수 없습니다.")); Comment comment = Comment.builder() .content(request.content()) .postId(postId) .createdAt(LocalDateTime.now()) .updatedAt(LocalDateTime.now()) .build(); Comment newComment = commentRepository.save(comment); post.increaseCommentCount(); postRepository.save(post); return CommentResponse.from(newComment); }
-
미해결김영한의 실전 데이터베이스 - 기본편
조건절의 위치 관련 질문사항
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]조인을 이용시 on절 뒤에 and를 이용해서 추가 조건절을 이용하는 방식과 where 절에서 조건절을 넣는 방식중 유의미한 성능상에 차이가 있는지 궁금합니다. 추가적으로 어떤 방식이 좀더 정돈된(?) 방식인지도 궁금합니다.
-
해결됨카카오 개발자와 함께하는 워크플로우 기반의 대용량 트래픽 처리 기법 [ By. 비전공자 & Kakao 개발자 ]
전체적인 플로우에 대해 질문드립니다.
이론 부분을 제가 이해를 잘 못해서 질문드리는 것 같은데요,Kafka와 Debezium 까지의 전반적인 그림은 그려지는데temporal(acitivity나 workFlow클래스 등) 까지 합쳐졌을 때의 플로우가 잘 이해가 가지 않는데구상하신 아키텍처를 모두 합친 플로우가 궁금합니다!
-
해결됨카카오 개발자와 함께하는 워크플로우 기반의 대용량 트래픽 처리 기법 [ By. 비전공자 & Kakao 개발자 ]
Temporal에 대해서 더 알고 싶어요.
교육을 듣다보니 Temporal에 대해서 더 알고 싶은데Temporal 공식 사이트는 너무 방대하고, 사용법 위주로 설명되어 있어서, 혹시 내부 아키텍처 같은 내용을 참고할 수 있는 자료가 있을까요?
-
미해결김영한의 실전 데이터베이스 - 기본편
강의에서 나온 IN 최적화 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 이번 복합 인덱스3 강의에서 인덱스 활용 팁으로 범위 조건을 IN절로 바꿔 최적화하는 부분을 설명해 주셨습니다. IN이 마치 OR처럼 변화될 수 있다고 설명해 주셨고 실제 쿼리 실행 시에 이를 확인할 수 있었습니다.(강의 시간 18분 경) 그런데 이후 비유해주신 쿼리에서는 UNION ALL을 사용하셨습니다. 저는 OR과 UNION ALL이 동일한 기능을 수행한다 생각했지만 실제로 눈으로 확인하고 싶어서 다음 세가지 쿼리를 모두 EXPLAIN, ANALYZE 해보았습니다. 1) 기존 IN 쿼리EXPLAIN ANALYZE SELECT * FROM items WHERE category IN ('패션', '헬스/뷰티') AND price = 20000;2) OR로 풀어낸 쿼리EXPLAIN ANALYZE SELECT * FROM items WHERE (category = '패션' AND price = 20000) OR (category = '헬스/뷰티' AND price = 20000);3) UNION ALL 로 풀어낸 쿼리EXPLAIN ANALYZE SELECT * FROM items WHERE category = '패션' AND price = 20000 UNION ALL SELECT * FROM items WHERE category = '헬스/뷰티' AND price = 20000; 그 결과 2)의 처리 cost는 1.41, 3)의 처리 cost는 0.7로 나타났으며, 1)은 2)와 동일하게 실행되었습니다. 여기서 다음 의문이 나타났습니다. 1) IN 최적화는 OR 또는 UNION ALL 방식으로 옵티마이저가 상황에 따라 선택하나요? 혹은 OR 방식으로만 처리하나요?2) OR, UNION ALL을 모두 사용할 수 있을 때, 언제 각각을 사용하는 것이 더 좋을까요? 그리고 위 경우에서는 왜 UNION ALL이 더 cost가 작았을까요?3) 만약 새로운 카테고리가 추가된다면 모든 IN 쿼리에 해당 카테고리를 추가할 수도 있을 것 같습니다. 그래서 애플리케이션 계층(JPA 등으로)에서 category >= '패션'인 SELECT DISTINCT쿼리 1번, 해당 값을 통해 IN에 넣어주는 쿼리 1번, 총 2번 쿼리를 실행하는 방식으로 바꾼다면 기존 쿼리를 수정하지 않아도 괜찮을 것 같은데 실무면에서 어떻게 생각하시는지 궁금합니다! 긴 질문이었습니다. 감사합니다!