목록개발 (301)
마이크로서비스 아키텍쳐 마이크로서비스 아키텍쳐(MicroService Architecture)는 MSA 라고도 불린다. 마이크로서비스는 정확히 콕 짚어 무엇이라 정의할 수는 없지만, 작고도 독립적으로 배포가 가능한 '각각의 기능'을 수행하는 서비스로 구성된 프레임워크라고 볼 수 있다고 한다. 각각의 서비스마다 서버를 열어 관리하는 방식으로 이해하는 것이 편하다. 모놀리식 아키텍쳐 마이크로서비스 아키텍쳐의 반대 개념은 모놀리식 아키텍쳐인데, 모놀리식 아키텍쳐는 각 기능이 독립적으로 수행되는 것이 아닌 한 프로젝트 안에서 단일 서비스로 실행되게 구현한 아키텍쳐를 말한다. 모든 프로세스는 각 기능들이 긴밀히 연결되어 있기 때문에 복잡하고, 한 서비스에 대한 수요가 급증할 경우 해당 아키텍쳐 전체를 확장해야 한..
로그인 관련 포스팅 2023.02.04 - [코딩/알쓸코잡] - Login process 2023.02.12 - [코딩/nest.js] - NestJS - login process 구현 (refresh Token) 2023.02.11 - [코딩/알쓸코잡] - 소셜 로그인 프로세스 2023.02.12 - [코딩/nest.js] - NestJs - 소셜로그인 구현(google login) Logout process 로그아웃 프로세스란 그 말마따나 로그아웃 과정을 의미한다. 이는, 로그인 프로세스에서 발급했던 accessToken & refreshToken 을 반대로 만료시키는 방법을 통해 로그아웃 프로세스를 구현할 수 있다. 1. 사용자가 로그아웃 요청 2. 백엔드 서버에서 사용자 입력값과 DB 값 비교 3..
이미지 업로드 프로세스 이미지의 경우 데이터를 다룰 때, 타 데이터를 DB에 저장하는 방식과 다른 방식을 사용한다. 그 이유는 이미지 자체가 갖는 용량이 상대적으로 매우 크기에 DB 저장에 비효율적이기 때문이다. 따라서, 실제 이미지는 다른 컴퓨터 || storage 에 저장하고, DB에는 이미지가 갖는 이미지 주소만을 저장한 뒤에 필요할 때 주소를 참조하여 사용한다. 과정은 다음과 같다. 프론트엔드 브라우저에서 사용자가 이미지를 저장하기 위한 파일 태그를 생성한다. **(input type='file'/>) 업로드 요청 API를 받은 백엔드는 해당 이미지를 스토리지에, 이미지 주소를 DB에 각각 저장한다. 이후, 이미지 열람을 원하는 경우가 생긴다면, 위와 같은 방식으로 열람 또한 진행된다. 프론트엔드..
미래의 나에게 포트원 SDK PG사 & 카드사 프로세스에 대한 간단한 이해 웹 결제에 대한 프로세스는 다음과 같이 이루어진다. 1. 구매자가 구매할 상품에 대한 정보와 금액을 판매자에게 전달 2. 판매자는 전달받은 금액을 PG사에게 결제해줄 것을 요청 3. PG사는 요청받은 정보를 은행사에게 다시 결제 요청 4. 은행사는 요청받은 금액을 구매자의 계좌에서 출금 후 PG사로 전달 5. PG사는 판매자에게 금액을 전달 (일정량의 수수료를 제외) 6. 판매자는 금액 확인 후, 구매자에게 상품 배송 **PG사 : Payment Gateway 의 준말로, 구매자와 판매자 사이의 결제를 대행해주는 역할을 담당한다. 대표적으로 KG이니시스 / NHN / KCP , 모바일 환경으로는 KG모빌리언스, 다날, 카카오페이 ..
트랜잭션 트랜잭션은 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 가 허용되어 있는..