본문 바로가기

전체보기178

서비스 중심 kafka와 redis pub/sub redis pub/sub?*레디스 펍섭은 다수의 퍼블리셔가 하나의 채널에 데이터를 전송하고 다수의 섭스크라이브에게 전파되는 기능*메세지 발행시 채널에 섭스크라이브가 없어도 발행되며 즉시 사라짐*퍼블리셔는 섭스크라이브가 메시지를 수신 했는지 모름*섭스크라이브는 메세지를 가져가는 방식이 아니라 채널로 부터 수신 받는방식*휘발성데이터다 채팅서비스에서 사용하였는데 실시간으로 채팅과 관련된 이벤트를 전파하기 위해 사용하였음1. 여러개의 퍼블리시가 채팅관련 이벤트 상수를 포함한 특정 패턴의 데이터를 채널에 pub2. 다수의 subscribe에 전파하는 방식 kafka?kafka란 redis pubsub과 다르게 여러 프로듀서가 각기 다른 이벤트를 토픽에 저장하고 컨슈머가 각 하나씩 가져가 처리함 대용량 데이터 처리.. 2024. 8. 26.
잘 사용하지 않은 React use Hook - 3 1. useImperativeHandleuseImperativeHandle은 함수 컴포넌트에서 생성된 ref 객체의 인스턴스를 조작하고 사용자 정의 메서드를 노출할 때 사용하는 Hook입니다. 이 Hook은 주로 부모 컴포넌트가 자식 컴포넌트의 인스턴스를 직접적으로 조작해야 할 때 사용됩니다.import React, { useRef, useImperativeHandle, forwardRef } from 'react';// 자식 컴포넌트const ChildComponent = forwardRef((props, ref) => { const internalRef = useRef(); useImperativeHandle(ref, () => ({ focus: () => { internalRef... 2024. 8. 22.
개발간에 썼던 React use Hook - 2 1. useContext컴포넌트 트리 전체에 데이터를 공유할 수 있도록 해주는 기능으로 Redux를 대체할 수 있습니다. 단계1. createContext를 사용해 초기상태값을 넣어 새로운 컨텍스트 객체를 생성2. ContextProvider 컴포넌트를 사용하여 하위 컴포넌트들 에게 context값 업데이트하고 전달3. useContext를 사용하여 context값을 불러옴 💥 useContext 주의점컴포넌트 구조와 의존성 관리: useContext를 사용하여 컴포넌트에서 Context를 가져올 때, 컴포넌트의 구조와 의존성을 고려해야 합니다. Context를 너무 많이 사용하면 컴포넌트 간의 의존성이 복잡해질 수 있습니다. 필요한 경우에만 useContext를 사용하여 컴포넌트 간의 의존성을 최소화.. 2024. 8. 22.
개발간에 썼던 React use Hook - 1 1. useCallback부모컴포넌트에서 자식컴포넌트로 onClick 함수를 전달해주는 상황일 때 2가지 상황에 대해 생각해보자const Root = () =>{ return ( console.log('click !')}> console.log('click !')}> console.log('click !')}> )}const Number = ({onClick}) =>{ return( 버튼 ) 해당코드는 Number 컴포넌트로 onClick 함수를  직접 생성해서 전달해주기 때문에 렌더링이 발생할 때 마다 새로 함수다 생성된다. const Root = () =>{ const onClick = () =>{ console.log('clic.. 2024. 8. 22.
전 서비스 TypeOrm 버전 업 작업 배경API 서비스마다 어떤 서비스는 TypeOrm 버전이 0.2.x대를 사용중이였고 어떤 서비스는 0.3.x 대를 사용중이였다. 이를 같은 0.3.x버전대로 맞추는 작업을 진행하였다. TypeOrm 0.3 주요 변경 사항export const dataSource = new DataSource({ type: "mysql", host: "localhost", port: 3306, username: "test", password: "test", database: "test", })export const dataSource1 = new DataSource({ /*...*/ })export const dataSource2 = new DataSource({ /*...*/ })exp.. 2024. 8. 16.
온체인마켓 LOG 적재 Apm+Kibana 1.  작업 배경NFT 거래시 API 로그를 남겨 유저가 어떤 행위를 한지 가늠하게 되며 차후 CS가 들어와도 처리하기 쉽고자 키바나에 로그가 적재 되도록 한다. 2.  작업 방향nestJs로 개발된 NFT 마켓플레이스 백엔드 API 서비스에서 각 모듈 별 컨트롤러마다 인터셉터를 달게 된다. http요청 완료 되면 apmService를 통해 요청과 관련된 자세한 정보나 서버에서 발생한 에러를 기록하게 된다. 우선 apm 서비스가 필요했다. @Injectable()export class ApmService { private readonly apm: APM.Agent; constructor() { this.apm = apm; } // http 요청과 관련된 자세한 정보를 custom하여 저장 .. 2024. 8. 16.