안녕하세요

제가 관심있는 것들을 연구하고 가지고 놀며 기록하는 블로그입니다.

저에 대해 좀 더 알고싶다면 About_Me를 읽어주세요.

2025 목표

  1. 홈서버 구축 [완료]
  2. 서비스 하나 띄우기 [완료] Picky Trip
  3. 리눅스 마스터 1급 취득
  4. 좀 더 내 이야기를 담아서 블로그 글 12개 쓰기(12/12). about은 제외 [완료]
  5. 월 150은 투자/저축하기 [진행중]
  6. IELTS 6.0 이상 도전
6. 클라이밍 갈색 1개 풀기 [완료]



  • CentOS cron 작업 계정 만료 이슈 해결

    문제 상황 CentOS 환경에서 주기적으로 실행되어야 할 cron 작업이 어느 순간부터 동작하지 않는 현상이 발생했습니다. 원인 파악 Cron 로그 확인 CentOS에서는 /var/log/cron을 통해 크론잡의 실행 여부와 상태를 확인할 수 있습니다.

  • Broker와 클러스터

    Broker와 클러스터 Broker란? Broker는 Kafka 서버를 의미하며, 메시지를 저장하고 클라이언트의 요청을 처리하는 핵심 컴포넌트입니다.

  • 0. index

    Kafka 학습 가이드 Apache Kafka는 분산 스트리밍 플랫폼으로, 대용량 실시간 데이터 처리를 위한 핵심 기술입니다. 목차 1. 기초 개념 Kafka란 무엇인가 메시징 시스템과 Kafka의 차이점 Kafka의 주요 특징과 장점 Kafka 사용 사례 2.

  • Kafka 사용 사례

    Kafka 사용 사례 Kafka는 다양한 산업과 시나리오에서 활용됩니다. 실제 기업들이 어떻게 Kafka를 사용하는지 살펴보겠습니다. 1. 메시징 시스템 (Messaging) 개요 전통적인 메시지 브로커를 대체하여 시스템 간 비동기 통신을 처리합니다.

  • Kafka란 무엇인가

    Kafka란 무엇인가 정의 Apache Kafka는 분산 이벤트 스트리밍 플랫폼(Distributed Event Streaming Platform)입니다. LinkedIn에서 개발하여 2011년 Apache 오픈소스 프로젝트로 공개되었습니다.

  • Kafka의 주요 특징과 장점

    Kafka의 주요 특징과 장점 1.

  • 메시징 시스템과 Kafka의 차이점

    메시징 시스템과 Kafka의 차이점 전통적인 메시징 시스템 메시지 큐 (Message Queue) 대표적인 시스템: RabbitMQ, ActiveMQ, Amazon SQS 특징: Producer → Queue → Consumer Point-to-Point 모델 메시지가 한 번 소비되면 큐에서 삭제됨 Consumer가 메시지를 가져가면(pull) 다른 Consumer는 받을 수 없음 사용 사례: 작업 분배 (Task Distribution) 비동기 처리 (Async Processing) Pub/Sub 시스템 (Publish/Subsc...

  • 컨테이너

    컨테이너 기술은 애플리케이션을 실행하는 데 필요한 모든 파일, 라이브러리, 설정 등을 하나의 패키지로 묶어 어떤 환경에서도 일관되게 실행될 수 있도록 만든 기술 특징 경량화 컨테이너는 운영체제(OS)를 공유하고, 필요한 최소한의 리소스만 사용하기 때문에 가볍습니다.

  • 이직 사유의 중요성

    들어가며 최근 이직을 준비하며 깨닫는 바가 있어 글로 남기려 합니다. 저는 커리어를 시작하고 현재 2번째 이직을 준비하고 있습니다.

  • NestJS WebSocket 게이트웨이와 실시간 폴더 트리 동기화

    최근 프로젝트에서 실시간 폴더 트리 동기화 기능을 구현하면서 NestJS의 WebSocket 게이트웨이와 EventEmitter를 활용한 아키텍처를 구성했습니다. 이 과정에서 발견한 중요한 설정과 구조에 대해 정리해보려고 합니다.

  • PostgreSQL Index 비교

    PostgreSQL 인덱스 비교: GIN(pg_bigm) vs B-tree 개요 PostgreSQL에서 텍스트 검색을 위한 두 가지 주요 인덱스 방식인 GIN(pg_bigm)과 B-tree 인덱스의 특성과 성능을 비교 분석합니다. 인덱스 구조 상세 분석 1.

  • 실시간 웹 기술 비교 Polling, Long Polling, SSE, WebSocket

    이 문서는 클라이언트-서버 간 실시간 데이터 통신을 위한 주요 기술인 Polling, Long Polling, SSE(Server-Sent Events), WebSocket을 비교하고, 특정 시나리오(1500개 동시 연결 및 방송)에 가장 적합한 기술을 분석합니다.

  • 8개월 코딩테스트 여정기: 체계적인 알고리즘 템플릿과 함께한 성장 기록

    8개월간의 꾸준한 코딩테스트 준비 여정과 체계적인 알고리즘 템플릿 활용법 - 초보에서 중급자로 성장하기까지의 실전 경험과 노하우 공유

  • Quartz 정적 사이트에 Supabase 실시간 댓글 시스템 구축하기

    정적 사이트 생성기 Quartz에 Supabase를 활용한 실시간 댓글 시스템을 구축하는 완전한 가이드 - 실제 문제 해결 과정 포함

  • 배포 방식 비교

    ⏺ 🔄 배포 방식 비교 현재 방식 (볼륨 하이브리드) ✅ 장점 즉시 사용 가능 - 추가 인프라 불필요 개발자 독립성 - 각자 Mac에서 완결 비용 제로 - 서버/VM 추가 불필요 네트워크 의존성 없음 - 완전 오프라인 가능 ❌ 단점 크로스 플랫폼 빌드 복잡성 - Docker buildx, 플랫폼 차이 빌드 시간 - Mac에서 Linux 타겟 빌드는 느림 이미지 크기 - 2.7GB는 여전히 큼 개발자별 환경 차이 - Mac 버전, Docker 설정 등 Linux 빌드 서버 방식 ✅ 장점 네이티브 빌드 - Linux에서 Linux용 ...

  • Verdaccio Docker 서버 이전 후기 - Git 방식에서 서버 방식으로의 회귀

    이전 글에서 Git 방식을 선택했던 SCSS 모듈화 프로젝트가 다시 Verdaccio 서버 방식으로 돌아온 이유와 Docker 기반 Verdaccio 구축 과정을 상세히 공유합니다.

  • 사내 SCSS 모듈화 진행기 - 배포 방식 고민부터 Git 방식 선택까지

    사내 SCSS 모듈화 프로젝트 진행 과정에서 고민했던 다양한 배포 방식들(Verdaccio, 웹 개시 방식, Git 방식)을 비교 분석하고, 최종적으로 AWS CodeCommit을 활용한 Git 방식을 선택한 이유와 구현 방법을 공유합니다.

  • AI 툴과 함께한 7일간의 개발 도전기 - 코파일럿 입코딩 대회와 Cursor로 만든 Picky Trip

    AI 툴의 힘을 체감한 일주일 최근 일주일 동안 AI 개발 도구들과 함께 두 가지 특별한 경험을 했습니다.

  • xbar app group 플러그인

    xbar 앱 그룹 실행 플러그인 이 플러그인은 macOS용 무료 메뉴바 유틸리티인 xbar를 사용하여 자주 사용하는 애플리케이션 그룹을 한 번에 실행할 수 있도록 도와줍니다.

  • JWT 인증, 프론트엔드에서 더 스마트하게 관리하기 - 자동 재발급 전략과 전용 디버깅 익스텐션

    복잡한 JWT Access Token 관리, 이제 그만\! 프론트엔드에서 메모리 기반 싱글톤 관리, 401 에러 시 자동 재발급 및 요청 재시도 로직을 TypeScript로 구현한 방법을 공유합니다. 직접 개발한 JWT 디버깅 크롬 익스텐션 'JWT Badge'로 개발 효율도 높여보세요.

  • JAR vs WAR, WAS vs Web Server: 무엇이 어떻게 다른가?

    프로젝트가 커질수록 “JAR로 배포해야 할까, WAR가 나을까?”, “Nginx 같은 웹 서버랑 Tomcat 같은 WAS는 뭐가 달라?” 같은 질문이 자주 등장합니다.

  • NestJS에서 JWT, Passport, Strategy 패턴을 활용한 인증 구현

    NestJS 환경에서 JWT, Passport, Strategy 패턴을 사용하여 인증을 구현하는 방법에 대한 기술 블로그입니다. 장점, 구현 방식, 더 활용할 수 있는 방향을 제시합니다.

  • mise로 깔끔하게 개발 환경 버전 관리하기

    NestJS, NextJS 등 다양한 기술 스택 사용 시 발생하는 버전 충돌 문제를 mise를 통해 해결하고, 설치 및 사용법을 알아봅니다.

  • OAUTH2와 JWT

    OAuth2와 JWT는 현대 웹 애플리케이션에서 인증(Authentication) 과 인가(Authorization) 를 구현할 때 자주 마주치는 핵심 개념입니다.

  • Tiptap Redis 장애대응 시뮬레이션

    Tiptap 공동편집 에디터의 Redis 장애 시나리오를 기반으로 개선 사항과 대응 전략을 정리한 기술 포스트입니다.

  • Tiptap 공동편집 Editor

    Tiptap 에디터 최근 공동 편집 기능이 들어간 에디터를 만들고 있습니다. (25.03.24 ~) 언제까지 유효할진 모르겠지만, 공동편집 체험하기에 가볍게 띄워놨습니다.

  • 홈서버에서의 모니터링

    모니터링의 필요성 저는 최근 홈서버를 통해 블로그를 운영중입니다.현재의 사이트가 그 블로그이죠. 제 블로그는 이상하게도 자주 404에러가 발생하고 있었습니다. 블로그 외의 다른 서비스들을 많이 띄워놨지만 다른 서비스들은 아무 문제가 없었습니다.

  • SOLID

    SOILD 원칙 S: 단일 책임 원칙(Single Responsibility Principle, SRP) ‘하나의 객체가 하나의 책임만 져야 한다.’ 클래스를 단 한 가지 목표만 가지고 작성해야 한다.

  • 객체지향

    객체지향 객체 객체는 실세계의 개체를 의미합니다. 객체는 상태(field)와 동작(method)을 가지고 있습니다. 객체는 클래스의 인스턴스로 field에 상태를 저장하고 method로 동작을 표현합니다. 클래스 클래스는 탬플릿, 청사진과 같이 레시피와 비슷합니다.

  • Push 서버 Kafka 도입기

    Kafka를 먼저 읽어보시면 이해가 더 잘되실겁니다. 도입기 기존에는 node 서버가 요청을 받아서 데이터를 가공하여 FCM으로 전달하는 서버로 구성되어 있었는데, 몇가지 문제가 있었습니다.

  • Kafka

    일반적인 구조 점선은 구독을 의미하고, 실선은 요청 및 응답을 의미합니다. Producer 특정 Topic의 특정 파티션으로 메시지를 발행하는(생산하는) 생산체. 기본적으론 response를 받지 않는 단방향 통신입니다.

    Kafka
  • GitHub Action을 이용한 CI/CD 구축하기

    최근에는 젠킨스 대신 GitHub Action을 이용해 CI/CD 파이프라인을 구성하는 사례가 많아졌습니다. GitHub에 코드가 이미 호스팅되어 있는 환경에서는 설정이 간단하고 GitHub와의 연동이 원활하기 때문에 효과적입니다.

  • Git Hook을 통한 단순 배포

    1. 배포 개요 • 기본 개념: 로컬에서 Git에 push하면 서버의 Bare Repository에 코드가 업데이트되고, Git Hook(주로 post-receive)이 실행되어 최신 코드가 지정한 배포 디렉토리(DEPLOY_DIR)로 복사됩니다.

  • 온프레미스 환경에서의 패키지 추가 시 고려사항

    내부 개발 서버에서 chart.js(v4.4.7)를 새로 도입하던 중, @kurkle/color 의존성 문제로 인해 이슈가 발생했습니다.

  • 토스 러너스하이 1기 후기

    러너스하이 1기를 마치고 토스 러너스하이 1기가 끝난 지 벌써 한 달이 지났습니다. 너무 달려온 탓인지 지쳐서 빠르게 후기를 남기지 못했네요.

  • 토스 러너스하이

    이번에 토스 러너스하이 1기에 참여하게 되었습니다. 자세한 내용은 어디까지 말해도 되는지 잘 모르겠어서 다 말할 순 없겠지만 간략하게는 아래와 같습니다.

  • SSL 인증서

    각 요소의 정의 SSLCertificateKeyFile 서버의 **개인 키(Private Key)**가 저장된 파일을 가리킵니다.

  • 나도 Sping Boot Contributor?

    해보고 싶은게 많은 주니어 저장만 해두고 미뤄두었던 글들과 링크들을 하나씩 살펴보며 공부하는 요즘. 해보고 싶은 것들이 많이 생겼습니다.

  • Proxy

    프록시 프록시 서버(proxy server)란 “클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다.

  • 면책조항

    면책조항 최종 수정일: 2025년 7월 27일 일반 면책사항 본 사이트의 모든 콘텐츠는 정보 제공 목적으로만 작성되었습니다. 사이트 운영자는 다음 사항에 대해 책임을 지지 않습니다.

  • 이용약관

    이용약관 최종 수정일: 2025년 7월 27일 제1조 (목적) 본 약관은 Yong’s Park 블로그(이하 “사이트”)의 이용과 관련하여 사이트 운영자와 이용자 간의 권리, 의무 및 책임사항을 규정함을 목적으로 합니다.

  • About

    About 사이트 소개 이 사이트는 개발자로서의 경험과 지식을 공유하는 개인 블로그입니다. 주로 백엔드 개발, 데이터베이스, 시스템 아키텍처, 그리고 다양한 기술 스택에 대한 실무 경험을 바탕으로 한 글들을 작성합니다.

  • Contact

    Contact 연락처 정보 궁금한 점이나 협업 문의, 기술적인 질문이 있으시면 언제든 연락주세요.

  • Privacy Policy

    Privacy Policy 최종 수정일: 2025년 7월 5일 개인정보 처리방침 본 사이트는 이용자의 개인정보를 중요하게 생각하며, 관련 법령에 따라 개인정보를 보호하고 있습니다.

  • Full Text Search Index 적용

    배경 우리 회사의 고질적인 VOC 중 하나로 채팅에서 검색 시 이전 채팅 데이터에서 내용, 파일, 이미지에 대해서 조회가 되는데 없는 단어로 검색 시(ex.

  • JDBC vs SQL Mapper(Mybatis) vs ORM(JPA)

    Java 개발자로 일하고 공부하며 JDBC와 JPA, Mybatis는 다 사용해봤지만, 이들의 차이점이 정확히 무엇인지, 어떨 때 사용하는 것이 좋을지 고민을 해본 적이 없어서 이번 기회에 정리해보려고 한다.

  • SSO(Single Sign-On)

    여러 개의 사이트, 서비스에서 한 번의 로그인으로 여러가지 다른 서비스와 사이트들에 자동적으로 접속하여 이용하는 로그인 방식. 사용자 정보를 연동하여 하나의 사용자 정보를 기반으로 여러 시스템을 하나의 통합 인증을 사용하게 하는 것을 말한다.

  • 대용량 데이터 update 방법(CTAS)

    사용자의 ID를 migration 해줘야 하는 작업이 생겼다. 그냥 UPDATE를 진행해보니 사용기간이 길어 업데이트 해야 할 데이터가 많아 프로세스가 종료되는 문제가 발생했다.

  • 디스코드 봇 버전업, 음악기능 추가

    이번에 같이 게임하는 친구들의 요청을 받아 디코봇에 유튜브 음악 스트리밍 기능을 추가해봤다. 기본적으론 github.com/brokiem/broki-s-music-bot/tree/master 해당 깃허브 소스를 참고했다.

  • Abstract vs Interface

    Interface와 Abstract Class는 상속(extends)받거나, 구현(implements)하는 Class가 Interface나 Abstract Class 안에 있는 Abstract Method를 구현하도록 강제하는 공통점을 가지고 있다.

  • Web Storage

    자바스크립트로 웹 개발을 하다보면 데이터를 저장할 일이 생기는데, 보통 이럴 때 데이터베이스(DB) 서버나 클라우드(Cloud) 플랫폼, 세션, 쿠키 등에 데이터를 저장하는 경우가 많습니다.

  • 디스코드 봇 만들어보기

    저는 게임을 좋아했습니다. 공부를 한다고 2년 정도 안하다가 최근 다시 시작했는데, 만들어보고 싶은게 생겼습니다. 유튜브를 보면 뽑기를 통해 강제로 특정 캐릭터를 올리는 룰을 진행하는데, 한 번 재밌어보여서 원랜디의 디스코드 봇을 만들어보고 싶어졌습니다.