220421_TIL

적자생존·2022년 4월 21일
0

TIL

목록 보기
26/35

오늘의 목표

  1. 결제 API Iamport
  2. 결제시간 Advanced-Date-Issue
  3. EventLoop / TaskQueue
  1. 결제 API

결제의 종류
카드결제, 계좌이체, 무통장입금, 정기결제 등,,,

PG사와 계약을 통해서 결제시스템 구축
결제대행사(NHN, 나이스페이, KG이니시스)

너무 복잡함,,,
그래서 이걸 대행하는 회사가 있음

결제솔루션 회사
(아임포트, 부트페이 등등)

PG사와 연결하고 API를 열어둠(REST api)

결제흐름도

결제 후 백엔드에

모바일 결제
결제 방식
1. 모바일에서 크롬브라우저(mobile web) 열고 접속한 사이트에서 결제하는 방식
2. 모바일 앱에서 구글 결제를 통해서 결제하는 방식

모바일로 결제하면 nicepay회사의 주소로 넘어감
그렇다면
1. 결제 후 어디로 돌아갈 것인가? 돌아갈 주소
m_redirect_url을 이용해서 돌아감

  1. 결제 후 request_pay부분이 날라가서 mutation을 어떻게 날릴 것인가?
    문제가 발생하게 됨
    2번은 아임포트 자체에서 백엔드로 다이렉트로 꽂아줌(웹훅 노티피케이션)

  2. 결제시간 확인
    new Date() ??
    이건 컴퓨터 세팅 시간이 달라서 안됨
    이건 해도 되지만 서버에 보내면 안됨
    백에서 받은건 괜찮지만 프론트에서는 함부로 하면 안된다

그럼 어떻게?

시간 동기화 해주는 컴퓨터가 필요함(NTP서버)

글로벌서비스의 경우?

다 시간이 다름

근데 이때 백엔드로 넘기고 DB에서는 세계표준시(UTC)로 저장함
UTC기준으로 국가마다 시차를 더함

fetch(백에서 프론트로) 넘길 때 UTC + 시차 더해서 넘겨줌

근데 이게 또 라이브러리가 있음
moment.js

  1. 자동으로 이벤트 방법

  2. 사용자가 버튼클릭 마우스 클릭 등으로 이벤트 발생

  3. 모두가 가만히 있는데 특정 시간에 자동으로 이벤트 발생
    크론탭이 있음
    예를들어
    3:00에 http://mysite.com/graphql 로 이동해줘라고 명령어를 넣을 수 있음

setTimeout, setInterval은 옳바르지 않음

const onClickTimer = () => {
    console.log(
      "=========================================시작========================"
    );
    setTimeout(() => {
      console.log("0초 뒤에 실행될 거에요");
    }, 0);
    console.log(
      "=========================================끝=========================="
    );
  };

의 경우 시작 끝이 나오고 0초뒤에 실행될 거에요가 나옴

자바스크립트이 경우 시간에 관련된 로직은 바로 실시가 되지 않고 나중에 실행됨

이를 위해서 스태과 큐를 알아야 함

Callstack
TaskQueue

callstack의 데이터(background(webAPI)) 이는 시간을 기다리는 것들은 밖으로 빼서 TaskQueue에 넣고 시간이 지난뒤 실행한다 이때 시간을 기다리지 않는 것들은
Callstack에서 실행이 되고 시간이 지나면 TaskQueue에 실행된 결과를 다시 Callstack에 넣고 결과를 받아옴
이를 이벤트 루프라고 하고 이 작업을 하는 것이 쓰레드(이벤트루프쓰레드, 싱글쓰레드)이다

쓰레드 일꾼

프로세스 프로그램

자바스크립트는 싱글쓰레드임

다른언어는 멀티쓰레드임

자바스크립트는 요청이 들어오면 쓰레드 하나가 일을 하기 때문에 다른 함수 및 이벤트는 실행이 안됨

멀티쓰레드의 경우는 쓰레드마다 일을 지정해줘서 동시에 다중으로 일을 할 수 있음 엄밀히 얘기하면 동시처리는 아님
CPU한개당 일꾼을 만들어서 일꾼마다 일 지정해주고 저장하고 다른 일꾼 일하고 저장하고 방식이 빨리 되서 동시에처리되는것처럼 보임
CPU가 여러개면 동시에 처리가 됨
싱글쓰레드보다 오래 걸림
하지만 다른게 블락이 안되고 먼저 끝나는 처리는 먼저 끝남

profile
적는 자만이 생존한다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN