안녕하세요 항상 강의 잘 수강하고 있습니다 ! 강의를 수강하다 질문이 생겨 여쭤보게 되었습니다. 강의 진행 시에는 Service 계층에서 Redis 설정을 적용시켰는데, Redis 설정은 Service 계층에서 적용하는 것이 일반적일까요 ? Repository나 Controller 계층에서도 걸어줘도 차이가 있는지 궁금해서 여쭤봅니다 !
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 6-4. 캐싱의 개념 3 2. 어려움을 겪는 부분 어떤 개념이 헷갈리시나요? 수업 자료를 보면 "Cache Aside는 구현이 간단하고 캐시 효율이 뛰어납니다. 하지만 데이터가 변경되었을 때 실시간으로 반영되지 않아 데이터 불일치 가능성이 있습니다."고 하는데, 왜 Cache Aside가 구현이 간단하고 캐시 효율이 뛰어난지 잘 이해가 가지 않습니다. Cache Aside에서는 애플리케이션 단에서 컨트롤을 다 해야 해서 구현이 길어지지 않나요? Cache Aside가 다른 전략과 비교했을 때 캐시 효율이 뛰어난 이유가 있을까요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 데이터 변경시 데이터 불일치에 대한 설명이 있는 것을 보면 혹시 해당 부분 설명은 Cache Aside보다는 Write Around Aside 에 대한 설명에 더 가깝지 않을까하는 생각도 해보았습니다.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 6- 12 여기까지 이해하신 내용은 무엇인가요? RedisTemplate으로 SETNX를 할 수 있고, 이 때의 리턴값은 boolean이다. 2. 어려움을 겪는 부분 어떤 개념이 헷갈리시나요? 수업 자료에는 RedisTemplate을 통해 SETNX 요청시 키 존재 유무와 상관없이 모두 True를 리턴한다고 설명 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 혹시 키가 이미 존재하면 RedisTemplate에서는 False 를 리턴하는 것이 아닐까요?
안녕하세요 강의 잘 듣고 있습니다. ApplyService와 Consumer서비스의 db관련 질문을 하려 합니다. 9:30분쯤부터 ApplyService와 컨슈머서비스를 분리해서 테스트를 진행하는데 AppliServiceTest를 보면 자신의 CouponRepository에서 count개수가 100개인지 체크하는것 같습니다. 저는 쿠폰생성 및 저장 로직을 전부 컨슈머서비스로 옮겨서 여기서 쿠폰테이블을 관리한다고 생각했는데 어떻게 ApplyService가 자신이 이전에 사용하던 CouponRepository에서 count 체크가 가능한건지 궁금합니다. 혹시 두 서비스가 하나의 db를 공유하는건가요?
안녕하세요, 강사님 덕분에 많은 인사이트를 얻으며 성장중인 수강생입니다ㅎㅎ 다름이 아니라 이벤트 페이로드 타입의 생성 방식이 팩토리 메서드 패턴이 아닌 빌더 패턴인 이유가 궁금합니다! 빌더 패턴의 장점은 생성자 오버로딩이 많을 때, 간편하게 사용할 수 있다는 장점이 있지만 필수인 필드에 null 이 들어갈 수 있다는 단점이 있다고 생각합니다. 그래서, 저는 빌더 패턴을 해당 객체의 필드 중 null 이 들어갈 수 있는 필드가 많을 때 사용하는 걸 선호하다 보니, 이벤트 페이로드 타입을 생성 할 때 일부 필드에 null 이 들어가는 걸까? 란 궁금증으로 질문이 생기게 되었습니다. 빌더 패턴에 대한 강사님의 의견이 궁금하며 이벤트에 기존에 사용하신 팩토리 메서드 대신 빌더 패턴을 사용하신 계기가 궁금합니다! 감사합니다 :)
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [33. 좋아요 수 구현] 에서 테스트 하는 화면에서요. 해당 방법대로 실행을 하면 동시성 문제가 발생합니다. Record has changed since last read in table 'article_like_count' 저는 MariaDB를 사용하고 있는데요. MySQL도 마찬가지로 기본 잠금 수준이 Repeatable Read 라고 알고 있습니다. 해당 기본 수준으로 실행하면 동시성 문제로 영상과 다른 결과를 보이게 됩니다. 따라서 잠금 수준을 Read Commited 나 Read Uncommited 로 변경하면 제대로 실행이 됩니다. 이렇게 하는 것이 정답인지 아니면 다른 원인이 있는건지 알려주세요.
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. @Query("select c from CommentV2 c where c.commentPath.path = :path") Optional<CommentV2> findByPath(@Param("path") String path); 위와 같은 방식으로 조회를 하면 인덱스 서치가 되지 않는 것 아닌가요? 아래와 같은 방법으로 해야 할 것 같은데.. @Query("select c from CommentV2 c where c.articleId = :articleId and c.commentPath.path = :path") Optional<CommentV2> findByPath( @Param("articleId") Long articleId, @Param("path") String path); 답변 부탁 드립니다.
Q. SQL 로 미리 테이블 작성하거나 인덱스 설정을 SQL 로 직접하는데 이유가 궁금합니다 인덱스 같은경우 jpa 에서 쓸수있는 옵션이 제한적이라 따로 SQL 로 관리한다고 듣긴했는데 테이블도 실제로 SQL 에서 하는지 궁금하고, SQL 로만 테이블 생성 인덱스 관리를 할경우 현업에서는 어떤 db 마이그레이션 라이브러리를 주로 사용하는지도 궁금합니다. Q. 참조관계를 DB 에서 걸지않고 논리적으로만 걸었을때 참조테이블에대한 조인은 어떤식으로 하는지 궁금합니다. MSA 기준으론 데이터베이스가 아예 분리될텐데 어떤식으로 조인하나요? 추가적으로 논리적으로 참조설계가 된 상황에서 @ManyToOne 사용이 가능한지궁급합니다. 예를들면 Comment 엔티티에서 parentCommentId 같은 같은 데이터베이스에 있는 테이블에 @ManyToOne 적용이 가능한지궁급합니다.
현재 JWT 부분까지 들었습니다! 강의를 들으면서 갑자기 궁금한 부분이 생겨 질문드립니다. 도메인 별로 현재 API (Controller) 도 나눠져있는데요, 이런 형태의 프로젝트(DDD 아키텍처)인 경우 @RestControllerAdvice를 활용한 글로벌예외처리는 어떻게 구성하시나요? 글로벌예외처리 전용 class를 만들고 특정 익셉션들을 구성 후 각각의 익센션에 대한 응답을 ResponseProvider 를 이용해서 하는지? 등... 너무 추상적으로 질문을 드려서 이해하실지 모르겠지만 요약하자면 도메인별로 구별되어 있는 프로젝트에서는 글로벌익셉션처리가 어떤 형태로 구성할 수 있는지 궁금합니다 ㅋ.ㅋ;
안녕하세요 게시판 강의 보면서 정말 잘 배우고 있습니다!! 국비학원 프로젝트 하던 때를 생각해보면서 듣고 있는데, 그때는 엔티티에 생성자를 만들어서 서비스에서 그냥 썼는데 본 강의에서 팩토리 메소드 형태를 사용하는 이유가 궁금했습니다!! (기술적으로 더 진보한 형태인지요) 그리고 객체마다 response를 만들어서 commentResponse, ArticleLikeResponse 같은걸 만들어 api 반환에 사용하는데, entity랑 필드도 다르지 않은데 굳이 이렇게 일일이 response 객체를 각각 만들어서 코드를 짜야하는지 궁금합니다!!
안녕하세요, 강사님. 빅데이터 파일럿 프로젝트 강의를 수강 중입니다. 현재 강의 내용대로 Server01과 Server02를 모두 실행했고, http://server.hadoop.com:7180 주소로 클라우데라 매니저에 접속을 시도했는데 웹 페이지 자체가 열리지 않습니다. 또한 강의 자료에서 로그인 아이디와 패스워드 정보도 찾을 수 없었습니다. 혹시 클라우데라 매니저 기본 접속 주소 기본 로그인 아이디와 패스워드 접속이 되지 않을 때 점검해야 할 설정 을 알려주실 수 있을까요? 처음 환경을 구성하는 단계라서 안내해 주시면 큰 도움이 될 것 같습니다. 감사합니다.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-6. 트랜잭션 실습 - 쿠폰 동시성 문제 해결 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 똑같이 멀티스레드 환경인데 successCount 는 AtomicInteger로 세팅되어 있고, currentParticipants 는 AtomicInteger가 아닌 이유가 궁금합니다. 이렇게 되면 Java단에서부터 currentParticipants++할 때 동시성 문제가 발생하지 않을까요? 3. 시도해보신 내용 GPT에 물어보니 AttributeConverter 사용하면 JPA에서도 AtomicInteger를 쓸 수 있다고 합니다.
안녕하세요 강사님 강의를 수강하는 학생입니다. 무한 스크롤링은 두 번째부터 보통 끝쪽 id 에 데이터를 기반으로 데이터를 불러오는 방식이 보통 커서 기반 페이지네이션과 큰 차이가 없는 건가요? (claude 나 ) 블로그 보면서 이것도 비슷한 개념인 거 같아서 질문 드립니다. @Entity @Table( name = "post", indexes = { @Index( name = "idx_post_board_created_id", columnList = "board_id, created_at DESC, post_id DESC" ), @Index( name = "idx_post_created_id", columnList = "created_at DESC, post_id DESC" ) } ) @Getter @NoArgsConstructor public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) } 이렇게 엔티티에 인덱스를 만들어서 사용하는지 궁금합니다. 강의에서 처럼 SnowFlake도 보통 저렇게 인덱스를 만들어서 활용하는지도 궁금합니다.
환경은 windows 11 64비트이구요, 자바 21, redis는 물론 docker 8.2.1 실행 중이엇구요 하지만 SplitShardedBloomFilterRedisHandlerTest 클래스에 mightContain 테스트 함수 실행 하면 첨부한 이미지 처럼 에러가 출력 됩니다. 아래는 docker 버전 정보입니다.
안녕하세요 강사님 redis 를 잘 몰라서 공부중인데, 인터넷에 검색해보니(각종 gpt, claude)등도 실무에서 클러스터링 이슈 등으로 0번 이외의 DB는 사용하지 않는다는 설명이 있는 있는데, 0 DB 외에 1~16DB도 실무에서 쓰이나요? https://redis.io/docs/latest/operate/oss_and_stack/reference/cluster-spec/ 에서도 0 DB만 multiple databases를 지원한다고 나와있고 string 자료구조 강의에서 0 : 인증, 1: 캐싱, 3: 상품목록 등을 관리한다는 언급이 있어서 질문드립니다.
아직 MSA 경험이 없다보니 질문을 드려봅니다. 메시지에 관련된 Entity를 공통 모듈로 뺀다고 하셨는데용 Lecture_1 라는 프로젝트, Lecture_2 라는 프로젝트가 있다고 가정을 했을 때 '공통 모듈' 이라는걸 별도의 프로젝트로 구성한다는 말씀이실까요? 아니면 아래와 같이 프로젝트 root외에 모듈을 별도로 잡아서 한다는 말씀이실까영? rootProject.name = 'Lecture_2' include 'common' <-- 공통 모듈? rootProject.name = 'Lecture_2' include 'common' <-- 공통 모듈? 아, 그리고 최근에는 MSA에 대한 단점이 명확해지고 있어서 Modular Monolithic 아키텍처도 생겨나고 있는데 강사님께서는 이 부분에 대해서 어떻게 생각하시는지도 궁금합니다!
안녕하세요 딩코님, 클라우드 환경에서 비용이 발생하지 않는 올바른 테스트 방법에 대해 여쭙고자 질문 남깁니다. 제 스스로 느끼기에, 제가 프리티어로 사용하고 있는 EC2 인스턴스 내부에서 k6 스크립트를 실행하게 되면 EC2 과부화는 물론 RDS 에도 몇백만건의 데이터가 삽입이 되니 비용적, 컴퓨팅 자원적 문제가 발생할 것 으로 생각이 됩니다. 그래서 혹시 다음과 같은 방법으로 클라우드 환경 테스트를 진행하면 될지 여쭤보고 싶습니다. 테라포밍을 통해 AWS EC2 + RDS 조합으로 서버 배포 배포된 해당 주소로 제가 가지고 있는 노트북(EC2 아니고 제 로컬 PC) 터미널에서 k6 스크립트 실행 이때도 비용문제가 발생하는지? -> 아니라면 저비용으로 테스트하는 국룰 방법을 좀 소개해 주시면 감사드리겠습니다 ! 강의 너무 재밌습니다 ㅋㅋㅋ 감사합니다 !
안녕하세요 딩코딩코 선생님. 다름이 아니라 궁금한 점이 있어 Q&A에다가 글을 올립니다. 6주차 까지 진행을 하며 현재 실제 업무를 하며 해결한 내역들에 대해 다시 한번 정리 해 보는 시간을 가지려고 합니다. 이러한 과정을 수행했을 때 혹시 피드백을 해 주실 수 있는지 궁금합니다.