본문 바로가기
반응형

promise3

Promise Pool로 성능 개선하기 (feat. Promise.all) Node.js 환경에서는 다수의 비동기 작업을 처리하기에 적합하다. 예를 들어, 다음과 같은 상황이 있다고 가정해보자. ID 별로 조회만 가능한 외부 서비스에서 대량의 건수를 API로 조회해야하는 경우 join, subquery 로 조회시 성능과 DB의 부하가 심하여, id 별로 쿼리를 나눠서 조회해야하는 경우 대량으로 이벤트 메세지를 발행해야하는 경우 등등 다량의 Promise 작업들은 백엔드 애플리케이션 작업에서는 언제든지 발생할 수 있다. 이럴때 Node.js 환경에서는 Promise.all 을 통해 쉽게 해결할 수 있다. 여기서 Promise.all 보다 좀 더 성능을 개선할 수 있는 방법을 보자. 개요 수백개 이상의 Promise 작업들은 보통 한번에 Promise.all을 수행하지 않는다. 예.. 2023. 5. 5.
no-return-await 는 항상 정답일까 보편적으로 JS/TS 에서는 async 함수를 사용할때 return 만 필요한 경우에는 굳이 await를 명시하지 않았다. 실제로 ESLint 룰 상에서도 이에 대한 규칙을 갖고 있다. no-return-await 하지만 해당 규칙에서도 이 규칙을 적용하면 안되는 예를 소개하는데, 다음과 같다. await thenable 인 값을 나타내기 위해 사용하려는 경우 return await 회피의 성능상의 이점을 원하지 않는 경우 함수를 스택 추적에 표시하려는 경우 (디버깅에 유용함) 마지막의 "함수를 스택 추적에 표시" 가 이번 포스팅의 주제이다. Node.js를 비롯한 백엔드에서는 에러가 발생한다면 해당 에러에 대한 상세한 Trace가 거의 대부분 필요하다. Node.js에서는 await 없이 Promise.. 2023. 1. 24.
Promise.all 과 Transactions (feat. Node.js) 최근 팀에서 코드리뷰를 진행하던 중에 promise.all 과 트랜잭션에 대해 오해하고 있는 부분들을 발견하게 되어 정리하게 되었습니다. Promise.all (혹은 allSettled)을 사용하면 트랜잭션 내에서도 비동기로 여러 작업들이 동시에 이루어질 수 있다고 오해하는 것인데요. 실험을 해보면 그게 아니라는 것을 알 수 있습니다. 실제 코드를 가지고 검증해보겠습니다. 모든 실험 결과에 대해서 틀린 내용이 있다면 바로 댓글로 지적해주세요! 모든 지적은 저의 성장에 많은 도움이 되기 때문에 감사한 마음으로 수정하겠습니다 :) 0. 테스트 환경 테스트할 환경은 다음과 같습니다. Node.js 16.3.1 PostgreSQL 13.2 모든 코드는 Github 에 있습니다. 1. Promise.all 먼저 .. 2022. 2. 28.

728x90
반응형