묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
react-query 무한스크롤 staleTime caching 질문 (슬랙)
Slack에 올라온 질문이 좋아서 인프런 커뮤니티에도 공유드립니다.
-
미해결실전! Redis 활용
레디스 사용관련 질문
레디스 데이터 타입 별 사용방법 많은 도움이 되었습니다. 그러다 궁금한것이 있습니다. Q. 사이드 프로젝트로 쇼핑몰을 만드려고 합니다 프론트: 리액트 벡엔드 api서버: 스프링부트2.8 api서버에 레디스를 연결해 최근 검색어 캐싱 + 구매에 의한 재고 감소 동시성 처리를 하려고 합니다. 이때 벡엔드 api 서버(스프링부트)에 레디스를 연결하는게 맞나요 아니면 별도의 서버를 하나 더 구축해 레디스를 연결하는게 맞나요?? 사이드 프로젝트인 상황에 맞게 어떻게 하는게 바람직한지 궁금합니다
-
미해결백엔드 개발자 성능 개선 초석 다지기
인덱스 활용 질문
인덱스를 걸때 카디널리티 수치를 확인해 높은 컬럼을 인덱스로 설정하라고 강의에서 들었습니다. 이에 궁금한 점이 몇가지 있습니다.Q1 : WHERE 절에 검색조건으로 사용되는 컬럼이 5가지라고 가정하면 가장 카디널리티가 높은 컬럼 1개만 인덱스로 걸어야 하나요?? 아니면 카디널리티가 높은 순서대로 묶어서 하나의 복합 인덱스를 만들어 주어야 하나요?? 차이점이 궁금하고 어떤 방식이 더 나은 방식인지 궁금합니다 Q2 : WHERE 절에 사용되는 검색조건인 컬럼 한개가 있다고 가정했을때 해당 컬럼의 카디널리티 수치가 낮더라도 인덱스를 만드는게 낫지 않나요? Q3 : Mysql의 경우 범위검색의 경우 B-Tree 인덱스를 사용한다고 알고있습니다 . 강의에서 만든 인덱스도 날짜이고 범위검색이니 B-Tree 인덱스를 사용한거 같습니다. 정확한 일치 검색의 경우 해시 인덱스를 사용할 수 있다고 들었습니다. 이때는 인덱스를 만들때 코드를 어떻게 써줘야 해시 인덱스를 만들 수 있나요?
-
미해결백엔드 개발자 성능 개선 초석 다지기
프로젝트 적용하는데 어려움이 있어 질문드립니다.
안녕하세요. 현재 프로젝트를 디벨롭하려고 수강한 학생입니다.현재 자바17버전을 사용하여서 프로젝트를 완료하였고 ngrinder에서 스크립트를 사용하기 위해 11버전으로 낮추었는데 프로젝트 코드의 많은 부분을 수정해야해서 17버전을 사용해서 적용할 수는 없을까요?
-
해결됨실전! Redis 활용
Rate Limiter 예제에 대해 질문있습니다!
Rate Limiter 강의 그림으로 된 예제에 대해 질문있습니다!트랜젝션 시작을 알리는 "MULTI" 명령어 이후 "EXPIRE 1.1.1.1:10 60 / EXEC" 코드가 있습니다! 제가 잘못 이해한 걸 수도 있지만, 이렇게 하면 요청마다 만료 시간이 다시 1분으로 초기화되는 것이 아닌지 궁금합니다. 그러면 1분 안에 요청 수를 제한하는 것이 아니라 1분 안에 요청이 없으면 만료되는 형식이 될 것 같은데 제가 생각한 것이 맞을까요?
-
미해결실전! Redis 활용
Bitmap - User Online Status(온라인 상태 표시)에 질문 드립니다.
사용자가 온라인 된 경우 1로 bit를 업데이트 하고이후에 통신이 되지 않으면 비트값이 추가로 업데이트 되지 않는다 설명하셨는데그 사이에 어떤 동작으로 통신이 되지 않는지 여부를 확인하는지, 비트는 어떻게 처리되는지에 대한 설명이 없어 이해가 어렵네요.매 분마다 요청이 온다는 가정하에 비트값을 매분마다 1씩 업데이트 하는데, 해당 요청이 없어서 비트값이 더 이상 업데이트 하지 않게 되면, 해당 시간만큼 오프라인 상태였다이 시나리오가 맞을까요?그렇다면 서버에서 임의의 시간, 예시로 3분 이상 미 접속시 오프라인이라 평가하여 커뮤니티 웹, 온라인 게임이나 채팅 등의 사용자의 온라인 여부가 필요한 서비스에서 해당 값을 참고하여 특정 시간에서 부터 bit 증가가 없다면 오프라인이라 평가하게 된다고 보면 될까요?그런데 이렇게 하면 시:분으로 시작하는 key로 부터 bit는 접속하게 되는 분 단위가 되는거고, 다른 사용자가 이 사용자의 온라인 상태를 알고자 한다면, 현재 시간에서 key와 bit를 연산한 시간을 비교해야 온라인인지 여부를 알 수 있게 되는건데 제가 이해하고 있는게 맞는지 알고 싶습니다.
-
미해결실전! Redis 활용
Hash - Login Session(로그인 세션)에 대해 질문 드립니다.
해당 클래스의 주된 내용은 동시 로그인 제한으로 이해를 했습니다.그런데 설명을 해주시는 부분에 있어서 set-cookie 부분에서 부터 이해가 잘 되지 않네요.먼저 설명 부분에 있어서set-cookie로 session id를 보내고갑자기 결제가 필요한 유료 api에 접근을 요청하고redis의 캐시에서 해당 유저가 프리미엄 등급임을 확인하고유료 api 요청을 처리한다 하셨는데동시 로그인 제한이라면 pc나 모바일 등 여러 장비에서 접속하는 session의 처리를 의미하는거라 생각이 됩니다.그리고 redis의 캐시로 프리미엄 등급을 확인한다는것도 이해가 되지 않는게 해당 데이터는 캐시로 다뤄질 데이터가 아니지 않나요?초반 설명하셨던 동시 로그인 제한이란 소주제의 목적이다이어그램을 통해 설명한 내용과 다른것 같습니다.혹시 제가 이해한게 잘못된 것인지 알고 싶습니다.n(로그인 세션)
-
해결됨실전! Redis 활용
String - Fixed Window Rate Limiter(비율 계산기) 에 질문 드립니다.
1.1.1.1:10 으로 key가 만들어 졌을 때, 만료가 11분이 되는건가요?설명에는 10분에서 11분까지로 알려주시던데20이라는 요청 제한 수는 프로그램에서 관리하는 수가 되는거죠?다이어 그림에 expire 1.1.1.1:10 60 / exec 의 의미는 무엇인가요?
-
해결됨실전! Redis 활용
Sorted Sets에 대해 질문 합니다.
ZRANGE points 0 -1 REV WITHSCORES위 명령어를 입력하면 ERR syntax error가 발생합니다.gpt로 확인하니 ZREVRANGE points 0 -1 WITHSCORES를 제시해주고결과도 역순으로 출력이 됩니다.rev 지원이 안되는거 같은데 버전의 차이 등의 이슈가 있는 것인지 알고 싶습니다.
-
해결됨실전! Redis 활용
데이터 타입 활용 - 온라인 상태 표시 [Bitmap] 관련 질문
안녕하세요. 강의를 잘 보고 있는 와중에 온라인 상태 표시 관련한 궁금증이 생겨서 질문을 남기게 됐습니다. (※ 다른 분이 남겨주신 온라인 상태 표시 질문 글도 읽었습니다.) Bitamps의 장점은 하나의 key에서 offset을 사용하여 값을 비트별로 나눠서 읽고 쓰기 때문에 적은 메모리와 빠른 비트 연산을 제공한다고 생각이 되는데요.올려주신 예시를 보면 key는 계속해서 바뀌고 있고, offset도 전혀 사용하지 않는 것 같습니다.해당 상황에서도 일반적인 Strings 대신에 Bitamps를 쓰신 특별한 이유가 있는지 궁금합니다.
-
미해결백엔드 개발자 성능 개선 초석 다지기
nGrinder validate가 안됩니다.
다른 질문을 보니 www.nate.com으로 시도해보라하여 했지만 똑같이 되지 않습니다. Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: Unsupported class file major version 61 java.lang.IllegalArgumentException: Unsupported class file major version 61 Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: Unsupported class file major version 61 java.lang.IllegalArgumentException: Unsupported class file major version 61
-
미해결Arm 아키텍처: 캐시(Cache) [저자직강 3부-4]
캐시의 친화적인 코드
안녕하세요, 선생님 시스템 소프트웨어의 개발의 모든 것 강의에 이어서 이번 강의도 정말 잘 보았습니다. 강의 내용과, 강의 소개란에 보면"둘째, 캐시의 구조를 잘 알면 캐시 히트를 활용한 캐시의 친화적인 코드를 작성할 수 있습니다. 예를 들어, 자주 사용되는 루틴은 특정 CPU 코어에서만 실행되도록 설계할 수 있습니다." 라는 문구가 잘 이해가 안되어 질문 드립니다.실무에서 어떤 상황에 캐시 친하적인 코드를 실제로 작성하게 되는지, 자주 사용되는 루틴은 어떤 것이 있고 어떤 업무(?)를 주로 맡았을 때 저런 개발을 하게 되는지 궁금합니다.가능하시다면 조금 더 구체적인 사례를 선생님께 듣고 싶습니다.미리 감사드립니다
-
미해결백엔드 개발자 성능 개선 초석 다지기
EhCacheManagerFactoryBean
그레이들 추가후 EhCacheConfig 만들때 EhCacheManagerFactoryBean를 죽어도 못찼네요(Cannot resolve symbol 'EhCacheManagerFactoryBean')invalicache , rebuild , clean build 등등 해봤지만 소용이 없는데 혹시 다른데 더 체크해야할 부분이 있을까요??
-
미해결백엔드 개발자 성능 개선 초석 다지기
인텔리제이 EditConfiguration 옵션 추가하는 방법 [ 공유O 질문X ]
혹시나 저처럼 약간 헤매는 분들 계실까 싶어 남깁니다.스카우트 모니터링 TOOL 설치(2)에서 옵션 추가하는 방법이 Editconfiguration 들어간 다음에modify options 클릭 하고 나오는 리스트에서 Add VM Options 누르시면 옵션 추가할 수 있는 칸이 하나 나옵니다.그 곳에 노션에 있는 아래 옵션 추가해주시면 됩니다.-javaagent:/Users/..생략../study/util/scouter/agent.java/scouter.agent.jar -Dscouter.config/Users/jo-eunho/Documents/eunho/study/util/scouter/server/conf/scouter.conf -Dobj_name=demoTomcat --add-opens java.base/java.lang=ALL-UNNAMED
-
해결됨실전! Redis 활용
ec2 내 Redis 잘못된 host 연결
문제는 이렇습니다.prodRedisUrl = redis://:password@ec2프라이빗ip:6379/0로 url을 보냅니다.그리고 ec2 내 redis bind를 ec2 프라이빗 Ip로 설정하고, 리스닝 하고 있는 상태입니다.그러면 정상적이라면, 서버가 배포 됐을 때 prodRedisUrl로 redis와의 연결이 성공적으로 연결 됩니다.근데 어이없는 문제가 발생합니다요청하지도 않은 localhost로 redis서버에 연결하려고 하는 것입니다.그래서 시나리오를 세워서 반대로 테스트를 해봤습니다 !!!!prodRedisUrl = redis://:password@127.0.0.1:6379/0로 하고, 일부러 로컬호스트를 보내 봤습니다. 물론 ec2 내 redis.conf의 bind를 수정 했습니다. bind 127.0.0.1테스트 해봤더니 127.0.0.1로 접속은 완료 됐지만이제는 반대로 ec2 프라이빗 Ip로 연결을 요청해서 실패하네요 ㅋㅋㅋㅋㅋ도대체 요청하지도 않은 ec2에서 그리고 알지도 못하는 프라이빗 ip로 redis서버에 접속하려는걸까요??????----------------------------------------즉, 정리하자면 요청하지도 않은 host로 Redis서버에 접속한다 !! 입니다.로컬에서 테스트 할 때는 아무런 문제 없이 잘 작동하더니만 ec2에 배포하고 연결하려고 하니까 이 말썽입니다... 도저히 이해가 되지도 않고 원인 파악도 힘드네요,, =====추가적으로 redisurl 로그도 정상적으로 출력되고, 그리고 문자열로도 넣어봤지만 똑같은 증상이 발생했습니다.
-
미해결백엔드 개발자 성능 개선 초석 다지기
프로젝트 공유
혹시 프로젝트 공유는 안되는건가요???프로젝트는 따로 만들어서 해야되는건지.. 감사합니다
-
미해결백엔드 개발자 성능 개선 초석 다지기
scouter client
sudo spctl --master-disable 이 명령어로 해도 계속 이렇게 뜨는데 이건 무슨 문제인가요..? 스크립트 실행은 잘된거같은데..
-
미해결백엔드 개발자 성능 개선 초석 다지기
스카우터 설치
스카우터가 실행이 안되는데 java 버전문제인가요
-
미해결백엔드 개발자 성능 개선 초석 다지기
생각보다 부하 테스트가 CPU를 많이 타는거 같은데 정상이겠죠?
캐싱을 하면 성능이 잘 나온다는건 당연히 알고 있었지만 CPU를 상당히 많이 타긴 하는거 같네요 저도 2배 향상을 예상하고 돌렸는데 30%정도 성능 향상이 이루어지는 군요.운영 환경은 AWS에서 돌리니까 더 많은 도움이 될것 같습니다.
-
미해결백엔드 개발자 성능 개선 초석 다지기
로컬에서 성능 테스트하는 것이 어떨 때 유의미한가요?
안녕하세요. 강의 열심히 듣고 있는 학생입니다. 다름이 아니라 로컬에서 성능 테스트를 하는 것에 대한 제 생각이 합리적인지 모르겠어서 질문납깁니다! 부하 테스트는 실제 운영 중인 서버와 동일한 환경을 구축해 진행하여, 실제 서버를 운영하기에 부족한 부분을 찾아내는 것을 목표로 한다고 알고 있습니다. 때문에 로컬 서버에서 부하 테스트를 진행하는 것이 실제 서버가 얼마나 부하를 버티는지 확인하기는 어렵다고 생각합니다.또한, 실제 서버의 부하 테스트가 아니라, 강의처럼 여러 개의 로직에 대한 성능을 판별할 때는 각 로직에 대한 성능 테스트를 동일한 환경에서 진행한다면, 그 환경이 로컬 환경이라도 충분히 유의미하다고 생각합니다. 이러한 제 생각이 어떤 부분이 맞고 어떤 부분이 틀린지, 추가로 알아볼 아이디어는 무엇인지 궁금합니다!!