본문 바로가기
반응형

전체 글59

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.
Github Actions, Nginx, Docker를 이용한 Blue-Green 무중단 배포 현재 회사 서버는 단일 EC2 인스턴스에서 하나의 Docker 컨테이너를 운영하여 작동 중인데 컨테이너 교체 방식 (In-place Deployment)으로 작동하다 보니 약간의 서비스 중단 시간이 발생한다. Github Actions 내역을 통해 매번 1분 이상의 deploy 시간 동안 서비스가 중단 되는 걸 확인했는데 본격적으로 서비스 운영에 들어가게 되면서 1분의 중단 시간도 없애는 게 안정적인 서비스 운영에 도움이 되겠다는 생각에 무중단 배포를 건의했다.물론 백엔드가 나 혼자뿐이라 내가 다 하면 되므로 현 상황에 맞는 방법을 찾아보았다. Docker를 사용한 무중단 배포 전략으로는 대표적으로 롤링 업데이트(rolling update)와 블루-그린 배포(blue-green deployment)가 존.. 2024. 5. 13.
반응형