목록전체 글 (305)
Jest Jest 란 페이스북에서 만든 것으로, 완성한 각종 기능들이 정상 작동하는지 파악하는데 도움을 주는 라이브러리이다. 해당 라이브러리는 NestJS에 내장되어 있어 쉽게 사용이 가능하다는 특징을 가지고 있다. Jest 가 필요한 이유에 대해 가볍게 설명하자면, 개발자의 의도대로 작동하고 있던 API 라고 하더라도 타 API나 함수가 개입하게 된 후에도 이전처럼 정상작동한다는 보장이 없을 뿐더러, 매번 기능을 추가할 때마다 기존의 API를 일일히 모두 정상작동하는지 확인할 수도 없는 노릇이다. 하지만 Jest 를 사용하게 되면 TestCode를 작성해 둘 경우 테스트를 통해 한번에 모든 기능들의 작동을 확인할 수 있다는 장점을 가진다. 테스트를 진행하는 방식으로는 unit test : 프로그램 내 ..
DNS DNS 란, Domain Name System의 약자로, 웹 사이트의 IP주소와 도메인 주소를 이어주는 역할을 한다. 굳이 따지면, 'zynoob.tistory.com'이라는 사이트를 IP주소로 변환시켜 브라우저가 접속할 수 있도록 하는 것을 말한다. 방식은 위와 같다. 1. 브라우저에서 어떤 사이트에 대해 접속을 시도하면, 2. DNS 서버는 이 주소를 받아 해당 key에 맞는 value(IP주소) 를 반환하게 되고, 3. 브라우저는 반환받은 IP주소로 접속하게 된다. 이때 DNS 서버는 세상에 넘쳐나는 도메인 주소들을 계층화하여 각기 다른 서버에 저장하게 된다. Load Balancer 앞서 DNS에 대해 설명하면서, 수많은 주소들을 각기 다른 서버에 저장한다고 얘기했다. 이는 서버에서 클라이..
TDD TDD (Test Driven Development)는 '테스트 주도 개발'의 약어다. 기본적인 정의로는, 경영학에서의 'Plan - Do - See' 의 방식과 같은 피드백 과정을 프로그래밍 과정에서도 사용하는 것을 의미한다. 프로그래밍에서는 '실패 코드 작성 - 성공 코드 작성 - 리팩토링 코드 적용' 의 과정을 거치며 TDD가 이루어지게 되는데, TDD 가 여러 번 이루어질수록 해당 코드에서 오류가 일어날 가능성이 적어지며 더욱 안정성을 가질 수 있게 된다. TDD의 장단점 위와 같은 방식의 장점으로는 사소한 실패 코드를 작성하고 이를 피해 프로그래밍함으로써 프로그래밍 중 나타나는 오류들을 최소화시킬 수 있으며, 등장하는 오류들의 원인이 무엇인지 파악하기 쉬운 편이고, 이로 인해 리팩토링 시..
미래의 나에게 yarn add redis yarn add cache-manager@4.1.0 yarn add cache-manager-redis-store@2.0.0 yarn add --dev @types/cache-manager-redis-store yarn add jsonwebtoken 기존에 만들어 둔 로그인 프로세스의 경우, refreshToken 이 만료되지 않으면 로그아웃이 되지 않는다는 단점이 있었다. 따라서 이번에는 제대로 된 로그아웃 프로세스를 구현하려고 하는데, 이번에는 redis 를 이용하여 API 를 만들어 보도록 한다. about redis 2023.02.13 - [코딩/알쓸코잡] - Redis Redis Redis Redis(REmote DIctionary Server) 란, 비..
마이크로서비스 아키텍쳐 마이크로서비스 아키텍쳐(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모빌리언스, 다날, 카카오페이 ..