소개
백엔드 개발자
스타트업 창업
(전) 토스 증권 NoOps팀
(전) Asleep 슬립루틴 개발
(전) ABLY 광고 사업팀
PyCon Korea 21/22/23 Speaker
자격증 및 수상 내역
AWS 2023 StartUp Security GameDay 1등
3x AWS Certified
AWS Certified Database – Specialty
AWS Certified Solutions Architect - Associate
AWS Certified Developer - Associate
CKAD(Certified Kubernetes Application Developer)
기술 블로그: qu3vipon.com
깃허브: github.com/qu3vipon
강의
전체4수강평
- 덕분에 Redis에 대해 자세히 알고 갑니다
홍준기
2024.07.16
1
- 기초를 자세하게 알려주시고, 활용사례에 대해서 잘 알려주셔서 더욱 좋았던 것 같습니다
hidongmin37
2024.06.29
1
- Redis를 빠르게 입문할 수 있어 좋았습니다.
limeade
2024.06.26
1
게시글
질문&답변
2024.07.26
Rate Limiter 예제에 대해 질문있습니다!
안녕하세요! 캐시 key 구성을 보면 {클라이언트 IP}:{요청 시각(분)} 으로 이루어져 있습니다. 해당 캐시는 1분 동안의 요청 횟수를 관리하는 데이터로 최대 1분 동안만 유효한 데이터입니다. 예시에서 현재 시각이 0시 10분이라고 가정 했을 때, 0시 10분부터 11분 이전까지의 1.1.1.1 IP로부터의 요청 횟수를 기록하고 있습니다. Fixed-window 방식에서는 11분이 되는 순간부터는 1.1.1.1:11 캐시에 새로 기록되기 시작하기 때문에 1.1.1.1:10 캐시는 더 이상 사용되지 않습니다. 정확히 남아있는 시간을 계산하여 expiry를 동적으로 지정하는 방법도 있지만, 예시에서는 고정적으로 캐시의 최대 유효 시간인 60초 후에 만료가 되도록 설계하였습니다. Key 구성에서 시(hour)를 기록하지 않는 이유 역시 1시간 뒤에 1시 10분이 되었을 때 1.1.1.1:10 key를 재활용 할 수 있기 때문입니다 :)
- 0
- 2
- 36
질문&답변
2024.07.17
테스트 코드 path api 에서 오류에대해 해결해주세요
안녕하세요! handler 쪽 코드에서 request body를 처리하는 부분이 누락되어 있네요. 아래와 같이 수정 부탁드립니다. is_done: bool = Body(..., embed=True)
- 0
- 1
- 40
질문&답변
2024.07.06
Bitmap - User Online Status(온라인 상태 표시)에 질문 드립니다.
안녕하세요. 중간 통신 여부를 확인하기 보다는 클라이언트에서 특정 요청이 오는 경우에 대해서만 요청 시간에 맞는 사용자의 상태 bitmap 값을 1로 업데이트 하게 되면 그 시간 동안 사용자를 활성 상태로 볼 수 있습니다. 예제에서는 1분 단위의 고정된 key의 bitmap을 사용하기 때문에 10분 30초에 사용자가 서버로 어떤 요청을 보냈고, 이 때 10분에 해당하는 bitmap 값을 1로 업데이트하면, 해당 사용자는 10분~11분 사이에는 활성 상태로 볼 수 있습니다. 이후에 요청이 없다면 사용자는 비활성화 상태로 판단할 수 있습니다. 반드시 이런 방법으로 활성 상태를 관리해야 하는 것은 아니고 redis bitmap을 이용하면 적은 데이터로 이런 상태를 관리할 수 있다고 이해하시면 됩니다.
- 0
- 1
- 62
질문&답변
2024.07.05
Hash - Login Session(로그인 세션)에 대해 질문 드립니다.
안녕하세요. 해당 강의의 주된 내용은 redis를 이용해서 사용자의 로그인 세션을 관리하는 방법을 알아보는 것입니다. 로그인 세션이라고 하면 어떤 사용자가 활동적으로 시스템을 이용하는 기간의 임시 데이터 정도로 이해할 수 있는데요. 특정 사용자의 활성화된 세션을 생성하기 위해서는 최초에 사용자를 식별할 수 있는 id, pw 등을 받아서 먼저 사용자를 식별해야 합니다. 이 때 보통 데이터베이스를 조회해서 사용자 데이터를 확인하는데요. 예제에서는 사용자마다 등급이 있다고 가정했고, 해당 사용자가 preminum 등급이라는 정보를 세션 Hash에 함께 저장하였습니다. 이렇게 세션 생성시 사용자 등급까지 한 번에 캐싱하는 이유는 이후 세션을 이용한 요청마다 추가로 사용자의 등급을 조회하는 과정을 생략하기 위함입니다. 이런 식으로 캐시를 이용해서 세션을 관리하면 동시 로그인 제한 같은 기능까지 구현 가능한데요. 계정 별로 생성할 수 있는 세션의 개수를 제한하여 활성화 된 세션이 특정 개수를 넘을 경우 이전에 생성된 세션을 삭제하는 식의 로직을 추가해주시면 됩니다.
- 0
- 1
- 58
질문&답변
2024.07.05
String - Fixed Window Rate Limiter(비율 계산기) 에 질문 드립니다.
안녕하세요. 예제 상황에서 사용자의 IP가 1.1.1.1이라고 가정했을 때, 분 단위의 요청 횟수를 제한하기 위해서 10분에서 11분 사이의 요청 횟수를 1.1.1.1:10 키로 갖는 string 타입의 캐시를 추가하였습니다. 20이라는 값은 이미 해당 IP로 10분에서 11분 사이에 20번의 클라이언트 요청이 발생한 것을 의미합니다. (이 부분은 예제에서 0초에 첫 요청이 오는 것처럼 설명이 되어 있어서 헷갈리셨을 것 같네요) 만약 서버에서 IP 별로 분당 20회의 요청만 허용하기로 했다면, 21번째 요청부터는 에러를 발생시키면 되고, 아직 20번째 요청이 발생하기 전에는 새로운 요청마다 INCR 명령어를 통해서 값을 1 증가 시켜서 해당 값을 관리하면 됩니다. MULTI부터 EXEC까지는 그 사이에 있는 INCR, EXPIRE 두 개의 명령을 한 번에 적용하기 위해서 transaction을 사용하는 명령어입니다. EXPIRE 1.1.1.1:10 60을 통해서 해당 키를 60초 이후에 만료 시키는 이유는 60초 이후인 11분 부터는 해당 캐시값이 더 이상 필요하지 않아서 데이터를 삭제하기 위함입니다.
- 0
- 1
- 62