사용자는 정말 여러 개의 소셜 로그인을 좋아할까?
·
고민
서비스를 이용하기 위해서는 로그인/회원가입 단계를 거쳐야한다우리는 사용자의 편의성을 위해 소셜 로그인을 도입하곤 한다평소에는 그냥 카카오 로그인 하나만을 도입하다가 이번 프로젝트에서 사용자가 원하는 소셜 로그인은 뭔지 궁금해졌다여러 개의 소셜 로그인만 제공해주면 정말 사용자는 좋아할까??아래는 여러 글들을 읽으며 정리한 내용이다 소셜 로그인 사용 이유사용자가 소셜로그인을 사용하는 주된 이유는 시간절약, 계정 관리 번거로움을 피하기 때문이다 소셜로그인이 하나가 아닌 여러개인 경우 불편사항편의성을 높이는 것 같지만 어떤 옵션을 사용하였는지 기억하지 못하여 로그인 실패율을 높인다이는 사용자 경험의 저하로 이어진다또한 유료 서비스의 경우 사용자의 실수로 다른 소셜 로그인으로 로그인 한다면 이용권이 사..
초등학생도 이해하는 MCP
·
테크 이슈
LLM의 한계?요즘 시간이 지날수록 너무나도 똑똑해지는 LLM의 성능에 놀란다하지만 이 LLM도 학습 데이터의 범위를 넘어선 정보(노션이나 내 컴퓨터 파일에 있는 나만의 정보)에 대해서는 바보가 된다즉, 아이언맨의 ‘자비스’ 같이 말 한마디로 ‘적절한 시점’에 ‘적절한 맥락과 데이터’ (파일, 노션, 피그마 같은 도구들)에 접근할 수 있어야 한다!따라서 기존에는 똑똑한 AI Agent(클로드, 지피티 등등)를 만들기 위해 개발자들은 데이터 소스나 API 스펙에 맞춰 ‘더러운 코드’(재사용하기 힘든)를 작성하거나 특수한 플러그인을 사용하고 있었다하지만 이는 매우 매우 귀찮은 일…    MCP로 일을 쉽게쉽게 해봅시다!!그래서 MCP(Model Context Protocol)는 이 일을 단순화해 보자는 취지..
Auto Increment를 막쓰면 문제가 될 수도..?(with Lock)
·
Spring/JPA
1. 언제 Auto Increment를 사용할 때 문제가 발생하나요?예시 시나리오logs 테이블에는 id 컬럼이 있고, AutoIncrement로 설정되어 있다현재 id의 최댓값이 4라고 가정한다P1 트랜잭션이 시작되어 insert를 3번 실행 → 부여된 ID: 5, 6, 7하지만 아직 P1 트랜잭션은 커밋되지 않은 상태이다동시에 P2, P3도 각각 insert 실행 → 부여된 ID: 8, 9 (이들은 트랜잭션을 커밋함) 문제가 발생할 수 있는 상황이전에 처리한 최대 ID를 구해 lastProcessedId에 저장 (예: 4)현재의 최대 ID를 구해 maxId에 저장 (예: 9)lastProcessedId보다 크고 maxId보다 작거나 같은 ID 목록을 조회해 ids에 저장 (이 시점에는 DB에서 [8,..
Redis의 동작 방식에 대해 아시나요?(with CS)
·
Redis
소프티어 프로젝트 최종 평가 당일 면접관 분께 사용한 기술에 대해 말씀드리게 되었다. Redis의 Geospatial Index 부분에서 여러 질문과 답이 오가던 중 Redis 동작 방식에 대해 여쭤보셨다. 당시 싱글스레드라는 것은 알고 있어서 싱글스레드 방식으로 동작한다라고 말씀드렸더니 ‘왜 싱글스레드 일까요?’라고 물어보셨다. 조금 당황하다가 컨텍스트 스위칭 비용 때문에 싱글스레드를 사용하는 것 같다고 말씀드리면서 넘어갔지만 이에 대해 정확하게 알고 있지는 못한 상태였다. 따라서 더 자세히 공부한 과정을 남겨본다. 1. Redis는 왜 빠른가요?A: Redis는 인메모리 데이터베이스라 빨라요.B: 근데 인메모리면 왜 빨라요?? 가장 기본적인 CS 내용이다. 이에 대해 잘 모르겠다면 빠르게 알아보고 넘..
[메시지큐] RabbitMQ 샅샅이 파헤치기(Ft. 지연 메시지)
·
메시지큐
RabbitMQ를 사용하게 된 계기소프티어 부트캠프에서 진행중인 두리번 프로젝트에서 유저가 출발하기를 한 후 3시간 뒤에 유저의 상태를 피드백 상태로 바꾸는 기능이 필요했다.처음에는 이를 스프링의 TaskScheduler를 통해 구현했지만 메모리에 저장되는 방식이라 서비스 도중 서버 장애로 Restart 되는 경우가 발생한다면 전부 날아가 버린다.또한 분산 서버 환경에서도 사용할 수 없다.(위와 같은 이유)그래서 대체재를 찾던 도중 RabbitMQ에서 TTL 설정을 통한 지연메시지 발급이 가능하다는 것을 알게 되었고 이를 사용해 보기로 하였다.    RabbitMQ 구조도Exchange의 경우에는 로드밸런서처럼 앞단에서 라우팅하는 역할이라 생각하면 편하다.또한 Direct, Topic, Fanout과 같..
chobo99
초보개발자