본문 바로가기
반응형

전체 글60

나 자신을 설득하기 위한 기록: MongoDB 트랜잭션과 Promise.all의 충돌 스타트업에서 백엔드 개발자로 산다는 건 언제나 '빠른 기능 추가'와 '시스템 정합성' 사이에서 줄타기를 하는 과정입니다. 저는 지난 1년 가까이 "이제는 레거시를 정리하고 가야한다"고 주장해 왔습니다.특히 데이터 무결성을 위한 트랜잭션(Transaction) 도입을 강력하게 피력했죠.- MongoDB에서 트랜잭션을 사용하려면 레플리카 셋(Replica Set) 혹은 샤디드 클러스터(Sharded Cluster) 구축이 필수적인데, 마침 최근에 해당 마이그레이션이 완료되었습니다. (MongoDB의 분산 환경 구조상 "데이터의 복제 또는 분산"이 전제되어야만 트랜잭션을 지원하기 때문입니다.) 하지만 당장의 기능을 쳐내야 하는 속도전 속에서 '보이지 않는 정합성'은 항상 뒷전이었습니다.그러다 최근 모두를 설득.. 2025. 12. 30.
MySQL의 SELECT ... FOR UPDATE와 TypeORM queryRunner를 이용한 SELECT ... FOR UPDATE 쿼리 실행 MVCC와 Non-Locking Consistent ReadMySQL의 InnoDB 스토리지 엔진은 MVCC를 기반으로 동시성 제어를 처리한다. Non-Locking Consistent Read는 MVCC의 핵심 기능으로, 트랜잭션에서 SELECT 쿼리를 실행할 때 별도의 잠금 없이 데이터 읽기가 가능하다. 이는 동시성 성능을 높이고 여러 사용자가 동시에 데이터를 읽고 쓸 수 있도록 돕는다.일반적인 SELECT 쿼리는 Non-Locking Consistent Read 방식으로 실행되어, 트랜잭션이 시작된 시점 이전에 커밋된 데이터를 읽는다.변경 작업이 일어나면, InnoDB는 변경 전 데이터를 Undo 로그에 백업하고, 읽기 요청이 오면 이 Undo 영역에서 데이터를 반환하여 트랜잭션 일관성을 유지한다... 2024. 10. 25.
[프로그래머스] 의상 - JavaScript 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42578# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다.예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다.종류이름얼굴동그란 안경, 검정 선글라스상의파란색 티셔츠하의청바지겉옷긴 코트코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어.. 2024. 10. 14.
NestJS에서 이미지 및 영상 처리 작업의 부하를 줄이기 위해 BullMQ 사용 BullMQ를 사용하는 이유BullMQ는 Node.js 애플리케이션에서 비동기 작업 처리를 위해 Redis 기반의 큐 시스템을 제공하는 도구입니다. 주로 백그라운드 작업 처리나 시간이 오래 걸리는 작업을 메인 서버와 분리하여 성능을 향상시키기 위해 사용됩니다. 이로 인해 서버는 요청을 처리한 후, 리소스 집약적인 작업은 별도로 처리할 수 있습니다.BullMQ 장점성능: Redis의 빠른 데이터 처리 속도를 바탕으로 하여 대규모 작업 처리에서도 성능이 우수합니다.작업 실패 관리: BullMQ는 작업 실패 시 자동으로 재시도를 하고, 지정된 최대 재시도 횟수를 넘으면 실패로 기록합니다. 이 과정에서 로그와 디버깅 정보를 제공하여 안정적인 작업 처리를 보장합니다.확장성: 여러 워커를 통해 작업을 병렬로 처리할.. 2024. 10. 7.
Node.js(NestJS)에서 FFmpeg 사용하여 동영상 파일 처리하기 (+ AWS S3 업로드) FFmpeg란?FFmpeg는 멀티미디어 데이터(비디오, 오디오 등)의 디코딩, 인코딩, 변환, 스트리밍, 필터링 등을 지원하는 강력한 오픈 소스 라이브러리입니다. 다양한 포맷을 지원하며, 명령줄에서 제어할 수 있어 영상 및 오디오 처리에 널리 사용됩니다. FFmpeg의 주요 장점 중 하나는 거의 모든 멀티미디어 파일을 변환할 수 있다는 점이며, 고성능의 비디오 및 오디오 처리가 가능합니다.FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It s.. 2024. 10. 7.
javascript 변수 var, let, const의 작동 원리 https://jangjiyu.tistory.com/24 [javascript | JS] var, let, const 변수의 생성과정, 호이스팅, TDZ, 스코프, 클로저와 은닉화(캡슐화)▼ var, let, const if (true) { var x = 3; } console.log(x);// 3 if (ture) { const y = 3; } console.log(y);// Uncaught ReferenceError: y is not defined x는 정상적으로 출력 되는데 y는 에러가 발생하는 이유는? var name = 'Mike'; console.jangjiyu.tistory.com 부트캠프 시절 구글링하며 짜집기하며 변수와 스코프, 호이스팅 등의 개념을 익히긴 했지만 각각의 개념들이 머릿속에.. 2024. 7. 20.
반응형