[ubuntu] ubuntu repository node 버전 이슈
·
카테고리 없음
ubuntu repository node 버전 이슈로컬에서 npm 패키지를 설치할 때는 문제가 없었으나 원격 서버 환경에서 npm 패키지를 설치에 실패하는 이슈가 있었습니다. 원인부터 말씀드리자면 로컬에서는 node 20 버전을 사용했고 원격 서버에서는 12 버전을 사용했는데 npm 패키지 중 16버전 이상을 요구하는 패키지가 있어서 설치에 실패했습니다. 우선 원격 서버에서 nodejs를 설치한 뒤 버전을 확인하는 과정입니다.apt updateapt install nodejsnode -v nodejs를 설치하고 버전을 출력해보면 12버전이 나옵니다. 2024년 11월 14일 기준으로 버전이 22.11.0인 것을 확인하면 상당히 낮은 버전입니다. 일단 yarn을 설치합니다. yarn을 설치하기 위해 npm..
[Node][Docker] image build 할 때 패키지 변경 사항이 있어도 이전 패키지 다시 사용하기
·
카테고리 없음
개요https://growth-coder.tistory.com/320 [docker] docker 이미지 간 node 패키지 공유하여 이미지 용량 최적화문제 상황열심히 개발을 하고 배포를 하던 중에 원격 서버에서 문제가 발생했습니다. 원격 서버에 패키지를 설치하던 중 디스크 용량 부족으로 인해 패키지 설치가 제대로 이루어지지 않았습growth-coder.tistory.com이전 포스팅에서 패키지만 존재하는 이미지를 빌드해서 이 이미지를 base로 여러 workspace 이미지를 빌드했습니다. 그리고 docker를 활용한 자동 배포 구축을 완료한 뒤 main 브랜치에 merge 될 때마다 배포가 자동으로 잘 되었습니다. 하지만 github action CI 서버에서 이미지 빌드 후 docker hub에 업..
[docker][Nest] 모노레포 환경에서 docker 배포 환경 최적화
·
카테고리 없음
문제 상황docker를 사용하는 가장 큰 이유는 무엇일까요? 아마 대부분 외부 환경에 영향 받지 않고 서버를 정상적으로 운영하기 위해서 docker를 사용할 것입니다. docker를 사용하면 독립적인 container를 띄워서 외부 호스트에서 별도의 환경을 구축할 필요 없이 바로 원하는 서버를 띄울 수 있습니다. docker를 활용하여 서버를 구축할 때 docker image만 가지고 있으면 환경이 바뀌더라도 항상 동일한 서버 운영을 보장할 때 가장 이상적일 것입니다. 그에 비해 저희 서버는 docker를 제대로 활용하지 못 한다는 느낌을 받았습니다. 아래는 기존 저희 서버의 구조입니다. 중복 패키지를 방지하기 위해 docker volume을 사용하여 backend, websocket 컨테이너에 연결했습..
[docker] docker 이미지 간 node 패키지 공유하여 이미지 용량 최적화
·
카테고리 없음
문제 상황열심히 개발을 하고 배포를 하던 중에 원격 서버에서 문제가 발생했습니다. 원격 서버에 패키지를 설치하던 중 디스크 용량 부족으로 인해 패키지 설치가 제대로 이루어지지 않았습니다. 당시 저희 팀은 크레딧을 아끼기 위해 최대한 낮은 스펙의 원격 서버를 사용했는데 디스크의 용량이 10GB밖에 되지 않았습니다. 이러한 환경에서 docker 배포를 위한 여러가지 방법을 시도하다 정리하지 않은 layer들이 너무 쌓인 것이 원인이었습니다.root@pub-server:/var/lib# du -sh /var/lib/docker/*22M /var/lib/docker/buildkit432K /var/lib/docker/containers4.0K /var/lib/docker/engine-id7.7..
[redis] node.js 환경에서 redis 분산 락 구현하기
·
공부/Database
개요현재 제가 진행 중인 프로젝트는 api 서버와 websocket 서버가 별도의 프로세스로 띄워져서 동작하고 있습니다. 여기서 api 서버와 websocket 서버가 같은 자원을 공유하고 있어서 동시성 문제를 해결하기 위해 분산 락을 적용하기로 했습니다.처음에는 npm의 simple-redis-mutex 패키지를 사용하였는데 원인 모를 에러가 계속 발생하더라고요...https://www.npmjs.com/package/simple-redis-mutex simple-redis-mutexMutex lock implemented using redis. Latest version: 2.1.0, last published: a month ago. Start using simple-redis-mutex in yo..
[redis] redis의 transaction
·
공부/Database
redis transactionredis의 transaction 기능을 사용하면 여러 명령어들을 한 번에 실행할 수 있습니다. redis에서 다음 명령어를 통해 transaction 기능을 사용할 수 있습니다. MULTI : 트랜잭션을 시작합니다. 이후 실행하는 명령어들을 모두 큐에 저장합니다.EXEC : 트랜잭션 안에서 큐에 저장된 연산들을 실행하고 connection 상태를 normal로 되돌립니다.DISCARD : 트랜잭션 안에서 큐에 저장된 연산들을 제거하고 connection 상태를 normal로 되돌립니다. 만약 WATCH가 적용되어 있었다면 WATCH를 취소합니다.WATCH : key에 watch를 적용하면 EXEC 명령어는 오직 해당 key가 변경되지 않았을 때만 실행합니다.redis tr..