Dandy Now!
  • [ 언어·프레임워크/Node.js ]
    [Node.js] cron-cluster: 분산 환경에서의 크론 작업 관리 이해하기
    2025-04-11 14:40:59
    cron-cluster: 분산 환경에서의 크론 작업 관리 이해하기1. 일반 크론 작업과 분산 환경의 문제점일반적인 크론 작업(cron job)은 단일 서버 환경에서는 문제없이 작동한다. 하지만 현대 애플리케이션 아키텍처가 점점 더 분산화되면서, 동일한 애플리케이션이 여러 서버나 컨테이너에서 동시에 실행되는 경우가 많아졌다. 이런 환경에서 일반적인 크론 작업을 사용하면 다음과 같은 문제가 발생한다:중복 실행: 각 서버가 독립적으로 같은 작업을 실행하여 불필요하게 같은 작업이 여러 번 수행됨리소스 낭비: 동일한 작업이 여러 서버에서 반복 실행되어 시스템 리소스 낭비데이터 일관성 문제: 동일한 데이터에 대한 중복 처리로 예기치 않은 결과 발생비즈니스 로직 오류: 한 번만 실행되어야 하는 작업(예: 이메일 발송..
  • [ 언어·프레임워크/Node.js ]
    [Node.js] Redis 데이터베이스를 활용한 Node.js cron-cluster 동시 실행 문제 해결하기
    2025-04-11 14:38:43
    Redis 데이터베이스를 활용한 Node.js cron-cluster 동시 실행 문제 해결하기1. 문제 상황최근 개발 중 한 대의 서버에서 두 개의 Node.js 프로젝트를 동시에 실행하면서 흥미로운 문제에 직면했다. 두 프로젝트 모두 cron-cluster와 Redis를 사용해 예약 작업을 관리하고 있었는데, 두 프로젝트를 동시에 실행하면 두 프로젝트 모두 크론 작업이 동작하지 않았다. 그러나 프로젝트를 각각 따로 실행하면 크론 작업이 정상적으로 동작했다.2. 원인 분석이 문제의 원인은 cron-cluster 라이브러리의 작동 방식에 있었다. cron-cluster는 분산 환경에서 중복 실행을 방지하기 위해 설계되었으며, Redis를 통해 작업 실행을 조율한다. 두 프로젝트가 동일한 Redis 인스턴스..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] 마이바티스(MyBatis) Parameter Not Found 에러 완벽 분석 및 해결: @Param 어노테이션 사용법
    2025-04-07 17:54:48
    마이바티스(MyBatis) Parameter Not Found 에러 완벽 분석 및 해결: @Param 어노테이션 사용법MyBatis는 강력하고 유연한 SQL 매퍼 프레임워크이지만, 개발 중 종종 org.apache.ibatis.binding.BindingException: Parameter '...' not found 와 같은 에러 메시지를 마주하게 된다. 특히 매퍼(Mapper) 인터페이스의 메소드에 두 개 이상의 파라미터를 전달할 때 자주 발생하는 이 문제의 원인을 명확히 파악하고, @Param 어노테이션을 이용한 깔끔한 해결 방법을 예제 코드와 함께 알아본다.1. 문제 상황 재현 (Error Scenario)사용자 상태(status)와 이름(name)을 조건으로 사용자를 조회하는 간단한 기능을 개발..
  • 게시글 대표 이미지 썸네일 주소
    [ 언어·프레임워크/React.js ]
    [React.js] React useCallback, 함수 인수는 어떻게 동작할까? (feat. 빈 의존성 배열 `[]`)
    2025-04-04 17:30:18
    React useCallback, 함수 인수는 어떻게 동작할까?React 개발 중 성능 최적화를 위해 useCallback 훅을 자주 사용하게 된다. 그런데 useCallback(fn, [])처럼 빈 의존성 배열을 사용하면, 혹시 함수가 처음 호출될 때 사용된 인수가 고정되어 버리는 건 아닐까 하는 의문이 들 때가 있다. 마치 스냅샷처럼.그래서 이 useCallback과 함수 인수 전달의 관계에 대해 명확하게 알아고자 한다. 결론부터 말하면, 빈 의존성 배열은 인수를 고정시키지 않는다!  1. useCallback이란?개념: 함수 자체를 기억(메모이제이션)하여, 특정 조건 하에서 함수의 재생성을 방지하는 React 훅이다.목적: 주로 자식 컴포넌트에 props로 함수를 전달하거나 useEffect의 의존..
  • [ CS/네트워크 ]
    [네트워크] 네트워크 안정성을 위한 기술
    2025-04-01 11:22:41
    네트워크 안정성을 위한 기술1. 가용성 (Availability)시스템 또는 서비스가 정상적으로 운영되어 사용 가능한 정도를 나타내는 지표.높은 가용성은 시스템 장애로 인한 서비스 중단 시간을 최소화하는 것을 의미.2. 고가용성 (High Availability, HA)시스템 장애 발생 시에도 서비스 중단을 최소화하거나 없이 지속적으로 운영될 수 있도록 설계된 시스템.이중화, 결함 감내 등의 기술을 활용하여 구현.3. 결함 감내 (Fault Tolerance)시스템 내부에 결함이 발생하더라도 전체 시스템의 기능을 정상적으로 유지할 수 있는 능력.오류 검출 및 복구 메커니즘을 통해 구현.4. 이중화 (Redundancy)시스템의 구성 요소 (하드웨어, 소프트웨어, 네트워크 등)를 하나 더 준비하여 장애 발..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 모니터, 인터페이스, 그리고 조건 변수
    2025-04-01 10:40:35
    모니터, 인터페이스, 그리고 조건 변수1. 모니터 (Monitor)모니터는 공유 자원(데이터)과 이 자원에 접근하는 프로시저(메서드)들을 하나로 묶고, 자동적으로 상호 배제(Mutual Exclusion) 기능을 제공하는 고급 동기화 추상화 구조다. 프로그래머가 락(lock) 관리를 명시적으로 하지 않아도 안전하게 공유 자원을 다룰 수 있도록 돕는다.목적: 복잡한 동기화 문제를 단순화하고, 락/세마포 등을 직접 사용할 때 발생하기 쉬운 오류(예: 데드락, 잘못된 락 순서)를 줄임.주요 특징:상호 배제 (Mutual Exclusion): 모니터 내부에 정의된 프로시저(메서드)는 한 번에 오직 하나의 스레드만 실행할 수 있음. 즉, 모니터 자체가 암묵적인 락을 관리.캡슐화 (Encapsulation): 모니..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 세마포, wait/signal 함수, 그리고 대기 큐
    2025-04-01 10:25:28
    세마포, wait/signal 함수, 그리고 대기 큐1. 세마포 (Semaphore) 란?세마포는 공유 자원에 대한 접근을 제어하거나, 프로세스/스레드 간의 실행 순서를 동기화하기 위해 사용되는 정수 변수이다. 뮤텍스가 오직 하나의 스레드만 접근을 허용하는 것(상호 배제)에 초점을 맞춘다면, 세마포는 '사용 가능한 자원의 개수'를 관리하는 데 주로 사용된다.핵심 구성: 정수 값 (사용 가능한 자원의 수를 나타냄)과 두 가지 원자적 연산(wait, signal).종류:카운팅 세마포 (Counting Semaphore): 임의의 정수 값을 가질 수 있으며, 여러 개의 동일한 자원에 대한 접근을 제어할 때 유용함 (예: 사용 가능한 프린터 3대).바이너리 세마포 (Binary Semaphore): 0 또는 1..
  • [ CS/컴퓨터구조와 운영체제 ]
    [운영체제] 동기화 기법 : 뮤텍스 락, acquire/release 함수, 그리고 바쁜 대기
    2025-04-01 10:11:07
    1. 뮤텍스 락, acquire/release 함수, 그리고 바쁜 대기1-1. 뮤텍스 락 (Mutex Lock) 이란?뮤텍스(Mutex, Mutual Exclusion) 락은 여러 스레드가 동시에 공유 자원에 접근하는 것을 막기 위한 동기화 기법이다. 임계 구역(Critical Section)이라고 불리는 코드 영역을 한 번에 하나의 스레드만 실행하도록 보장하여 데이터의 일관성을 지킨다.상호 배제: 뮤텍스의 가장 핵심적인 기능. 하나의 스레드가 특정 자원이나 코드 영역에 접근하면, 다른 스레드는 해당 스레드가 락을 해제할 때까지 기다려야 함.공유 자원 보호: 여러 스레드가 동시에 접근하여 값을 변경할 때 발생할 수 있는 경쟁 상태(Race Condition)를 방지.동기화: 스레드들의 실행 순서를 제어하..