pm2 사용 관련 질문이 있습니다.
649
작성자 없음
작성한 질문수 0
nodejs 활용 외부 API 호출 후 응답받은 데이터로 2차 서비스를 만들고 있는중에
선임(자바 개발자) 으로부터 API 호출 시 안전 장치를 위해 Circuit Breaker 를 구현하는게 좋을 것 같다는
의견을 청취해 해당 로직 구현 후 로컬 테스트 후 개발 서버에서 테스트 중 버그를 발견했습니다.ㅜㅜ
pm2 로 멀티프로세싱 시 메모리 공유가 되지않아 각 프로세스 별 API 요청 실패 횟수 및 서킷의 현재 상태가 공유되지않아
제가 생각한 방향과 다르게 동작했습니다.
(pm2를 책에서 보고 따라했어서 다시 찾아보니 제로초님이 로그인 세션에 빗대어 설명해주신걸 이제야 이해했네요ㅜㅜ)
핵심 질문은 요런 내용으로 pm2 가 관리하는 마스터 노드에서 각 워커 노드에게
브로드캐스팅으로 현 상태를 전달하는 예제들을 많이 봤는데
각 프로세스들의 서킷 상태 뿐 아니라 실시간으로 API 실패 횟수를 체크(서킷의 상태를 관리하기 위한 임계치) 를 해야해서
여러 프로세스에서 동시에 처리하다보면 해당 데이터가 꼬일 것 같습니다.ㅜㅜ
1. Redis 등 외부 인프라를 사용하지 않고 처리 할 수 있는 괜찮은 방안이 있을까요?
2. 해당 어플리케이션이 k8s 클러스터에 배포가 되는데, 서버 상태를 k8s가 체킹해주고 있다면
pm2를 걷어내도 될까요?(각 k8s 의 워커 노드들의 CPU가 4코어로 pm2를 사용 시 좀 더 효율적으로 메모리 관리가 된다고 생각하고 있습니다..)
사내에 node.js 개발자가 없어서 강사님께 질문을 드리게되네요.
무더위 건강 유의하시고, 좋은 강의 감사합니다.
답변 1
1
1. 현재 서버 안에서 하나의 서버를 더 띄워서 공유하면 됩니다. 그 서버가 레디스면 되고요. 아니면 서킷브레이킹을 할 수 있는 노드여도 됩니다.
2. 저희도 코어를 활용하기 위해 k8s에서 pm2로 클러스터링 또 하고 있습니다.
0
쉬는 날에도 빠른 답변을 주셔서 너무 감사합니다.
제가 처음하다보니 조금 무지해서 추가 질문을 드려요 (__)
현재 서버 안에서 하나의 서버를 더 띄운다는 것은
책에서도 나와있는 동일 프로젝트에 mono-repo 형식으로 서버를 2개 띄우는 것을 말씀하시는걸까요? 그 서킷 브레이킹을 할 수 있는 노드라는 말씀도 조금만 더 설명을 들을 수 있을까요?ㅜㅜ
정말 죄송하고 감사합니디.
0
쉽게 말해서 컴퓨터 안에 서버 두 대를 띄우시면 됩니다. localhost:8001 localhost:8002 띄우듯요. 서킷브레이킹을 할 수 있는 노드라는 건 서킷 브레이킹 기능을 노드로 구현하실 수 있다면 그 서버도 쓸 수 있다는 겁니다.
리눅스 노드 설치시 패키지
0
172
0
socket.js 에서 referer로부터 roomId를 가져올 때
0
931
3
스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문
0
2297
2
a[title] 질문드립니다
0
387
1
리뉴얼 강의 및 공부 방법
0
590
1
jwt decode
0
1138
1
node.js 교과서 3판 질문드립니다
0
398
1
passport와 jwt
0
439
1
리뉴얼 강의
0
428
2
혹시 Node.js 교과서 3판 이북은 언제 나오나요?
0
359
1
몽고디비 사용자도 MYSQL부분을 들어야 하나요???
0
490
1
sql 쿼리 로그는 어떤 모듈이 작성하나요?
0
511
2
nunjucks res.render('error'); 작동을 안합니다.
0
520
1
질문있습니다.
0
348
1
multer 한글 파일 업로드시 파일명이 깨져요.
1
3545
1
수업자료는 어디있나요?
0
374
1
질문 있습니디
0
245
1
multer 사용시 file 외 name값은 못받나용?
0
430
1
코드 중복 부분 질문드립니다.
0
303
1
api 만드는 이유 질문드립니다.
0
293
1
Strategy의 done에 대해 질문드립니다.
0
374
1
안녕하세요 fs 권한 관련 질문드립니다
0
456
1
시퀄라이즈 연결질문...
0
511
2
res.setHeader vs res.cookie
0
1799
3





