묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
redis 적용을 위한 service 반환값
안녕하세요. redis 강의를 통해 간단한 프로젝트로 적용을 하려고 합니다. @Cacheable( value = "reviewList", key = "'review:store:' + #storeId + ':page:' + #pageable.pageNumber", cacheManager = "reviewCacheManager", condition = "#pageable.pageNumber == 0") @Transactional(readOnly = true) public Page<ResViewReviewDto> getReviews(UUID storeId, ReviewRepositorySearchConditionDto condition, Pageable pageable) { Page<ResViewReviewDto> reviews = reviewRepository.findReviews(storeId, condition, pageable); return new PageImpl<>(reviews.getContent(), pageable, reviews.getTotalElements()); }원래는 return reviews를 했더니 계속 조회를 누르면 ClassCastException: LinkedHashMap cannot be cast to Page 이 오류가 나오게 됩니다. 강의에서는 그냥 getContent를 List로 반환값을 보냈는데 혹시 위 코드처럼 new PageImpl 형식으로 return 해도 괜찮을까요?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
부하 테스트 환경 구성에 대한 질문
부하 테스트를 스테이징 환경에서 진행하려고 합니다. 이때 정확하고 신뢰도 높은 결과를 얻기 위해서는 EC2, DB 스펙 등의 인프라와 데이터 규모까지 운영 환경과 완전히 동일한 조건에서 테스트해야만 하는지 궁금합니다. 만약 현실적인 비용 문제로 환경을 100% 동일하게 구성하기 어렵다면, 어느 수준까지 환경을 맞춰야 유의미한 데이터를 얻을 수 있을지 질문드립니다.
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
강의 질문 - JSON 관련
안녕하세요. 좋은 강의 진행해 주셔서 감사합니다.강의 수강 중 JSON 관련하여 의견을 여쭤보고 싶은 내용이 있습니다.기존 RDB를 통해 JSON 데이터를 저장하면 기존 데이터와 연계성이 좋다는 장점이 있을 것 같습니다.다만, 성능을 고려하면 MongoDB와 같은 NoSQL DB를 도입하는 것이 좋은 상황이 있지 않을까 생각합니다.특정한 상황마다 어떤 방식으로 시스템 인프라를 운영하는게 좋을지판단하시는 기준이나 방법 또는 노하우가 있으실지 궁금합니다.감사합니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
부하 테스트에 대한 문의드립니다
안녕하세요 재성님. k6 공식문서에 보면 시나리오라는 개념이 있는데요. 현업에서 부하 테스트할때 로그인 이후에 처리되는 로직에 대한 부하 테스트를 진행한다면. 이때 vUser 수가 100명이라하면이때는 회원 테이블에 더미데이터를 만들어두고 진행할 까요? 아니면 로직에 대한 부하가 아니라면특정 페이지 접근에 대한 테스트로 진행될까요?(강좌에서는 시나리오보다는 특정 페이지에 대해서 한 느낌이였습니다) 현업에서는 K6 를 어떻게 다루시는지 문의드립니다 감사합니다.
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
mysql에서 text vs json
어떤 상황에서 text를 쓰고 어떤 상황에서 json을 쓰는게 좋을까요? 현재는 json을 이용해서 쿼리를 사용할 사용성이 없지만 저장, 조회에 큰 비용이 발생하지 않는다면 추후를 위해서 json 타입으로 선언하는게 좋을까요?
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
강의 중 추가 질문 사항
강사님 안녕하세요, 추가적인 질문사항이 있습니다.JSON 데이터 마이그레이션 시 주의사항과 베스트 프랙티스에 대해 알 수 있을까요?JSON Injection 공격을 방지하는 방법도 알고 싶습니다.JSON 컬럼의 압축과 스토리지 최적화 기법에 대해서도 알고 싶습니다.
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
강의 중 궁금사항 질문
안녕하세요, 해당 강의를 들으면서 추가적인 질문이 있어서 질문드립니다. 질문은 아래와 같습니다.JSON 인덱스 생성이 쓰기 성능에 미치는 영향은 어떤게 있을까요?물론 AI Agent에게 물어봐서 해결이 가능하지만 강사님 생각이 궁금하여 질문 드려봅니다!
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
강의 중 추가 질문
강사님 안녕하세요, 먼저 강의를 잘 듣고 있다는 점을 미리 말씀드리고 질문 드릴려고 합니다.몇 가지 질문들이 있는데요. 질문 내용은 다음과 같습니다.JSON과 정규화된 테이블 중 어떤 경우에 JSON을 선택해야 하나요?JSON 데이터에 대한 트랜잭션과 동시성 제어 관련해서도 조금 궁금합니다.JSON Schema validation을 통한 데이터 무결성 보장 방법에 대해서도 상세한 설명 혹시 가능하실까요?항상 좋은 강의를 남겨주셔서 감사드리며 질문에 대한 답변 기달리겠습니다 :)
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
k6 테스트 문의
안녕하세요.[실습] 내가 구성한 인프라는 1초당 몇개의 요청을 견뎌 낼 수있을까?보고 질문드립니다.현재 강의에서는 js파일에 board경로를 통해 테스트를 하시는걸로 알고있는데..그러면 제가 사이드프로젝트에 30개 api를하나씩 수기로 테스트를 해야하는것인지 궁금합니다..
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
Transactions(5) - Skip Locked 무한 인코딩 현상
무한 인코딩 되서 정상적으로 시청이 안됩니다 ㅠ
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
redis 사용으로 인한 비용
안녕하세요. redis에 대해 궁금한점이 있어서 문의드립니다! redis는 고객사에서 사용 허락을 받지 않는 한 사용하면 안 되나요?추가로 비용이 들까요? 선배님이 비용이 든다고 하더라고요 저는중복 로그인이나 조회수 관련해서 사용을 해보려고 했었는데요.그냥 기존 방식대로 사용하라고 하시더라고요. 이런 고민 없이 개발을 해오다보니 문득 궁금해서 여쭤봤습니다!
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
배포된 서버의 부하테스트 질문 있습니다.
안녕하세요 강의 항상 잘 보고 있습니다. 다름이 아니라, 현재 Cloud front - s3 - ec2 이렇게 한개의 서버를 배포를 해둔 상황입니다. 질문1실제 이 서버를 대상으로 부하테스트를 진행하고 싶은데, 강의에서 진행한 k6를 배포 중인 서버를 대상으로 해도 괜찮을까요?질문2추가적으로 궁금한게 배포 중인 서버를 대상으로 부하테스트가 가능하다고 해도 s3가 올라가있다면 부하테스트를 하는 것만으로도 비용이 발생하지 않나요?? 현업에서는 이런 상황에서 어떻게 부하 테스트를 진행하는지 궁금합니다 ! 질문3강의에서 다루지 않았던 "애플리케이션 로직에서 비효율적인 로직 개선하기"와 관련된 상황이나 키워드좀 알 수 있을까요? 추가적으로 공부해보고 싶은데, 구체적으로 현업에서 자주 발생하는 상황이 어떤건지 잘 예상이 안됩니다 ! 질문4강의에서는 부하 테스트를 위한 K6서버를 하나 배포해서 사용하라고 하셨는데, 이걸 맥북에서 그냥 진행해도 괜찮을까요? 왜냐하면, 맥북으로 테스트를 했을 때 유저 3천명 정도로 설정해도 에러가 발생하지 않아서 질문드립니다 ! 감사합니다 !
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
77. Transactions(5) - Skip Locked-영상 재생 문제
5:48초 부터 동그라미만 나오고 이후 부터 안나옵니다. 확인좀 부탁 드려요.
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Redis를 적용했음에도 불구하고 조회 성능의 큰 차이가 없고 오히려 더 안좋은 조회속도를 보이는 것 같습니다.
간단한 영화 목록 조회입니다. 총 약 10000개의 데이터가 있습니다. redis를 적용하고 조회성능이 좋아진것은 맞지만 이상하게 redis를 적용하기 전에도 같은 조회를 계속해도 조회속도가 똑같이 빨라지는 현상을 겪고있습니다. 현재 이 movie는 MSA 의 여러 서비스 중 하나입니다. 혹시 MSA 아키텍쳐 자체가 문제가 될 수도 있나요?@Cacheable(cacheNames = "getMovies", key = "'movie:all'", cacheManager = "movieCacheManager") public List<Movie> getAllMovies() { return movieRepository.findAll(); } @GetMapping("/movies") public ResponseEntity<List<MovieDto>> getAllMovies() { List<Movie> allMovies = movieService.getAllMovies(); List<MovieDto> dtos = new ArrayList<>(); for (Movie movie : allMovies) { dtos.add(new ModelMapper().map(movie, MovieDto.class)); } return ResponseEntity.status(HttpStatus.OK).body(dtos); } @Configuration @EnableCaching // Spring Boot의 캐싱 설정을 활성화 public class RedisCacheConfig { @Bean public CacheManager movieCacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration .defaultCacheConfig() // Redis에 Key를 저장할 때 String으로 직렬화(변환)해서 저장 .serializeKeysWith( RedisSerializationContext.SerializationPair.fromSerializer( new StringRedisSerializer())) // Redis에 Value를 저장할 때 Json으로 직렬화(변환)해서 저장 .serializeValuesWith( RedisSerializationContext.SerializationPair.fromSerializer( new GenericJackson2JsonRedisSerializer() ) ) // 데이터의 만료기간(TTL) 설정(1분) .entryTtl(Duration.ofMinutes(1L)); return RedisCacheManager .RedisCacheManagerBuilder .fromConnectionFactory(redisConnectionFactory) .cacheDefaults(redisCacheConfiguration) .build(); } } @Configuration public class RedisConfig { @Value("${spring.data.redis.host}") private String host; @Value("${spring.data.redis.port}") private int port; @Bean public LettuceConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(new RedisStandaloneConfiguration(host, port)); } }
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
mem_used_percent 지표가 없는 경우가 있을까요?
안녕하세요 강의 잘 보고 있습니다. 다름이 아니라, 해당 강의와 다르게 Ec2에서 mem_used_percent가 안보이는데 원인이 있을까요?아래 사진은 제 ec2 설정입니다
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Elastic Cache 에러
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.5.3.jar:3.5.3] Caused by: org.springframework.data.redis.listener.adapter.RedisListenerExecutionFailedException: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis at org.springframework.data.redis.listener.RedisMessageListenerContainer.lazyListen(RedisMessageListenerContainer.java:383) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.listener.RedisMessageListenerContainer.start(RedisMessageListenerContainer.java:361) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:405) ~[spring-context-6.2.8.jar:6.2.8] ... 19 common frames omitted Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1858) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1789) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceC Redis 에러 (백엔드 에러는 이렇게 뜨고) 프론트 엔드 (로그인 하고 들어가는 거 잘됩니다. 채팅만 치면 저렇게 뜹니다.)EC2에서 redis 접속은 잘 됩니다.프론트는 S3+cloudfront (도메인 적용 안함)백엔드는 Redis(Elastic) + EC2+RDS +nginx 로 배포했고 몇시간 쨰 하는데 저 에러가 뜹니다.혹시 프론트 배포가 잘 못 된건가요? 강사님 도와주세여ㅠㅠㅠ
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Elastic
Caused by: org.springframework.data.redis.listener.adapter.RedisListenerExecutionFailedException: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis at org.springframework.data.redis.listener.RedisMessageListenerContainer.lazyListen(RedisMessageListenerContainer.java:383) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.listener.RedisMessageListenerContainer.start(RedisMessageListenerContainer.java:361) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:405) ~[spring-context-6.2.8.jar:6.2.8] ... 19 common frames omitted Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1858) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1789) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1586) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1566) ~[spring-data-redis-3.5.1.jar:3.5.1] at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1527) ~[spring-data-redis-3.5.1.jar:3.5.1] 위에꺼는 백엔드 서버 에러이고 밑에는 프론트엔드 서버 에러입니다. 안녕하세요 강사님 채팅 서버와 프론트를 배포를 해서 Elastic Cache를 이용을 하고 있는데 EC2 랑 연결이 잘 되어 있으면서도 이런 에러가 뜹니다. 아무리 찾아봐도 더 해결사항이 보이지 않아 질문드립니다.
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
AWS 리소스 삭제에 관하여
강의에서 사용한 리소스를 모두 삭제를 했습니다. 그러나 청구서에 여전히 비용이 조금씩 남아있는데 혹시 이건 제가 예전에 사용한 것이 아직 결제되지 않은 상태기 때문에 남아있는 것인가요? 분명히 모든 리소스를 삭제했음에도 불구하고 비용이 나가게 될까봐 걱정입니다.
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
exist subquery limit1
Not Exist subquery가 값이 존재하면 탐색을 중단하기 때문에 Exist subquery보다 효율적이라고 이해했는데, 그럼 Exist subquery에 limit 1을 넣어주면 더 효율적일까요?
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
ec2안에서 pull 받는 이유가 뭔가요 ?
ec2에서 깃을 그대로 풀받아서 ec2 안에서 jar를 생성 하는 이유가 따로 있나요 ? 소스코드를 내려받게 되는데 필요하지 않은 용량을 사용하고 소스파일이 서버에서 관리되는 느낌이라서요