- Published on
결제 원리 및 Thread 에 대해서
- Authors
- Name
- 길재훈
결제
결제가 어떻게 이루어지는지의 흐름
[ browser ]
|
| <--- 브라우저에서 결제 요청
|
[ backend server ]n
| <--- 결제솔루션사에서 해당 PG사 결제요청
|
[ PG(Payment Gateway)'s ]
|
| <--- 카드사에 결제요청
|
[ Card Companies ]
결제가 이루어진이후 imp_uid 같은 결제 ID 를 보내준다.
받은 response 에는 다음과 비슷한 객체를 가질것이다.
{
imp_uid: "imp_123456",
amout: ...
date: ....
...
}
이렇게 받은 response 를 사용하여 backend 에서 다시한번 해당 결제 정보를 결제솔루션 사에서 확인한 이후, DB 에 저장한다.
승인과정
[ 결제승인 ]
^
|
| <-- 결제 연동 최소일정:
| PG 계약 (1주일)
| 카드심사(2주일)
| 아무리 빨라도 3주일 필요
|
v
[ PG 사 ]
^
|
| <-- <카드사심사>
| <-- 결제 실패 요인: 도박, 경매, 결제금액 직접 입력 안됨... 등등...
|
v
[ 카드사 ]
PORTONE
결제솔루션사
PORTONE 에서 원하는 API 를 사용하여 구현 가능하다.
Javascript
new Date 의 의험성
client에서new Date()로 사용하는것은 신뢰하기 힘들다.
new Date는 컴퓨터에 사용되는 시간에 의존한다. 시간은Backend에서 요청받은 시간을 사용하는것이 좋다.가급적, 시간 관련해서
new Date를 사용하지 않는 것이 좋다.
시차(UTC)
UTC 는 세계표준시간 이다.
UTC 시간으로 계산한후
DB에 저장한다.
UTC 시간으로 DB 에 저장한후, 시간이 다른 한국 이 아닌 미국 으로 data 를 보낸다고 가정하자.
UTC 에서 미국의 시차만큼 차감 해 주면, 미국 현지 시간에 맞추어 data 전송이 가능하다.
하지만 이러한 과정은 불편하다.
이러한 과정을 쉽게 해결해주는
libray가 있다. .
>
moment.js
Event trigger 시키는법
이벤트 발생시킬시 보통 2가지 상황이 발생한다.
- 사용자의 행동 (click, typing)
- 특정 시간에 도달 --> crontab 사용
싱글스레드 VS 멀티스레드
프로세스 ==> 프로그램 스레드 ==> 프로그램 내에서 일하는 일꾼 CPU ==> 실제 처리되는 곳
스레드가 많다고 해도 실제 처리 되는곳은 CPU 이다. 그러므로, 스레드는 일을 분담해서 나눌뿐, 처리 되는 곳은 CPU 이므로 멀티스레드라고 해서 빠르지는 않다.
멀티스레드 처리방식
하나의 일을 각thread가 조금씩 조금씩 여러개를 처리하는것 처럼 보일수 있다. 이른context switcing이라 한다싱글스레드 처리방식
모든 일을 하나하나씩 각계격파하듯 처리한다.
그렇다고 Single thread 가 좋지만은 않다. Single thread 는 하나씩 일을 처리 하므로, 오래걸리는 작업이 있다면, 오래걸리는 시간 만큼 기다린다.
하지만 Multi thread 는 오래걸리는 작업이 있더라도 다른 작업을 같이 조금조금씩 여러개를 처리하므로, 마치 동시에 처리되는것 처럼 보여준다. 즉 오래 걸리는 작업이 있다고 하더라도, 여러 작업을 분할해서 처리하기에 멈춤없이 사용한다.