[React] 결제프로세스, Event Loop, 싱글스레드, 멀티스레드

badassong·2022년 12월 8일
0

React

목록 보기
12/56
post-thumbnail

결제 프로세스 이해

카드사의 결제를 해주는 PG사 들이 있다.
nicepay, KG이니시스, NHN 등등,,
PG사는 payment gateway라고 해서 결제를 대신 해주는 회사이다.
하지만 pg사를 이용하려면 필요한 api들을 직접 만들어서 이용해야 하기 때문에 굉장히 복잡하고 시간 소요가 많이 된다.

반면 결제솔루션 회사는 필요한 api들이 다 만들어져 있어 api를 요청하기만 하면 되기 때문에 결제를 연동하는 방식이 비교적 간단해서 스타트업에서 많이 사용하고 있다.
예로는 아임포트나 부트페이가 있다.

  1. 결제승인 과정
    결제 과정 ppt를 만든 후 pg사 직원에게 전달(아임포트를 끼던 안 끼던)하고 그 ppt를 pg사가 카드사에 다 뿌린다. 그리고 테스트를 한 후 카드사 심사 과정을 거친다.
     
  2. 결제승인 주의사항
    대기업을 제외한 경매 사이트 같은 곳은 승인이 되지 않는다. 사행성 사이트도 마찬가지다.
    결제금액을 직접 입력해서 결제하는 방식도 안 된다.
     
  3. 결제승인 일정
    기능구현 + 3주(물리적으로!!)

내가 체크해야할 것 =>
1. 각 기능을 구현하는데 소요되는 시간 체크
2. 주기적으로 시간 체크 업데이트
3. 개발자가 아닌 사람과 협의할 때 기능 구현하는데 걸리는 시간을 쪼개서 알린다. 예를 들어 게시판을 개발한다 하면 게시판 목록, 등록, 수정, 삭제, 등등으로 쪼개서 시간을 나눈다.

웹훅노티피케이션 (Webhook)

웹훅노티피케이션이란 특정 이벤트가 발생했을 때 타 서비스나 응용 프로그램으로 알림(Notification)을 보내는 기능입니다. 웹훅노티피케이션을 활용하면 다음과 같은 기능을 구현할 수 있습니다.

개발자는 나 자신보다 다수를 생각하는 습관을 들여야한다!

시간 개념

세계표준시간: UTC
시간을 저장할 때도 UTC로, 전달할 때도 UTC로, 그리고 특정국가의 시간으로 변환한다!!

정기 결제

이벤트 발생시키기
1. 내가 직접 버튼을 클릭해서 실행
2. 나는 가만히 있는데 특정 시간에 자동으로 함수 실행 => 크론탭 실행

이벤트 루프 (event loop)

callStack에서 함수가 실행되는데 그 중에 setTimeout, axios, useMutation, useQuery 같은 것들은 기다려야 하기 때문에 밖으로 빠진다. 그 밖으로 빠진 setTimeout 함수 설정해놓은 시간이 지난 후 TaskQueue로 들어간다.
 
callStack은 for문도 돌려야 되고,, 할일이 많아!
기다리는건 밖에서 기다리지만 일은 callStack에서한다.
callStack 안에 함수 실행이 다 끝나면 TaskQueue에 들어간 함수를 가져와서 실행한다.


이러한 과정이 이벤트루프이다.

싱글쓰레드

그리고 이러한 이벤트루프 작업을 하는 일꾼을 쓰레드 라고 한다!
자바스크립트에서는 이러한 쓰레드가 하나기 때문에 싱글쓰레드라고도 한다!(싱글쓰레드 기반 언어임)
또 다른 말로는 싱글 이벤트 루프 쓰레드라고도 한다!!

뭔가 api 요청이 많고 외부와 연결되서 기다려야 하는 로직이 많을 때 유리한 방법이다!

멀티쓰레드

대부분의 언어는 멀티쓰레드 기반이다. (일꾼이 많다는 의미!)
하지만 동시에 일을 한다는 의미는 아니다. 동시에 하려면 CPU가 많아야하는데
CPU가 진짜 일꾼이고 쓰레드는 가짜 일꾼이다. 동시에 일을 처리하는 것처럼 보이지만 실제로는 그렇지 않다.
저장하고 이동하고 불러오는 (문맥 전환, Context-Switching) 시간이 오래 걸린다. 때문에 실제로 성능이 좋지는 않다. but 동시에 처리하는 것처럼 보일수는 있다!

쓰레드와 프로세스

쓰레드: 프로그램 안에서 실행되는 일꾼
프로세스: 프로그램

profile
프론트엔드 대장이 되어보쟈

0개의 댓글