본문 바로가기
반응형

JavaScript17

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.
SonarCloud를 통한 Node.js & Jest 프로젝트 정적 분석하기 일반적으로 프로젝트의 코드 퀄리티를 올리기 위해서는 단위 테스트를 비롯해 여러가지 장치를 도입한다. 이때 가장 가성비가 좋은 작업이 정적 코드 분석을 도입하는 것이다. 정적 코드 분석은 코드내에서 발견할 수 있는 코드 스멜, 잠재적인 결함, 컨벤션 체크, 보안 취약점 등을 코드 레벨에서 분석해서 레포팅 해준다. 이런 정적 코드 분석 도구에는 여러가지가 있지만, 가장 많은 사용자들이 사용하는 도구는 SonarQube(소나큐브) 이다. 기존에는 설치형외에는 지원하지 않았지만, 최근에는 SaaS 형태로 SonarCloud 가 출시되었다. Github에 공개된 저장소에 한해서는 소나 클라우드의 전체 기능을 무료로 사용할 수 있다. 그래서 개인 프로젝트는 SonarCloud로 편하게 연동하고, 무료로 정적 코드 .. 2022. 4. 5.
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.
IntelliJ & Webstorm import시 double quotes 대신에 single quotes 기본값으로 사용하기 IntelliJ나 Webstorm을 통해 JS / TS를 개발하다보면 import 구문에서 " 로 인해 불편할때가 많은데요. 이를테면 팀 컨벤션으로 import를 Single Quotes 로 해놓은 경우에는 자동 import 를 통해 "로 import 되면 매번 수동으로 Single Quotes 로 바꿔야만 합니다. 1. Auto Import 하는법 먼저 Jetbrains IDE의 Auto Import 는 다음과 같이 사용할 수 있는데요. 아래와 같이 Import되지 않는 클래스나 function에 포커스를 두고, 단축키를 통해 import를 수행합니다. option + Enter: 제안 목록 보기 option + shift + Enter: 전체 full import 여기서 단일 import인 optio.. 2021. 8. 6.
프론트엔드 모니터링에서 Script error. 만 나올때 프론트엔드 모니터링을 보다보면 다음과 같이 Script error. 만 나올때가 있습니다. 나머지 에러들은 정확하게 에러가 노출되지만, 특정 케이스에 한해서 Script error. 만 나오게 되는 것인데요. 왜 모니터링에서는 Script error. 만 나오며, 이를 해결하기 위해선 어떻게 해야하는지 알아보겠습니다. 1. 배경 소개 예를 들어 다음과 같은 sdk.js 파일을 사용하는 웹 페이지가 있다고 가정해봅니다. sdk.js function foo() { console.log($('#a').text()); } index.html test 코드는 간단합니다. sdk.js 와 jquery를 호출하고, 이를 index.html이 sdk.js의 foo funciton을 호출 sdk.js는 jquery를 의.. 2021. 6. 20.
Quokka 플러그인 소개! 안녕하세요? 이번 시간엔 IntelliJ의 Quokka 플러그인을 소개드리려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 소개 Javascript 개발을 진행하다보면 여러 이유로 프로토 타입을 개발을 위한 격리된 공간이 필요할때가 있습니다. 특정 라이브러리의 함수가 어떤 결과를 출력하는지 잠깐 확인하고 싶을때 JS를 강의하거나, 배우기 위해 결과를 바로 실행해보고 싶을때 새로운 언어의 기능이나 프레임워크를 실험해보고 싶을때 보통 이런 이유로 온라인 편집기 (브라우저 개발자 도구의 Console, jsbin)를 사용합니다. 하.. 2018. 4. 12.

728x90
반응형