Survey 저장중 발생하는 지연현상에 대한 최적화(비동기 처리)
·
Node.js
TravEat 어플에서 Survey tag를 통해 자신이 원하는 tag선택하여 알맞는 음식 상품에 대한 결과가 도출되게 한다. 하지만 여기서 문제점은 Survey에 대한 저장시간이 오래걸리면서 사용자의 불편을 초래하게 된다는 것이다. Survey의 saveSurvey 메서드를 호출하면서 해당 API (api/survey/save-survey)를 테스트한 결과 응답 시간이 39.64초로 지나치게 오래 걸리는 문제가 발견되었다. 이로 인해 사용자 경험이 저하될 가능성이 높아지고, 시스템의 성능 병목 현상이 발생할 우려가 있었다. 해당 병목 현상에 대한 문제를 해결하기 위하여 비동기 처리를 하여 성능을 개선하고자 했다. 왜 비동기 처리를 해야 하나요?saveSurvey 메서드 내에서 여러 데이터베이스 연산과 ..
Node.js 란?
·
Node.js
Node.js는 비동기 이벤트 기반의 JavaScript 런타임으로, 확장 가능한 네트워크 애플리케이션을 구축하도록 설계되었습니다. 다음의 "hello world" 예제에서는 많은 연결을 동시에 처리할 수 있습니다. 각 연결마다 콜백이 호출되지만, 할 일이 없으면 Node.js는 대기 상태가 됩니다.이는 운영 체제 스레드를 사용하는 오늘날의 더 일반적인 동시성 모델과 대조됩니다. 스레드 기반 네트워킹은 상대적으로 비효율적이며 사용하기도 매우 어렵습니다. 또한, Node.js 사용자는 락(lock)이 없기 때문에 프로세스가 데드락에 걸릴 걱정을 할 필요가 없습니다. Node.js의 거의 모든 함수는 직접 I/O를 수행하지 않으므로, Node.js 표준 라이브러리의 동기 메서드를 사용하여 I/O를 수행하는 ..