본문 바로가기
728x90
반응형

분류 전체보기173

[MongoDB] Transaction 트랜잭션 개념부터 실습까지 (2) - 로컬에서 Replica Set 구성하기 https://bcoding-lab.tistory.com/293?category=868268 [MongoDB] Transaction 트랜잭션 개념부터 실습까지 (1) - Transaction numbers are only allowed on a replica set member Transaction이란 예를 들어, 위 그림과 같이 4개의 데이터를 지운다고 과정을 하도록 하겠습니다. 순차적으로 작업을 하던 중 C에서 에러로 인해 데이터 삭제가 불가능한 상태가 되었습니다. C,D는 bcoding-lab.tistory.com 지난 1편에서 트랜잭션을 하기 위해서는 Replica Set 환경 구성이 필수라는 것을 알았다. 무려 이틀에 걸쳐 Replica Set을 구성하였는데, 정말 에러란 에러는 다 만난 것 같.. 2022. 7. 12.
[MongoDB] Error: couldn't connect to server 127.0.0.1:27017 오류해결 트랜잭션을 위해 로컬에서 리플리카셋을 구성하면서 이거저거 건들다가 어느순간 mongo가 안되기 시작했다 🤯 mongo 터미널에 mongo로 치니깐 (혹시 서버를 운영 중이었다면 터미널에서 err 나오거나 robo3t에도 접속 ㄴㄴ) Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused : 라는 오류 메세지가 나왔다. mongod 다시 터미널에 mongod를 쳐봤다. 어마어마한 글들이 나왔는데 잘 찾아보면 "msg":"Failed to unlink socket fil.. 2022. 7. 8.
[MongoDB] mongod.conf 설정 파일 찾기 - masOS의 경우 MongoDB에서 트랜잭션을 위해 리플리카셋을 설정을 시도하던 중 설정 파일을 찾을 수 없었다. vi /etc/mongod.conf 물론 위 코드로 바로 열어서 편집해줄 수 있긴 하다. (나의 경우 '아니 편집이 가능하면 있다는 건데 왜 눈에 안 보이는 거야'에서 시작해서 찾게 되었다 🌝) 우선 나의 가장 큰 잘못은 경로를 잘못 생각하고 있었던 것이다. 공식문서를 보면 맥의 경우 경로가 둘 중 하나다. 첫 번째는 가장 일반적인 경로이다. 두 번째는 homebrew로 mongodb를 깔았을 경우 설치되는 경로인 것 같다. (회사 컴퓨터라 homebrew로 깔아있는지 몰랐다..) 그리고 나서 finder에서 이동>폴도로 이동을 눌러서 /opt/homebrew/etc를 치면 한 번에 갈 수 있다. 그게 싫은 .. 2022. 7. 7.
[MongoDB] Transaction 트랜잭션 개념부터 실습까지 (1) - Transaction numbers are only allowed on a replica set member or mongos Transaction이란 예를 들어, 위 그림과 같이 4개의 데이터를 지운다고 과정을 하도록 하겠습니다. 순차적으로 작업을 하던 중 C에서 에러로 인해 데이터 삭제가 불가능한 상태가 되었습니다. C,D는 데이터 삭제가 이루어지지 않았지만 C의 앞에 있던 A, B는 이미 데이터가 삭제된 상태죠. 이럴때 어떻게 해야할까요? 이처럼 트랜잭션은 복수개의 작업 중 한 개라도 실패하면 모두 실패로 간주하여 작업 전 상태로 돌아가게 합니다. 그럼 간단한 실습을 통해 트랜잭션을 좀 더 알아보도록 하겠습니다. 실습 export var exampleTransaction: RequestHandler = async (req, res) => { // startSession() - 세션 생성 const session = awai.. 2022. 7. 1.
[TypeScript] Property 'user' does not exist on type 'Session & Partial<SessionData>'. ts(2339) 해결 세션을 이용해서 로그인을 준비하던 중 에러가 발생했습니다. Property 'user' does not exist on type 'Sesson & Partial'. ts(2339) 아무리 구글링 해봐도 뾰족한 수가 보이지 않아 낙담하던 그때..! https://icecokel.tistory.com/17 TypeScript, Express-session 을 이용한 로그인 처리 (2) 안녕하세요. 오늘은 저번 포스팅에 이어서 TypeScript 환경에서의 Express-session 로그인 처리 포스팅을 진행하겠습니다. 작업환경 express-session, SessionData 수정 로그인처리 1. 작업환경 운영체제 Windows.. icecokel.tistory.com 이 분의 게시물을 보고 해결 😇 이.. 2022. 7. 1.
[기타] Message Queue 메시지 큐란 프로세스(또는 프로그램) 간에 데이터를 교환할 때 사용하는 통신 방법 중 하나입니다. 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미합니다. 메시지란 요청, 응답, 오류 메시지 혹은 단순한 정보 등의 작은 데이터가 될 수 있습니다. 여기에서 메시지 큐는 메시지를 임시로 저장하는 간단한 버퍼인 것이다. 메시지를 전송 및 수신하기 위해 중간에 메시지 큐를 두는거죠. 대표적인 메시지 큐 시스템은 RabbiMQ, ActiveMQ, ZeroMQ, Kafka가 있습니다. 사용하는 이유 일반적인 클라이언트-서버 구조에서는 메시지 큐를 사용하지 않습니다. 대신 언젠가는 큐에 넣어둔 메시지가 소비되어 처리될 것이라고 생각하고 사용합니다. 그렇기 때문에 핵심 작업보다는 어플리케.. 2022. 6. 29.
[Docker] 컨테이너 안에서 다른 컨테이너 접속하기 with.docker-compose docker-compose를 이용해서 다중 앱 관리를 하고 있었습니다. 하지만 위 그림과 같이 A 컨테이너에서 B 컨테이너에 접속할 때는 어떻게 해야할까요? 예를 들어 A 컨테이너에서 axios.get를 이용해서 B 컨테이너에 있는 API를 호출합니다. await axios.get("http://127.0.0.1:3000/test").then(response => { res.status(200).json(response.data); }); 원래였다면 127.0.0.1:3000(=B host)로 호출하여 데이터를 받았을 것입니다. 하지만 이렇게 Docker에 올릴 경우 127.0.0.1:3000을 찾을 수 없다는 에러 문구가 나옵니다. Docker에서 컨테이너 안에서 다른 컨테이너에 접속할때는 : 형식을 .. 2022. 6. 22.
[Cloud] 컨테이너 오케이스트레이션 툴 Docker Swarm vs Kubernetes 현재 저희 회사에서는 MSA로 독립적인 배포 가능한 서비스를 준비하고 있습니다. 오케스트레이션 관리를 위해 swarm을 쓸지 kubernetes를 쓸지에 대한 논의가 나와 한 번 정리해 보자는 생각이 들었어요. Container Orchestration 우선 오케스트레이션이란 무엇일까요? 컨테이너의 배포, 관리, 확장, 네트워킹의 자동화입니다. 회사에서는 수백 또는 수천개의 컨테이너와 호스트가 있을 것이고 배포하고 관리하는 입장에서는 오케스트레이션을 필요한거죠. 컨테이너에 MSA를 구현하면 스토리지, 네트워킹, 보안과 같은 서비스를 간편하게 오케스트레이션 할 수 있습니다. 오케스트레이션 = 컨테이너 배포 관리 자동화라고 생각하면 좋을 것 같습니다. 이때, 오케이스레이션 도구로 Docker Swarm과 K.. 2022. 6. 22.
[Docker] Compose 생성하면 container? app! ※ 여기에서는 compose를 생성하는 작업은 보여드리지 않습니다. Docker Compose란? Docker Compose는 여러 개의 container를 실행시키는 툴입니다. 즉, 여러분이 docker-compose.yml에 services에 적어둔 대로 여러개의 container가 생기는거죠. container? app! docker-compose.yml를 잘 작성하여 실행시켜주니 잘 만들어진 것을 확인할 수 있습니다. Docker Desktop에서 보면 이렇게 구성되어져 있는 것을 볼 수 있는데요. 2개의 container가 하나의 '무언가'에 속해있습니다. 저는 처음에 '무언가'가 또 다른 컨테이너라고 생각했는데..아니었습니다! '무언가'는 바로 app이었습니다. 즉, 하나의 app 안에 두개.. 2022. 6. 15.
728x90
반응형