본문 바로가기

전체 글29

Ruby의 객체 복사 Ruby에서는 배열이나 해시 같은 컬렉션 객체는 메모리에 참조(reference)로 저장되며, 이 참조를 통해 컬렉션의 데이터를 조작할 수 있다. 이 말은 아래와 같이 코드를 짜는 경우 default_manager_ids = [1,2] requests.each do |request| notify_user_ids = default_manager_ids notify_user_ids.push(request.manager_id) end default_manager_ids와 notify_user_ids는 메모리를 함께 공유하게 된다. notify_user_ids에 값을 추가하면 같은 메모리를 참조하고 있는 default_manager_ids의 값에도 동일하게 값이 추가되는 것이다. 이것이 의도한 것이라면 문제가 .. 2024. 3. 27.
Redis 단일 인스턴스 분산락 구현하기 (SETNX 및 Spinlock) 동시에 같은 상품에 대한 주문이 생성되었고 재고 차감 과정 중에 같은 상품 데이터에 접근하여 데드락이 발생했다. 일반적인 동시성 제어 방법 SQL DB Exclusive Lock(배타적 잠금) SELECT ~ FOR UPDATE 등의 row lock Zookeeper Kafka 등에서 활용되는 분산서버 관리 시스템 각 클라이언트의 Session 및 Heartbeat 체킹 등의 서버 로직을 응용하여 고가용성을 보장하며, 결제 등 Lock의 성능보다 안정성이 매우 중요한 경우 고려할만한 방법이다. Redis Distributed Lock(분산락) setnx 명령어와 함께 Spin Lock 또는 Publish/Subscribe 등의 방식으로 락의 획득 가능여부를 판단 📌 용어 정리 분산락(distributed.. 2024. 3. 27.
[MySQL] MySQL의 Index 인덱스란? 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조이다. DB 내 저장된 데이터가 저장된 주소를 가지고 있어 데이터를 조회할 때 결과를 빠르게 추출하도록 도와준다. 책의 색인에 대한 특징들을 나열하며 인덱스를 설명한 블로그를 봤는데 개념이 확 와닿아서 해당 내용을 참고해서 기록해보려고 한다. 참고: https://jeong-pro.tistory.com/242 두꺼운 책을 보면 특정 내용이 몇 페이지에 있는지 확인 가능한 색인 페이지가 있다. 데이터베이스의 인덱스는 책의 색인과 비슷하다. 위 블로그에서 설명해 주신 책의 찾아보기(색인)가 가지고 있는 특징들은 아래와 같다. 책에 있는 모든 용어가 아닌 자주 찾아보는 핵심 용어만 간추려 정리.. 2023. 9. 6.
[AWS] Amazon Personalize - 개인화 및 추천 서비스 Amazon Personalize : 아마존에서 제공하는 머신 러닝 기술을 이용한 실시간 개인화 및 추천 서비스 Process 데이터 가져오기 → 학습 → 추론 data → data set group (data sets) → Solution → Campaign(end point) 데이터 준비하기 : 데이터 셋의 종류 interations (구매, 장바구니 담기, 상품 보기) user와 item 간의 인터랙션 정보 제공 (모든 알고리즘에서 필수로 필요) users (사용자 메타 데이터 - 연령, 성별, 멤버쉽) items (가격, 재고 여부) 솔루션 생성하기 : 레시피(알고리즘) 선택 User personalization : 모든 추천 시나리오에 적합하여 가장 추천되는 알고리즘 Similar items P.. 2023. 7. 3.
[Ruby On Rails] before_action 및 after_action 사용법과 실행 순서 Rails에서는 컨트롤러의 메서드 실행 직전 또는 직후에 특정한 작업을 처리하기 위해 before_action, after_action, around_action을 사용할 수 있다. 세 가지 필터 모두 기본적인 사용법은 아래와 같다. 관례적으로 컨트롤러의 상단에 정의해 준다. UserController 내의 정의된 모든 public 메서드 실행 직전에 require_login이 먼저 실행되게 된다. class UserController < ActionController::Base before_action :require_login end 특정 액션에서만 사용하기 only를 사용할 경우 특정 액션에서만 before_action이 실행된다. class UserController < ActionControll.. 2023. 6. 17.
JWT의 개념 및 Access Token과 Refresh Token에 대한 고찰 JWT를 통해 로그인 기능을 구현하면서 들었던 의문점들에 대해 정리한 글입니다. 1. JWT(JSON Web Token)란? 2. 왜 JWT를 사용할까? (Cookie + Session vs JWT) 3. JWT를 사용할 경우 만료 기한은 어느 정도로 지정할 것인가? 4. Refresh Token이 탈취된다면 보안적으로 똑같이 위험하지 않은가? 5. Refresh Token을 저장하고 있어야 하는가? 6. 토큰 탈취 자체를 방지할 수 있는 방법은 없을까? 7. 결론 JWT(JSON Web Token)란? : 두 개체 사이에서 정보를 JSON 개체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준으로, 전자 서명이 되어 있으므로 신뢰할 수 있다. JWT는 .을 기준으로 하여 Head.. 2023. 6. 6.