회사에서 결제모듈을 만들어서 넣어야 하는데 노드에 오픈소스가 많아서 asp.net을 사용하고 있는 지금 서버에 어떻게 적용할 수 있을지 생각해봐야된다.
또는 asp.net에서 결제관련 모듈을 찾아야할 것 같다.
- asp.net에서 사용가능한 결제 모듈을 제공해주는 PG를 찾는게 더 나을 것 같다.
웹서버
- Node.js는 많이 사용하고 있지만 나머지 웹서버는 사용을 안해봐서 잘 몰랐기 때문에 이번에 정리 된 글을 찾아서 그 글을 읽으면서 정리해보려 한다.
Apache vs IIS vs Nginx vs Node.js
What are Web servers?
- 클라이언트 - 서버 모델의 웹 응용프로그램과 함께 작동
- 사용자의 작업처리 요청
- 서버에서 반환된 (쿼리) 결과
Web servers limits
-
웹서버는 IP 주소(및 TCP 포트) 당 제한된 수의 동시 클라이언트 연결만 처리할 수 있다
-
초당 특정 최대 요청 수(RPS, 초당 쿼리)를 처리할 수 있기 때문에 load(요청) 제한을 두었다
- QPS) HTTP 요청 유형, 설정, 캐시 및 하드웨어에 따라 다르다
-
각 서버에는 요청을 처리하기 위한 전용 "resource(자원 : 하드웨어)"(RAM, CPU 등)이 있습니다.
-
이러한 resource는 흐름 및 프로세스에서 사용됩니다.
-
요청 처리에서 resource 분배의 차이는 상승한 웹 서버의 주요 차별화 요소입니다
Process-based web servers : Apache, IIS
- Apache, IIS는 각 요청이 별도의 스레드 / 프로세스 중 프로세스 기반으로 처리된다
- 프로세스 기반 웹 서버
- 모든 클라이언트 요청에 대해 별도의 프로세스/스레드를 사용
- 각 스레드/프로세스는 일정 수의 서버 리소스(하드웨어)를 필요로 함
- 보류 중인 요청이 있을 때 까지 서버 리소스를 "idle/not used"으로 유지하고 클라이언트에게 응답을 보냄
- 선택한 프로세스 흐름이 모든 요청을 처리하기에 충분하지 않을 때 높은 load(부하)에서 성능이 나빠짐
Event-based web servers: Nginx, Node.js
- 이벤트 기반 웹 서버
- 이벤트 기반 웹서버는 모든 리소스(하드웨어 자원)을 사용
- 루프 이벤트(끊임 없는 요청 싸이클)
- 이 싸이클은 요청의 상태를 추적한다(요청 - 고객의 요청 수신, 응답의 처리 및 전송)
- 싱글 프로세스/스레드는 가능한 빨리 요청을 처리할 수 있도록 모든 웹서버 자원을 사용하고, 대기열에서 다른 요청과 작업에 지연의 경우(클라이언트에 데이터를 전송하기 위해 클라이언트에서 데이터를 획득) (이벤트 대기열) 즉, 비동기식 입니다.
결론
이벤트 기반(Node.js, Nginx)은 서버가 다른 스레드/프로세스 간에 리소스를 공유할 필요가 없기 때문에 높은 부하에서 더 나은 성능을 보여줍니다.
또한 서버 리소스는 항상 "다운타임"없이 사용됩니다.
참고 문헌
결제
PG(Payment Gateway)