본 게시물은 이전에 운영하던 velog에서 작성됨 (2023년 4월 22일 작성) 프로젝트에는 카카오 로그인과 네이버 로그인 둘 다 구현했는데, 둘 다 흐름이 매우 비슷해서 네이버 로그인만 정리해도 될 것 같다. node.js 진영에서는 인증 구현할 때 passport 라이브러리를 굉장히 많이 쓴다고 들었는데, OAuth 방식으로 인증이 어떻게 이루어지는 지 흐름도 익힐 겸 passport 없이 했다. 한 번 훑으면 passport도 쉽게 익힐 수 있지 않을까 싶다. 네이버 로그인 API 공식 문서를 참조했다. 🐱 전체적인 흐름 사전에 Naver Developer에서 애플리케이션을 등록하고 클라이언트 ID와 클라이언트 secret을 발급받는다. 프론트엔드에서 https://nid.naver.com/oau..
본 게시물은 이전에 운영하던 velog에서 작성됨 (2023년 4월 6일 작성) 유튜브를 둘러보다가 'Redis 야무지게 사용하기'라는 영상을 보게 되었다. NHN FORWARD 2021 Redis 야무지게 사용하기 영상을 본지는 꽤 오래되었다. 영상 앞 부분에서 설명해주신 캐싱 읽기 전략을 직접 구현해보고 싶었는데, 이제서야 프로젝트에 적용하게 되었다. 💥 로직 전체적인 흐름은 다음과 같다. 프론트엔드에게 postId를 받음 redis 인스턴스에서 postId에 해당하는 데이터를 가져옴 만약 redis 인스턴스에서 가져온 데이터가 없으면 mysql에서 postId에 해당하는 데이터를 가져옴 데이터를 redis 인스턴스에 저장하고 프론트엔드에게 리턴 만약 redis 인스턴스에서 가져온 데이터가 있다면 곧..
본 게시물은 이전에 운영하던 velog에서 작성됨 (2023년 3월 12일 작성) 서버 scale-out 시 세션 불일치 문제가 발생하기 마련이다. sticky 세션이나 클러스터 세션 등 여러 방법으로 해결할 수 있지만 세션 스토리지로 세션들을 관리하는 것이 가장 좋은 방법인 것 같다. 물론 모든 것에는 트레이드 오프가 있듯이 세션 스토리지 서버가 다운되면 인증 로직 자체가 작동할 수 없다는 단점도 있으나 나머지 둘 보다 낫다고 생각한다. (DB 레이어에서 고가용성을 위한 방법이 또 여러가지 있으니까) 아무튼 REDIS를 이용해서 세션 스토리지를 구성했다. REDIS는 이번에 처음 사용해보는데, 데이터가 key-value 구조고 이에 따라 명령어도 단순해서 굉장히 편하다는 느낌을 받았다. 😺 세션 스토리..