전체 글 162

Docker 기반 웹 푸시 알림 시스템 - 4

Web Push 알림 시스템 구현 (DB 설계 변경 이후 실제 코드 중심) 앞선 글에서는 Web Push 시스템의 DB 설계를 사용자 중심 → 구독(endpoint) 중심으로 변경한 배경을 정리했다.이번 글에서는 그 설계가 실제 코드에서 어떻게 구현되었는지, Web Push 기술 특성과 어떤 식으로 맞물리는지를 코드 중심으로 정리해보았다.전체 흐름 요약 (기술 관점)관리자 --(발송 요청)-> Controller --> SendService --> PushSender --> FCM/PushServer --> Browser Service Worker 큰 변경점은 사용자가 아니라 구독 단위로 발송이 이뤄진다는 점이다.1. 구독 정보 도메인 (BDomain)/* * 편의성을 위하여 Lombok 사용 * Web..

SideProject 2026.02.02

Docker 기반 웹 푸시 알림 시스템 - 3.5

DB 설계 변경에 대한 정리 (현실 로직 우선)초기 설계에서는 푸시 구독 정보를 사용자 테이블(A)와 연계하여 관리하는 구조를 고려했다.다만 실제 구현 단계에서 아래와 같은 현실적인 제약 사항을 확인했다.사용자 정보 연계를 위해서는 기존 통합로그인(SSO) 시스템 연동이 필요해당 시스템 연동에는 별도의 라이선스 및 행정 절차가 요구됨단순 푸시 알림 PoC 및 운영 검증 단계에서 즉시 적용하기에는 비용과 일정 측면에서 비효율적이러한 이유로 지금 시점에서 현실적으로 구현 가능한 로직부터 우선 반영하는 방향으로 설계를 조정했다.변경된 방향성사용자 중심 → 구독(endpoint) 중심 설계Web Push 특성상, 실제 푸시 발송의 최소 단위는 사용자 계정이 아닌 브라우저의 endpoint이다.현재 단계에서는 로..

SideProject 2026.01.29

Docker 기반 웹 푸시 알림 시스템 - 3

Spring Boot 기반 웹 푸시 알림 서비스 - DB 테이블 설계1. DB 테이블 설계아래와 같은 요구사항 충족을 위해 푸시 발송 로직보다 먼저 DB 구조를 설계했다.누가 알림을 받았는지어떤 메시지가 언제 발송되었는지발송 성공/실패 여부특정 사용자 또는 전체 발송 이력 조회향후 재발송, 통계, 로그 관리2. 전체 테이블 구성 개요4개의 핵심 테이블로 구성 (테이블명은 대외비)테이블명역할A알림 대상 사용자 정보B웹 푸시 구독 정보C발송할 알림 메시지D알림 발송 이력 각 테이블은 역할을 명확히 분리하여 확장성과 유지보수성을 고려하여 설계했다.3. 알림 대상 사용자 테이블(A)알림을 받을 수 있는 사용자 정보를 관리하는 테이블설계 포인트USER_NUMB를 기준 키로 사용학생 / 직원 / 일반 등 사용자 유..

SideProject 2026.01.27

🐳 도커(Docker) 프록시 네트워크 설정

포트 직접 접근에서 프록시 네트워크 방식으로 전환한 이유기존에는 아래처럼 포트를 직접 열어서 접근했다.http://도메인:8080http://도메인:9000 이 방식은 간단하지만, 운영 환경에서는 여러 문제가 있다.포트 직접 노출 방식의 한계서비스가 늘어날수록 포트 관리 지옥방화벽, 보안 장비 설정 복잡서비스 구조가 외부에 그대로 노출HTTPS 적용 시 서비스마다 설정 필요“서비스가 많아질수록 관리 포인트가 기하급수적으로 늘어난다.”프록시 네트워크 방식이란?외부에서는 단 하나의 진입점(WEB) 만 바라보고 실제 서비스들은 Docker 내부 네트워크에서만 통신하게 만드는 구조다.외부 사용자 ↓ HTTPS[Nginx Reverse Proxy] ↓ Docker Network[서비스 / 배치 / 관리자]..

Dev/CS 2026.01.21

🐳 도커(Docker) 기본 개념과 용어 정리

도커 프로젝트를 진행하면서 관련된 단어 정리를 해보려 한다.이미지? 컨테이너? 볼륨? 다양한 용어들이 한꺼번에 쏟아져서 어렵게 느껴졌지만 막상 두들겨보니 일상에서 익숙한 예시를 찾게되어 알기 쉽게 정리해 보았다.도커란?도커는 ‘애플리케이션을 실행하는 데 필요한 것을 한 번에 담아 어디서든 똑같이 실행할 수 있게 해주는 기술’도커 이미지(Image) = 🍱 밀키트도커 이미지는 애플리케이션 실행에 필요한 모든 것을 담아놓은 설계도 + 재료 세트 밀키트레시피손질된 재료양념조리 순서도커 이미지OS 기반 환경라이브러리실행 파일설정 값밀키트는 아직 요리된 상태가 아니고,도커 이미지도 아직 실행된 상태가 아니다.컨테이너(Container) = 🍳 실제로 조리된 요리컨테이너(Container)는 도커 이미지를 실제..

Dev/CS 2026.01.20

[Windows] 컴퓨터 자동 종료 타이머 설정 방법

윈도우에는 별도 프로그램 없이도 자동 종료 타이머를 설정할 수 있는 기능이 있다.윈도우 10, 11 공통으로 사용 가능한 방법을 정리한다.명령어로 컴퓨터 자동 종료 설정하기1. 실행 창 열기키보드에서 [Windows + R] 누르기실행 창이 나오면 아래 명령어 입력shutdown -s -t 3600 2. 명령어 설명 -s : 종료-t : 시간(초 단위)3600 : 1시간 (60초 × 60분)시간입력 값30분18001시간36002시간7200 입력 후 확인을 누르면 아래와 같이 설정한 시간과 자동으로 컴퓨터가 종료된다는 알림이 나온다.3. 자동 종료 취소 방법예약을 설정했는데 취소하고 싶다면 아래 명령어를 입력하면 된다.shutdown -a 위와 같은 알림이 온다면 자동 종료 예약이 정상적으로 취소된 상..

Docker 기반 웹 푸시 알림 시스템 - 2

컨테이너 GUI 관리 도구 Portainer 도입이전 글에서는 Docker 기반으로 웹 푸시 알림 서비스를 설계한 전체 구성과 아키텍처 개요를 정리했다.이번 글에서는 실제 프로젝트를 시작하며 Docker 컨테이너를 효율적으로 관리하기 위해 Portainer를 도입한 이유와 설치 과정을 정리한다.1. Portainer 도입 이유이번 프로젝트는 다음과 같은 특징을 가진다.단일 서버 환경Docker 기반 서비스 운영서비스별 컨테이너 분리향후 컨테이너 수 증가 가능성 고려이런 환경에서 명령어로만 관리하는 데에는 한계가 있다.특히 운영 관점에서는 다음과 같은 불편함이 발생할 수 있다.실행 중인 컨테이너 상태를 한눈에 보기 어렵고 CLI로 로그를 하나하나 확인해야함컨테이너 재시작·중지 작업의 번거로움이러한 문제를 ..

SideProject 2026.01.19

Docker 관리 도구(Portainer) 도입 시 겪은 시행착오 정리

운영 중인 서버에서 Docker 기반 서비스가 늘어나면서 컨테이너 상태와 리소스를 직관적으로 확인할 수 있는 관리 도구의 필요성을 느끼게 되었다. 이에 Docker 관리 UI 도구인 Portainer 도입을 검토했고 그 과정에서 겪은 시행착오와 최종 판단을 정리해본다.1 .기존 운영 환경현재 서버는 다음과 같은 Docker 컨테이너가 운영 중인 상태였다.nginx: 외부 요청 및 SSL 처리Spring Boot 웹 서비스RedisDaily Scheduler모든 서비스는 Docker Compose로 관리되고 있으며, 운영 서버 특성상 기존 서비스에 영향을 주지 않는 것이 최우선 원칙이었다.2. Portainer 도입 목적실행중인 컨테이너 상태 확인리소스 사용량 모니터링로그 확인 및 컨테이너 관리 편의성 향..

Dev/Docker 2026.01.16