[카테고리:] DEVLog

  • Go로 구현하는 RabbitMQ 토픽 설계 완전 정리

    Go로 구현하는 RabbitMQ 토픽 설계 완전 정리

    1. Ordered Topic — 순서가 중요한 업무 흐름 RabbitMQ는 큐 단위로만 순서를 보장한다.즉, 메시지를 하나의 큐에서만 소비하면 순서가 유지되고, 여러 큐나 병렬 소비가 일어나면 순서가 깨진다. 이 구조는 결제, 정산, 배송처럼 순차적 업무 흐름이 있는 서비스에서 사용된다. 적용 사례 비즈니스 로직의 순서성이 데이터 정합성과 직접 연결되는 경우에 사용된다. 2. Unordered…

  • SSH 접속 시 어떤 인증서(키)가 사용됐는지 확인하는 방법

    SSH 접속 시 어떤 인증서(키)가 사용됐는지 확인하는 방법

    SSH로 서버에 접속할 때, 가끔 “지금 어떤 키로 인증됐지?” 싶을 때가 있다.이건 로컬(클라이언트)과 서버 양쪽에서 각각 확인할 수 있다. 1. 클라이언트에서 확인하기 가장 간단한 방법은 -v 옵션을 주는 것이다. 로그를 보면 다음처럼 출력된다. 여기서 Offering public key: 부분이 실제로 시도된 키다.SSH는 여러 키를 시도하면서 순서대로 인증을 시도하기 때문에, 마지막에 Authentication…

  • AWS Private Subnet NAT Gateway 연결했는데 인터넷이 안 될 때

    AWS Private Subnet NAT Gateway 연결했는데 인터넷이 안 될 때

    Private Subnet에 EC2를 두고 NAT Gateway를 연결했다.Route Table도 0.0.0.0/0 → nat-xxxx로 설정했다.그런데 여전히 curl은 timeout이 난다. DNS는 되는데 외부 연결이 안 되는 경우,이건 NAT Gateway 구조가 잘못된 경우다. 문제 증상 EC2에서 다음 명령을 실행했을 때 결과는 이렇게 나온다. DNS는 정상이다.즉, VPC의 enableDnsSupport, enableDnsHostnames는 켜져 있다.하지만 TCP 연결이 되지 않는다.패킷이 NAT…

  • 스타트업에서 VPN 비용 아끼는 법 — AWS 위에 WireGuard 직접 세팅하기

    스타트업에서 VPN 비용 아끼는 법 — AWS 위에 WireGuard 직접 세팅하기

    VPN 비용, 사실 꽤 아깝다.특히 스타트업처럼 보안은 챙겨야 하는데 비용은 줄여야 하는 환경에서는 더 그렇다.그래서 이번엔 별도 VPN 서비스를 쓰지 않고,AWS EC2 위에 직접 WireGuard를 올려서 안전한 내부 접근을 구성하는 방법을 정리해본다. 이건 단순한 튜토리얼이 아니라,“보안·비용·가용성 세 마리 토끼를 잡는 구조“다. 1. 전체 구조 요약 핵심은 WireGuard가 VPC 안의 게이트웨이…

  • 실행 컨텍스트(Context) + 렉시컬 환경 + 스코프 체인

    실행 컨텍스트(Context) + 렉시컬 환경 + 스코프 체인

    자바스크립트를 조금만 깊게 들여다보면 “실행 컨텍스트(Execution Context)”라는 단어가 꼭 등장합니다. 이 컨텍스트는 자바스크립트 엔진이 코드를 어떻게 실행하고 변수와 함수를 어떻게 기억하는지를 설명하는 핵심 구조입니다. 결국, 렉시컬 스코프와 클로저도 모두 이 실행 컨텍스트 위에서 만들어지는 현상입니다. 실행 컨텍스트(Execution Context)란? 실행 컨텍스트는 자바스크립트 코드가 평가되고 실행되는 환경을 의미합니다. 엔진은 코드를 실행할 때마다…

  • 렉시컬 스코프(Lexical Scope)와 클로저(Closure)

    렉시컬 스코프(Lexical Scope)와 클로저(Closure)

    자바스크립트에서 스코프와 클로저는 한 번쯤은 꼭 이해하고 넘어가야 하는 개념입니다. 특히 렉시컬 스코프는 함수가 “어디서 실행되었는가”가 아니라 “어디서 정의되었는가”에 따라 변수를 참조한다는 점에서 중요합니다. 아래 예제를 보면 그 차이를 바로 이해할 수 있습니다. 렉시컬 스코프 (Lexical Scope) 렉시컬 스코프란 함수가 정의된 위치에 따라 변수의 접근 범위가 결정되는 것을 의미합니다. 즉,…

  • Next.js에서 React Query Hydration 제대로 이해하기

    Next.js에서 React Query Hydration 제대로 이해하기

    서버와 클라이언트 사이에서 실제로 일어나는 일 Next.js에서 React Query를 함께 사용할 때 가장 많이 오해되는 부분이 Hydrate와 Dehydrate입니다.서버에서 데이터를 미리 가져오고, 클라이언트에서 그 상태를 복원한다는 개념까지는 대부분 알고 있지만, 실제로 어떤 형태로 데이터가 전달되는지, JSON.stringify()가 어디에서 일어나는지 정확히 이해하는 사람은 많지 않습니다.이 글에서는 그 과정을 코드 단위로 분명히 짚어보겠습니다. React…

  • Module Federation: 마이크로 프론트엔드를 위한 혁신

    Module Federation: 마이크로 프론트엔드를 위한 혁신

    Module Federation은 웹팩 5(Webpack 5)에서 새롭게 도입된 기능으로, 여러 개의 프론트엔드 애플리케이션 간에 코드를 동적으로 공유하고 로드할 수 있도록 만들어졌습니다. 이 기능의 도입으로 마이크로 프론트엔드(Micro Frontend) 아키텍처를 보다 효율적으로 구현할 수 있게 되었으며, 대규모 프론트엔드 프로젝트의 구조적 문제를 해결하는 중요한 전환점이 되었습니다. Module Federation의 등장 배경 웹팩 4까지는 서로 다른…

  • Symbol 활용법 — 실전 가이드 (JS/TS)

    Symbol 활용법 — 실전 가이드 (JS/TS)

    자바스크립트의 Well-known Symbol들을 한 번에 정리하고, 실제 코드에서 어떻게 쓰면 좋은지까지 예제로 풀었습니다. 각 예제는 최신 사양(ECMAScript) 기준으로 동작 확인했으며, TypeScript 팁도 포함했습니다. 요약 (TL;DR) 빠른 목차 Symbol.iterator 가장 자주 쓰이는 심볼입니다. for…of, 스프레드(…), 구조 분해 등 이터러블 프로토콜이 이 키를 통해 동작합니다. 기본 예제 (여러분이 준 코드 개선) 제너레이터로…