묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Nest.js + Redis 구현 문제
안녕하세요레디스 강의를 재미있게 수강하고 있는데요문제가 있어서 여러가지 찾아보았지만 잘 해결이 되지 않아서 여기에 문의 남깁니다 import { Module } from '@nestjs/common'; import { BoardController } from './board.controller'; import { BoardService } from './board.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Board } from './board.entity'; import { CacheModule } from '@nestjs/cache-manager'; import * as redisStore from 'cache-manager-ioredis'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: '', // 임시로 삭제 password: '', // 임시로 삭제 database: 'mydb', autoLoadEntities: true, synchronize: true, // Note: set to false in production }), TypeOrmModule.forFeature([Board]), CacheModule.register({ store: redisStore, host: 'localhost', port: 6379, ttl: 60, }), ], controllers: [BoardController], providers: [BoardService], }) export class AppModule {} import { Inject, Injectable } from '@nestjs/common'; import { Board } from './board.entity'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager'; @Injectable() export class BoardService { constructor( @InjectRepository(Board) private boardRepository: Repository<Board>, @Inject(CACHE_MANAGER) private cacheManager: Cache, ) {} async getBoards(page: number, size: number): Promise<Board[]> { const cacheKey = `boards:page:${page}:size:${size}`; const cachedData = await this.cacheManager.get<Board[]>(cacheKey); if (cachedData) { return cachedData; } const skip = (page - 1 ) * size; const boards = await this.boardRepository.find({ order : {created_at: 'desc'}, skip: skip, take: size, }); await this.cacheManager.set(cacheKey, boards); const cachedData3 = await this.cacheManager.get(cacheKey); console.log('stores:', this.cacheManager.stores); console.log('stores 타입:', typeof this.cacheManager.stores); console.log('stores 내용:', JSON.stringify(this.cacheManager.stores, null, 2)) return boards; } } 현재 이렇게 2개의 파일을 레디스 적용하기 위해서 작성을 하였는데요레디스에서 검색을 하면 정상적으로 조회가 되지 않습니다(mysql에서 가지고 온 데이터는 정상적으로 조회가 됩니다) 그래서 중간에 로그도 찍어보았는데 레디스가 아니라 keyv 여기에 저장이 되는거 같습니다왜 그런지 원인을 알고 싶습니다 참고로 레디스 cli, 서버는 정상적으로 동작 중 입니다이유는 스프링으로 레디스 연동은 정상적으로 잘 됩니다
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
데이터를 안가져와요
똑같이 해서 돌렸는데 데이터가 안보여서 로그 찍어 봤어요 컨트롤러에서 page 파라미터는 불러오는데 size 값만 안불러와요
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
소스코드 DB 세팅 가이드가 필요합니다.
소스코드 너무 감사합니다.근데 돌려도 동작이 안되기 때문에 DB 세팅 가이드 같은게 있으면 좋겠네요.강의 내용은 좋은데 ..
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
Spring Boot 프로젝트에 Redis 셋팅 추가하기에서 13분 질문있습니다.
Spring Boot 프로젝트에 Redis 셋팅 추가하기에서 13분에서요.스프링부트 종료하고 다시 사작한 화면에서 cmd에서 cash * 누르면 캐시가 없던데 캐시는 휘발성인가요?
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
레디스 환경 셋팅 질문있습니다.
선생님 코드 복붙했는데 어느 부분이 틀린지 잘 모르겠습니다.class RedisCacheConfig 부분에서 RedisConnectionFactory redisConnectionFactory 이 부분이 에러가 나고class BoardService애서 cacheManager = "boardCacheManager" 여기서도 에러가 납니다.파일 첨부합니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
ec2 수평적 확장에 대하여
안녕하세요 강의 잘보고 있습니다.해당 강의는 다 이해가 갔는데 만약에 로그인 유저일 경우에는 세션과 토큰을 사용했을 시 수평적 확장해도 자동으로 다 처리가 되나요 아님 따로 작업을 해야하나요?
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
엘라스틱 서치와 레디스의 차이점을 알고 싶습니다.
엘라스틱 서치와 레디스의 차이점을 알고 싶습니다. 그리고 강의 중에 엘라스틱 서치도 redis-cli로 접속하여 값을 볼수있는데. 이것은 왜 redis-cli 를 사용하는지도 알고 싶습니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
TPS 기준
안녕하세요 강의 잘 보고 있습니다.저도 강의대로 실천해보니 3~4TPS가 나오는데 TPS가 얼마나 나와야 잘나오는지 기준을 잘 모르겠습니다. 데이터가 100만개가 있으면 원래 3TPS 정도가 나오는 건가요?
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
-parameters
http://localhost:8080/boards 로 접근시 해당 에러가 발생합니다
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
섹션2 - [실습] EC2에 백엔드 서버(Spring Boot) 셋팅하기
jar 파일을 실행하려 명령어를 입력하면 한참동안 아무 동작을 하지 않아 문의드립니다. 다음으로 넘어가지 않아 실습 진행이 어려운데 원래 이렇게 많이 걸리는 걸까요,,?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
성능테스트하기 애매한 API의 경우 진행 방법이 궁금합니다.
안녕하세요, 좋은 강의제공 감사드립니다!강의 듣다가 실무적용할때 궁금한점이 있어서 질문남겨봅니다. 결제와 같이 성능테스트 대상으로 삼기 애매한 API에 대한 테스트 방법이 궁금합니다.api 호출 시 결제가 이루어진다거나 타 제휴사 api 를 친다거나 하는 경우 성능테스트를 진행해버리면 문제가 생기지 않을까 싶은데요, 이런경우에는 보통 어떻게 성능테스트를 진행하고 병목구간을 찾아야 할까요? 감사합니다:D
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
개인 프로젝트 시 top 입력 시 해석 도움 요청
강사님 안녕하세요. 강사님 덕분에 배운대로 잘 사용하고 있습니다. 그중 제가 해석이 강사님과 다른 지점이 있어서 질문을 남깁니다. 강사님은 CPU코어가 2개여서 Max 200%까지 된다고 했는데 저는 1:1 비율로 사진과 똑같더라고요. 다른 점은 강사님은 EC2 설계 시 T3.small을 저는 t2를 선택했는데 그것에 따라 다른 것일까요? 아님 저는 node인데 강사님은 java여서 그에 대한 차이일까요?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
sudo nohup java -jar jscode-0.0.1-SNAPSHOT.jar & 설치 오류?
사진과 같이 강사님과 똑같이 그리고 제공해준 실습 자료를 복사 붙여넣기하면서 따라하고 있는데 저기 sudo nohup java -jar jscode-0.0.1-SNAPSHOT.jar &설치에서 강사님은 엔터를치면 ip를 확인할 수 있는 코드를 치면 나오는데 저는 exit 1 등이 뜨면서 설치가 안됩니다. 제가 잘못한 것이 있나요?node 유저라서 자바는 잘 모릅니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
목표 throughput, latency는 어떤 기준으로 정하나요?
혹시 보편적으로 공유되고 있는 기준치가 별도로 존재할까요? 아니면 매번 회사, 서비스마다 달라지기 때문에 자체적으로 고민을 해야 하는 건가요 ? ㅠ ㅠ
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
aws t3a.small 비용
실습에 사용하는 t3a.small 인스턴스는 프리티어 지원이 안되는 것으로 알고 있는데 맞나요?맞다면 실습으로 인한 비용은 어느 정도로 예상해볼 수 있을까요
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
백엔드 API 설정을 https로 하고 싶은 경우
현재 서비스에서 백과 프론트의 소통이 https://도메인으로 이뤄지고 있는데, 이 경우에는 ALB와 타겟그룹 설정 시 80포트 말고 443 포트를 열도록 하면 되나요?
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
다양한 API가 있는 경우 효율적으로 테스트하는 방법이 있을까요?
안녕하세요 강사님! 강의를 완강한 한 학생입니다!제가 이번에 스프링부트로 개발한 서비스를 하나 배포할 예정이고 얼마 만큼의 부하를 견딜 수 있을지 궁금하여 부하테스트를 공부하고자 강의를 수강하였습니다. 근데 막상 부하테스트를 해볼려고 제가 만든 서비스에 API들이 약 30개 가까이 되는데 이 많은 API들을 어떻게 테스트 할지가 고민입니다.(학업 관련 서비스입니다. 그래서 Oauth 로그인, 시간표 CRUD, 친구 관리, 과제 CRUD 같은 API가 있습니다)하나 하나 다 테스트를 해야하는지 아니면 시나리오를 구성하여 테스트를 해야하는지 그리고 시나리오를 구성한다면 어떻게 구성해야할지 막막합니다. 어떤식으로 하면 좋을지 조언을 받고 싶습니다ㅠㅠㅠ
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
혹시 DB를 RDS로 빼지 않고 EC2안에 설치하게 되면 메트릭을 어떻게 측정할까요?
안녕하세요. 좋은 강의 잘 듣고 있습니다.예제에서 처럼이 아니라 EC2안에 DB 서버를 설치하게 된다면, 또 Spring 서버 뿐만이 아니라 필요에 따라 그 옆에 express 서버도 한 EC2 안에서 같이 돌릴 일도 있을 거라 생각하는데, 그런 경우에는 각각의 메트릭을 어떤 식으로 측정이 가능할지 질문 드립니다.
-
미해결대규모 트래픽 처리를 위한 부하테스트 입문/실전
node, nest 사용자도 쉽게 이해가 가능할까요?
제목 그대로 node, nest 사용자인데 강의 목록에서 보면 java로 하시더라고요. 근데 제가 초보자여서 강의에서 하시는 것을 보고 node, nest에서도 쉽게 활용이 가능할지 궁금합니다. 난이도가 어느정도로 생각하면 될까요? 지식은 java는 아에 없고 node, nest는 기초적인 지식 정도만 있습니다.
-
미해결백엔드 애플리케이션 성능 개선하기 - 기초편
질문있습니다!!
스노우 플레이크를 통해 id값을 만들어 내는 이유가 인덱싱(타임 스탬프 순으로의 정렬)과 절대 중복될 수 없는 key 값을 만들어내서, 기존 생성API의 메커니즘인 Select(중복 여부 조건 검사) -> Insert의 방식에서 스노우 플레이크로 인해 중복이 될 수 없으니 Select 쿼리에 대한 비용을 줄이는 것으로 성능을 개선하는 방식이다. 그리고 여기에 추가로 비동기로 URL 생성을 진행했하고 클라이언트는 응답을 미리 받고, 실질적으로 Insert 쿼리를 날려 DB에 저장하는 부분은 백그라운드로 진행함으로써 Latency를 앞당기는 것으로 성능을 개선했다고 이해하면 될까요??