Javascript/NestJS (14) 썸네일형 리스트형 Redis 1. Redis (1) Memcached와 비슷한 캐시 시스템으로 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원 (2) Redis는 모든 데이터를 메모리에 저장하고 조회, 인메모리 데이터베이스 (3) 다양한 자료구조를 제공하여 개발하기에 편함 (4) 키-값 저장소로 NoSQL 2. Redis의 특징 (1) 영속성을 지원하는 인메모리 데이터 저장소 (2) 읽기 성능 증대를 위한 서버 측 복제를 지원 (3) 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지우너 (4) 다양한 서비스에서 사용되며 검증된 기술 (5) literal, list, hash, set, sorted set 과 같은 다양한 데이터형을 지원 (6) 메모리 저장소임에도 불구하고 다양한 데이터.. Transaction 1. 프로세스에서 발생 가능한 문제점 (1) 한 프로세스에서 여러가지 일을 해야 할 대 중간에 에러가 생겨 로직이 끝났다면 앞서 실행된 로직은 수행이 되고 뒤 쪽 로직이 수행되지 않는 다면 데이터 오염이 발생 (2) 이런 데이터 오염이 발생하는 문제를 해결하기 위해 ACID 트랜잭션을 사용 2. Transaction (1) transaction은 처리되는 작업의 단위 (2) Business Logic 에서 굉장히 중요한 기능 (3) 서로 다른 트랜잭션들을 처리하는 도중 하나의 단위 트랜잭션에서 에러가 발생한다면 이전에 성공한 트랜잭션들을 다시 rollback 시켜 데이터 Consistency가 깨지지 않도록 해줌 (4) 모든 작업이 성공 했을 경우 commit을 통해 확정 3. DB의 Transactio.. 이미지 업로드 1. Image Upload Process(Brower -Frontend-Backend) (1) 브라우저에서 사용자가 업로드할 이미지 파일 선택 (2) 브라우저에서 선택된 파일을 변수에 저장 (4) 브라우저에서는 파일 객체를 백엔드 서버에 업로드 요청을 함 (5) 백엔드 서버에서는 API를 통해 받은 파일을 DB에 저장 시 BLOB 타입으로 저장 (6) 파일은 큰 용량을 차지 하기 때문에 DB에 저장하지 않음 => Storage service를 제공하는 Cloud에 저장 2. Image Upload Process(Brower - Frontend-Backend -Cloud) (1) 브라우저에서 파일 첨부 후 파일 업로드 API를 요청하면 Storage에 파일을 저장 (2) Storage에서는 파이르 저장한.. 소셜 로그인 1. 소셜로그인 (1) 소셜 로그인은 Kakao, Naver, Google 과 같은 소셜 네트워킹 서비스의 기존 정보를 사용하여 웹사이트용으로 특별히 새 로그인 계정을 생성하는 대신 제 3자의 웹사이트에 로그인하는 SSO의 한 형태 (2) 사용자의 로그인을 단순화하고 웹 개발자에게 점점 신뢰있는 정보를 제공하도록 설계 (3) 일반적으로 플러그인이나 위젯을 사용하여 하나 이상의 소셜 네트워킹 서비스에서 웹사이트로 계쩡을 연결 (4) 사용자는 원하는 소셜 네트워킹 서비스를 선택하여 해당 서비스에 대한 로그인을 사용하여 웹사이트에 로그인을 함 (5) 사용자가 여러 사이트의 로그인 아이디나 비밀번호를 기억할 필요가 없고, 소셜 네트워킹 서비스에서는 사이트 소유자에게 통일된 정보를 제공 2. 소셜 로그인 인증 (.. CORS 1. CORS (Cross-Origin-Resource-Sharing) (1) 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제 (2) 리소스가 자신의 출처(도메인, 프로토콜, 포트) 와 다를 때 교차 출처 HTTP 요청을 실행 (3) CORS 체제는 브라우저와 서버 간의 안전한 교차 출처 요청 및 데이터 전송을 지원 (4) 최신 브라우저는 XMLHttpRequest 또는 Fetch와 같은 API에서 CORS를 사용하여 교차 출처 HTTP 요청의 위험을 완화 2. 기능적 개요 (1) 교차 출처 리소스 공유 표준은 웹 브라우저에서 해당 정보를 읽는 것이 허용된 출처를 서버에서 설명할 수 있는 새로운.. 결제 시스템 1. 결제 프로세스 (1) 구매자가 상품에 대한 정보와 금액을 판매자에게 전달 (2) 판매자는 전달받은 금액을 PG사에게 결제해줄 것을 요청 (3) PG사는 요청받은 정보를 은행사에게 다시 결제 요청 (4) 은행사는 요청받은 금액을 구매자의 계좌에서 출금 후 PG사로 전달 (5) PG사는 판매자에게 금액을 전달(수수료 제외) (6) 판매자는 금액 확인 후, 구매자에게 상품 배송 2. PG사 (Payment Gateway) (1) 구매자와 판매자 사이의 결제를 안전하게 이뤄질 수 있도록 대행해주는 역할을 하는 회사 (2) 대표적인 PG 사 : KG 이니시스, NHN, KCP, LGU+ (3) 모바일 환경: KG 모빌리언스, 다날, 카카오Pay 3. 결제 솔루션 (1) 결제 시스템을 직접 구현하는데는 위와 .. Authentication / Authorization 1. Authentication(인증) (1) 유저가 아이디와 비밀번호로 로그인 (2) 서버에서 해당 계정 정보를 검증 (3) 계정 정보가 정확하다면, 서버 측에서 유저에서 accessToken 발급 (4) 클라이언트 측에서 전달 받은 토큰을 저장해두고, 서버에 요청을 할 때마다 해당 토큰을 함께 서버에 전달 (5) 서버는 토큰을 검증, 요청에 응답 2. 기존 서버 기반 인증 시스템 (1) 서버가 유저의 인증 기록을 세션에 저장, 로그인 유저가 많아지면 서버가 과부하 (2) 세션을 사용하면 분산된 시스템을 설계하고 서버를 확장하는 것이 어려움 (3) 세션을 관리할 때 사용되는 쿠키는 여러 도메인에서 관리하는 것이 번거로움 (4) 위와 같은 시스템의 단점을 보완하기 위해 토큰 기반 인증 시스템을 사용하게 .. 암호화 (단방향, 양방향) 1. 암호화 (1) 평문(Plaintext) : 해독 가능한 형태의 메세지(암호화된 메시지) (2) 암호문(Cipertext) : 해독 불가능한 형태의 메시지(암호화된 메시지) (3) 암호화(Encryption) : 평문을 암호문을 변환하는 과정 (4) 복호화(Decryption) : 암호문을 평문으로 변환하는 과정 2. 암호화의 종류 (1) 양방향 암호화 : 암호화와 복호화 과정을 통해 송, 수신 간 주고 받는 메시지를 안전하게 암호화하고 평문으로 복호화 하는 과정 (2) 단방향 암호화: 해싱(Hashing)을 이용한 암호화 방식 , 평문을 암호문으로 암호화는 가능하지만 암호문을 평문으로 복호화는 불가능 3. Hash(단바향 암호화) (1) 원본데이터를 매핑시켜 완전히 다른 암호화된 데이터로 변환 (2.. Login Process 1. 사용자가 로그인 2. 서버에서 사용자가 입력한 ID, PW를 회원 DB에서 값을 비교(Authorization) 3. 로그인이 완료되면 accessToken(JWT), refreshToken(JWT) 발급 accessToken : 해당 데이터 payload를 통해 전달 refreshToken : 쿠키를 통해 전달 4. 만료된 accessToken을 첨부하여 요청을 보냄 5. 서버가 인가를 해보면서 토큰이 만료되었음을 확인하고 에러를 반환 accessToken 만료가 되어 인가시 에러가 반환되면 refreshToken으로 accessToken을 재발급 받는 API를 프론트에서 요청 6. 토큰이 만료되었음을 확인하고 토큰 재발급 요청(restoreAccessToken)를 쿠키와 함께 요청 restore.. 브라우저 저장소(Web Storage), Cookie 1. Web Storage (1) HTML5부터 제공하는 기능으로 , 특정 데이터를 서버가 아니라 클라이언트 브라우저에 저장 할 수 있도록 제공하는 기능 (2) 키/값 쌍으로 데이터를 저장, 키를 기반으로 데이터를 조회 (3) 사이트의 도메인 단위로 접근이 제한 2. Web Storage Type (1) LocalStorage 브라우저를 닫았다가 다시 열어도 계속 유지 저장한 데이터를 명시적으로 지우지 않는 이상 영구적으로 보관이 가능 도메인마다 별로도 LocalStorage가 생성 도메인만 같으면 전역으로 공유가 가능 Windows 전역 객체의 LocalStorage라는 컬렉션을 통해 저장과 조회 됨 (2) SessionStorage 브라우저가 열려있는 한 페이지를 Reload 해도 계속 유지 하지만 .. 이전 1 2 다음