본문 바로가기

분류 전체보기

(179)
결제 시스템 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 해도 계속 유지 하지만 ..
JWT(JSON Web Token) 1.JWT(JSON Web Token) (1) 유저의 정보를 담은 객체를 암호화하여 문자열로 만들어 암호화된 키(accessToken)를 브라우저로 전달해 줌 (2) 브라우저 저장소에 저장해두었다가 유저 정보가 필요한 API를 사용할 때 API 요청과 함께 보내주면, 이를 백엔드에서 복호화해서 사용자를 식별한 후 접근이 가능하게 함 (3) 발급 받아온 서버에서 정상적으로 발급을 받았다는 증명하는 signature를 가지고 있음 (4) 사용자 정보를 DB를 열어보지 않고도 식별 할 수 있게 됨 2. JWT 토큰의 구성 (1) header: 토큰의 타입, 암호화 시 사용한 알고리즘 정보 (2) payload: 토큰 발행정보(발행자, 발행일, 만료일) (3) signature : 토큰의 비밀번호 3. JWT ..
DB Schema / ERD 1. DB Schema (1) 데이터 베이스 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조 (2) 데이터 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성 (3) 데이터베이스 사용자가 자료를 저장, 조회, 삭제 변경 할 때 데이터베이스 스키마를 참조하여 명령을 수행 (4) 스키마의 3층 구조 외부 스키마(External Schema) : 프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것 개념 스키마(Conceptual Schema) : 모든 응용 시스템과 사용자들이 필요로하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것 내부 스키마(Internal Schema) : 전체 데이터베이스의 물리적 저장 ..
TypeORM 1. TypeORM (1) TypeORM은 NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, TypeScript, JavaScript (ES5, ES6, ES7, ES8) 등등에서 지원되는 ORM (2) ORM은 객체지향프로그래밍을 사용하는 타입 시스템들 사이에서 데이터를 변환하기위한 프로그래밍 기술 2. Active Record pattern (1) 소프트웨어 엔지니어링에서 활성 레코드 패턴은 아키텍처 패턴 (2) 메모리 내 개체 데이터를 관계형 데이터베이스에 저장하는 소프트웨어에서 찾을 수 있음 (3) model 안의 모든 요청 방식을 정의할 수 있음 (4) model 방식을 통하여 저장, 삭제,객체 불러오기를 할..
Typescript 1. Typescript (1) Typescript는 자바스크립트에 타입을 부여한 언어 (2) 자바스크립트의 확장된 어넝 (3) 자바스크립와 달리 브라우저에서 실행하려면 컴파일을 거쳐야 함 2. Typescript 사용 이유 (1) 에러의 사전 방지 function sumJs(a, b) { return a + b; } sum(10, 20); // 30 sum('10', '20'); // 1020 typescript는 다음과 같이 의도치 않은 코드의 동작을 예방 할수 있음 function sumTs(a: number, b: number) { return a + b; } (2) 코드 가이드 및 자동 완성(개발 생산성 향상) function sumTs(a: number, b: number): number { ..
NestJS 1. NestJS (1) NestJS는 TypeScript를 지원하는 Node.js의 서버 어플리케이션 프레임워크 (2) 효율적이고 확장 가능 (3) OOP(Object Oriented Programming) 객체지향 프로그래밍, FP(Functional Programming) 함수형 프로그래밍, FRP(Functional Reactive Programming) 비동기 함수 프로그래밍 (4) Node.js, Javascript 를 위한 모듈, 라이브러리들이 존재 했었지만 구조적(Architecture) 문제를 해결하지 못하여 등장 (5) Java의 Spring과 Python의 장고 같은 프레임워크 들이 있는데 Java의 Spring과 유사함 (6) Architecture를 통일하고 소통 비용을 절감함으로..