본문 바로가기
728x90
반응형

Back Side47

[hono] npm install cors 할 필요없이 hono cors 사용하기 클라이언트에서 서버로 통신을 시도하니 cors 정책으로 차단되었다고 나왔다. 바로 bun add cors를 하던 중에 bun이나 hono에서 따로 제공해주는게 있지 않을까 싶어 공식문서를 뒤져보니 바로 나왔다. ㄱㅇㄷ 따로 라이브러리 설치할 필요 없이 cors()를 하면 알아서 import로 가져오니 완전 굳굳 👍 2024. 2. 4.
[node-cron] 메모리에 저장되는 스케줄러를 Redis에 저장해서 영구보관하자 문제 발생 수강생이 강의 신청을 하면 강의일로부터 하루 전에 예약 메시지를 보내야 한다. 수강생이 많을수록 예약 메시지도 많아진다. node-cron으로 스케줄러를 통해 강의일로부터 하루 전에 예약 메시지를 보내고 있었는데 애플리케이션 단에서 수정을 하게 됐다. 서버에서 도커로 돌아가던 애플리케이션을 다운시키고 이미지를 풀 받은 다음 다시 올렸다. 그러자 예약 메시지들이 오지 않는다. 왜일까? 그건 제목에도 적었듯이 node-cron이 메모리에 스케줄러를 저장시키기 때문이다. 즉, 도커를 다시 시작하자 메모리가 리셋되면서 스케줄러가 없어진거다 🤯🤯🤯 해결법으로 Redis에 저장하자 꼭 Redis가 아니어도 된다. 다른 데이터베이스를 사용해도 되는데 난 Redis를 사용했다. 그렇다면 Redis에 무엇을 .. 2024. 2. 2.
[zipkin] TypeError: fetchImpl is not a function fix 현상 zipkin을 연결한 서비스 A가 로컬에서 npm start을 할 경우 잘 된다. 하지만 Docker로 빌드해서 올리면 서비스 A가 죽는다. 도대체 왜 그럴까? 겨우 찾아낸 오류 문구는 TypeError: fetchImpl is not a function다. https://github.com/openzipkin/zipkin-js/issues/493 node_modules/zipkin-transport-http/src/HttpLogger.js. · Issue #493 · openzipkin/zipkin-js Running a Node application works fine for sending traces. However if I compile this to a minified file in Web.. 2024. 1. 17.
prometheus Error: connect ECONNREFUSED 127.0.0.1:9090 fix 문제 MSA 환경에서 A서비스에서 prometheus에 질의를 해야하는 코드를 작성했다. 포스트맨으로 A서비스 API를 실행한 결과 Error: connect ECONNREFUSED 127.0.0.1:9090라는 오류가 나왔다. 해결 1. prometheus:9090으로 변경하기 await axios.get('http://prometheus:9090/api/v1/query_range', { 바로 잘된다. 혹시 안되는 사람은 아래 github 링크를 보고 다른걸 시도해보길 바란다. https://github.com/grafana/grafana/issues/46434 Error reading Prometheus: Post "http://localhost:9090/api/v1/query": dial tcp 1.. 2024. 1. 9.
Helm을 이용해서 k8s에 Redis 넣기 Helm으로 k8s에 Redis 추가하기 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update helm에서 redis repo을 가지고 온다. helm install my-redis bitnami/redis --set auth.password=my-password 이렇게 해주면 비번까지 설정할 수 있다. redis에 중요한 데이터를 넣지는 않겠지만 그래도 데이터베이스 비번 설정은 중요하니 넣어주자. kubectl exec -it [pod 이름] -- redis-cli redis에 접속하자. ping이라도 해보려고 했더니 (error) NOAUTH Authentication required가 나온다. kubectl exec -i.. 2023. 12. 21.
[MongoDB] mongoose의 populate을 이용해서 편하게 다른 컬렉션 정보 가져오기 지금 누가 join하고 웃었는가? join은 관계형 데이터베이스에서 많이 쓰인다. SQL에서 join을 사용하면 두 테이블 간의 관계를 기반으로 데이터를 결합하여 결과를 반환한다. 그럼 MongoDB는? $lookupd이라는 Aggregation 연산자가 있긴하다. db.users.aggregate([ { $lookup: { from: "orders", // 결합할 다른 컬렉션 localField: "_id", // 현재 컬렉션의 필드 foreignField: "userId", // 다른 컬렉션의 필드 as: "userOrders" // 결과를 저장할 필드 이름 } } ]); 직접적이고 유연한 방법을 제공하지만 복잡한 쿼리를 작성해야 한다. 이때 mongoose의 populate를 쓰면 좋다. mongo.. 2023. 12. 8.
[dayjs] JavaScript Date 객체는 불변성을 지켜주기 않는다 + dayjs의 필요성 JavaScript는 날짜 표현을 해줄 수 있는 Date 객체를 제공해준다. 따로 라이브러리를 사용하지 않더라도 손 쉽게 날짜을 얻을 수 있기 때문에 사용을 자주해줬다. 불변성 문제 발생 하지만 불편한 점이 발견됐다. 바로 불변성이다. const date = new Date(); // 2023-11-01T02:06:14.974Z date.setFullYear(2002); console.log(date); set 함수를 쓴 date를 콘솔로 찍으면 어떻게 될까? 당연히 2002-11-01T02:06:14.974Z로 바뀐다. 인제 date는 원래 값인 2023-11-01T02:06:14.974Z을 잃게 된다. 예를들어 우리가 date와 set 함수를 사용해 나온 date를 비교해주고 싶다면? 당연히 둘 다 .. 2023. 11. 1.
[Kafka 시리즈] #2 Apache Kafka 공식 튜토리얼 따라하기 with KRaft 튜토리얼 따라하는게 국룰이죠 Apache Kafka에서도 쉽게 사용해볼 수 있는 튜토리얼을 제공해준다. https://kafka.apache.org/quickstart Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org 튜토리얼을 따라하면 머리 속에 둥둥 떠나니던 개념들과 용어들을 금방 익힐 수 있어서 좋다 👍 그러니 꼭 튜토리얼 해보시길. 1. 카프카 다운로드 https://www.apache.org/dyn/closer.cgi?path=/kafka/3.6.0/kafka_2.13-3.6.0.tgz 2023. 10. 12.
[Kafka 시리즈] #1 Apache Kafka라고 들어보셨나요? 전 진짜 들어만 봤어요 (+ Zookeeper vs KRaft) Apache Kafka 그거 대기업에서 다 쓰던데 카프카라는 이름은 개발자를 준비하면서 많이 들어온 단어 중 하나였다. IT 대기업을 대표하는 네이버, 카카오 컨퍼런스에서 심심치 않게 나왔고 배민, 토스에서도 봤던 기억이 있었다. 당시 카프카를 접한 나는 MSA랑 같은 느낌을 받았다. 알지만 개인 프로젝트에서 할 수 없는 미지의 영역. MSA도 회사에 들어와서 할 수 있었던 나는 현재 카프카까지 담당하는 처지가 됐다 😇 (좋은데... 좋은거 맞지? 여러분들은 백엔드 많은 곳으로 가십쇼...) 그래서 Apache Kafka가 뭔데요? 한줄로 말하면 대규모 데이터를 동시에 이동시킬 쓰는 분산형 데이터 스트리밍 플랫폼이다. 예? 뭔소리인지 모르겠다면 당신은 제 글을 계속 읽은 기회를 얻었습니다(?) 바로 이해.. 2023. 10. 12.
728x90
반응형