선착순 예약 프로그램 만들어 보려고 하는데
이거 어떻게 만들어야 하나?
네이비즘 같은데서 서버시간 크롤링해와서
해당 시간에 예약 할 수 있을거 같긴한데
이게 선착순이라 딜레이도 있는데,
어떻게 시간을 판단해서 입력할 수 있을까?
선착순 예약 프로그램 만들어 보려고 하는데
이거 어떻게 만들어야 하나?
네이비즘 같은데서 서버시간 크롤링해와서
해당 시간에 예약 할 수 있을거 같긴한데
이게 선착순이라 딜레이도 있는데,
어떻게 시간을 판단해서 입력할 수 있을까?
Js 심어서 돌리거나 Ui자동화 테스트툴 악용하거나 ㅋㅋ
오 고마워! 하나만 더 물어볼게! 트래픽이 몰리면 서버쪽으로 데이터 전송하는게 딜레이가 생기긴 하니까 선착순을 정확하게 보장할 수는 없는거 아냐?
내용을 html 해석해서 인식하거나 이미지를 캡처해서 인식하거나
답변 고마워! 선착순을 어떻게 보장할 수 있는지가 궁금한데, 해결하는 방법이 있을까?
서버 자체의 딜레이는 자연재해임 어떻게 못함
아 그럼 선착순 상황에서 예약을 보장할 수는 없는거네?ㅠㅠ
다~ 가능하지. 알려주고 싶은데 애매한 부분부터 짚고 가자 정확히 무엇을 원하는 것임? 1. request를 늦게 보낸 사람이 예약에 성공하고, 먼저 보낸 사람이 실패하지 않는 것 2. 다 상관없고 request가 도착한 시점의 시간만 확인하는 것
고마워! 프로그램의 목표는 '선착순으로 예약하는 티켓팅에서 최대한 빠른 순서로 예약하는 프로그램 개발' 이야. 예를 들어 티켓팅이 10:00에 시작한다고 했을 때, 09:59분에 예약을 누르면 오류가 발생해서 안되고 10:00에 예약을 해야해. 이때 어떻게 개발하면 될까?
예매 가능한 시간 이전에 들어온 request들은, 시간의 오차를 최소화해서 막아버리고 싶은거네? 1. WAS에서 처리하는 방법 서버 로직이 시작되기 이전에, request가 수신된 시간과 예약이 가능한 시간을 비교. 예약시간이 지나지 않았다면 로직 진행없이 오류 응답을 전송. 예약시간 이후에만 request 로직을 계속 진행.
2. API 게이트웨이에서 처리하는 방법 먼저 request가 Nginx를 통해 WAS로 라우팅되도록 설정함. Nginx 기능을 이용해서, request가 수신된 시점의 timestamp를 request header에 추가하고 WAS로 라우팅함. WAS는 예약 로직을 실행하고 있을 것이기 때문에, "request가 수신된 시점"과 "시간을 비교하는 시점" 사이에 오차가 발생할 수 있음. 이 오차마저도 최소한으로 줄이는 방법임.
네이비즘(?) 같은 곳에서 서버시간을 크롤링할 필요 없이, WAS에서 OS 시간을 받아올 수 있으니 참고해
내가 애매하게 적었나보네ㅠ 미안 내가 서버쪽이 아니라 클라이언트 쪽이아ㅠㅠ
아하.. 너도 알겠지만 클라이언트는 검사해도 보조적인 역할일 뿐이고, 결국 백엔드가 한 번 더 검사해야 해. 클라이언트에서는 사용자의 로컬 시간을 받아와서 검사해주는 정도면 충분할 것 같은데? 사용자가 request를 조작해서 클라이언트 검사를 건너뛰더라도 서버에서 다시 검증할테니 걱정 말어. 백엔드 개발자인 내 입장에서 생각해보자면 프론트 개발자가 이 정도만 해줘도 충분할 것 같네
응 친절한 답변 고마워! 덕분에 많은 도움됐어!! 감사합니다~
캐싱해