목록전체 글 (305)
트랜잭션 트랜잭션은 DB 내에서 한 묶음으로 처리되야 하는 명령어들을 모아 놓은 최소 작업 단위를 의미한다. 트랜잭션은 데이터의 일관성을 유지하며 안정적으로 데이터를 복구하는 것이 목적으로, 여러 단계로 나뉘어진 단계들을 한 가지의 단계로 다룰 수 있다는 특징을 가진다. 때문에 트랜잭션 내에 포함된 명령어들이 모두 정상적으로 처리되면 정상 종료되며, 반대로 하나의 명령어에 문제가 생겼을 경우 명령어 전체가 취소될 수 있다. 위와 같은 처리는 트랜잭션이 작업 처리의 일관성(Consistency)과 트랜잭션이 모두 반영되거나 그렇지 않다는 원자성(Atomicity)의 특징을 가진다고 볼 수 있다. 추가적으로 트랜잭션은 둘 이상의 데이터들이 명령문에 의해 처리되는 과정이라고도 말할 수 있는데, 트랜잭션 그 말..
Redis Redis(REmote DIctionary Server) 란, 비관계형 데이터베이스(NoSQL) 관리 시스템이다. 'key-value'로 데이터를 저장하며, 처리 및 저장이 빠르다는 장점이 있지만, 비영구적 속성을 지니기 때문에 서버가 꺼질 경우 모든 데이터가 사라진다는 치명적인 단점도 있다. 위와 같은 단점을 가지고 있기 때문에 Redis는 속도 향상을 위한 보조 DB로 사용되는 것이 일반적이며 추가적으로, 데이터에 만료 시간을 지정하여 만료 시간에 도달하면 데이터가 Redis에서 삭제되게 할 수 있으며, 만료되지 않았더라도 메모리가 꽉찰 경우 LRU(Least recently used) 알고리즘에 의해 데이터가 삭제되기도 한다. 위와 같은 이유로 Redis 는 몇몇 페이지를 캐싱하거나 검색..
2023.02.11 - [코딩/알쓸코잡] - 소셜 로그인 프로세스 미래의 나에게 구글 passport-oauth 설치 // 구글 yarn add passport-google-oauth20 yarn add --dev @types/passport-google-oauth20 // 카카오 yarn add --dev @types/passport-kakao yarn add passport-kakao // 네이버 yarn add passport-naver-v2 yarn add --dev @types/passport-naver 오늘은 소셜 로그인 구현에 대해 포스팅한다. 구현에 대한 구체적인 과정은 위에 링크를 남겨두었다. 먼저, 내가 직접 구글로그인이 정상실행되는지 확인할 수 있도록 프론트엔드에서 보여지는 html ..
CORS CORS 란, 동일 출처가 아닌 각기 다른 곳에서 데이터를 주고 받는 것을 허용하는 정책을 의미한다. 한 사이트에서 주소가 다른 서버로 요청을 보낼 때 자주 접하게 되는 오류이기도 하다. (CORS Policy) local:3000 에서, local:4000 으로 통신하는 과정에서 생겼던 오류이기도 했다. 2023.01.14 - [코딩/node.js] - node.js - axios / CORS / apollo-server / graphQL-API(&docs) 생성 CORS 는 기존 SOP(same origin policy) 의 데이터통신 불편을 대체하기 위해 나왔다. 단, CORS 허용이 되었다고 해도 바로 통신이 되는 것이 아니라, 먼저 preflight 를 통해서 CORS 가 허용되어 있는..
이전 포스팅에서는 accessToken 발급을 구현하여 인가하는 방법까지 다뤘다. 허나, accessToken 만으로는 사실 부족한데, accessToken 은 해킹을 당했을 경우 보안에 취약할 뿐더러 유효기간이 짧은 토큰의 경우 그만큼 사용자에게 로그인(accessToken)을 강요하여 불편하다는 단점이 있기 때문이다. 따라서 이러한 점들을 보안하기 위해서 만들어진 것이 refreshToken. refreshToken 은 로그인을 완료했을 때 accessToken 과 함께 발급되며 accessToken 보다 유효기간이 길다. refreshToken 의 유효기간이 만료되면 사용자는 새로 로그인을 하게 되는데 이 또한 해킹의 가능성이 있기 때문에 적절한 유효기간 설정이 필요하다. accessToken : ..
미래의 나에게 jwt 패키지 설치 / bcrypt 패키지 설치 yarn add @nestjs/jwt passport-jwt yarn add @nestjs/passport yarn add --dev @types/passport-jwt yarn add bcrypt yarn add --dev @types/bcrypt 2023.02.10 - [코딩/알쓸코잡] - 인증(Authentication) & 인가(Authorization) 2023.01.30 - [코딩/알쓸코잡] - JWT (JSON Web Token) 이전 포스팅과 연결고리가 많은 포스팅이다. JWT (Jason Web Token) JWT 는 유저를 인증 / 식별하기 위한 토큰 기반의 인증이라고 볼 수 있다. JWT 는 토큰 자체에 [사용자의 권한 정..
소셜 로그인 (social login) 소셜 로그인이란, 소셜 네트워크(SNS) 사이트의 정보를 이용하여 타사의 서비스에 보다 쉽게 로그인할 수 있는 방식을 의미한다. 여기서 사용되는 프로토콜은 OAuth 라고 하는데, 인터넷 사용자들이 패스워드를 제공하지 않고 다른 웹사이트 상에 접근 권한을 부여할 수 있는 수단이라고 보면 된다. 추가적인 회원가입을 할 필요가 없을 뿐더러 비밀번호를 기억할 필요도 사용자로서는 쉽게 서비스를 이용할 수 있게 되었으며, 개발자 & 기업의 경우 사용자에게 데이터를 더욱 안정적으로 제공할 수 있게 된다. 과정 거의 대다수의 사람들이 사용하는 구글을 기준으로 설명하도록 한다. 1. 브라우저에서 백엔드로 로그인을 요청 2. 백엔드에서 브라우저로 구글 로그인 페이지를 전송 3. 브..