728x90
반응형
SMALL

IT/etc 19

[DevOps] 무중단 배포 전략 4가지 총정리: 롤링,카나리,블루그린,A/B 배포 장단점

📌 들어가기서비스를 운영하다 보면 새로운 기능을 배포해야 합니다. 하지만 배포 중 서비스가 중단되면 사용자는 불편을 겪게 됩니다.무중단 배포(Zero-Downtime Deployment)는 서비스 운영 중에도 중단 없이 새로운 버전을 배포하는 전략입니다. 오늘은 실무에서 자주 사용되는 4가지 무중단 배포 전략을 비교하고, 각각의 특징과 선택 기준을 소개합니다.1️⃣ 롤링 배포 (Rolling Deployment)정의: 순차적으로 구 버전 인스턴스를 제거하고 새 버전으로 교체하는 배포 방식입니다.동작 원리초기 상태: [v1] [v1] [v1] (총 3개 인스턴스) (모두 로드밸런서에 연결)Step 1: [v1] [v1] [v1] └─ 첫 번째 인스턴스를 LB에서 제거 ..

IT/etc 2026.04.06

[CI/CD] paths-filter 하나로 빌드 시간 72% 단축하기

배경사이드 프로젝트를 개발하면서 GitHub Actions로 CI/CD를 운영하고 있습니다.프론트엔드(Next.js)와 백엔드(Spring Boot + Docker)를 하나의 레포에서 관리하다 보니,텍스트 하나 수정해도 매번 풀빌드가 돌았습니다.Node.js 설치 → npm ci → Next.js 빌드JDK 설치 → Gradle 빌드 → Docker 빌드 → Docker 푸시 → 서버 배포 평균 소요 시간: 약 3분대...!FE 수정 1줄 → 백엔드 Docker 이미지까지 새로 빌드 → 배포까지 3분 대기문제 분석# 기존: 모든 커밋에서 무조건 전체 실행- name: Build with Gradle # BE 변경이 없어도 항상 실행 run: ./gradlew build -x test- nam..

IT/etc 2026.03.13

[Linux] crontab × find 조합으로 N일 초과 파일 자동 삭제하기

서버를 운영하다 보면 로그 파일이 조용히 쌓여 어느 날 디스크를 꽉 채우는 상황을 겪게 됩니다.크롤러 로그가 100MB를 넘긴 후에야 뒤늦게 수동으로 지웠는데, 이 과정을 자동화한 방법을 소개합니다.상황 정리/home/user/project/logs/├── crawler_20260308.log # 날짜별 로그├── crawler_20260309.log├── crawler_20260310.log├── crawler_20260311.log└── crawler.log # 누적 메인 로그 (108MB...) 날짜별 로그(crawler_YYYYMMDD.log)는 매일 생성되지만, 오래된 파일은 굳이 보관할 필요가 없습니다.7일치만 남기고 초과분은 매일 자동 삭제되도록 설정합니다.핵심 명령어..

IT/etc 2026.03.12

[Server] 내장 톰캣 대신 Nginx 리버스 프록시를 도입한 이유

처음에 빠르고 간단히 내장톰캣으로 프로젝트 개발을 시작했었다.implementation 'org.springframework.boot:spring-boot-starter-web' [Server] 내장 톰캣 대신 Nginx 리버스 프록시를 도입한 이유사이드 프로젝트를 운영하면서 이런 구조가 되었다.Next.js (static export)Backend API 서버LLM Agent 서버크롤러이미지 리소스문제는 모두 한 서버에서, 각기 다른 포트로 떠 있었다는 점이다.왜 Nginx를 고민했을까?1️⃣ 포트 단일화FE: 정적 파일BE: 8080Agent: 8081사용자는 하나의 도메인으로 접속하지만 실제 서비스는 여러 포트에서 동작 중이었다.이를 다음처럼 정리하고 싶었다.example.com → 정적 파일e..

IT/etc 2026.02.20

[정부API] "개인회원은 사용할 수 없습니다": 공공데이터 Open API 사용기

본문배경: 설레는 마음으로 시작한 API 연동Career Lens 프로젝트를 진행하면서 채용정보를 실시간으로 제공하고 싶었습니다. 마침 한국고용정보원(워크넷)에서 제공하는 "채용정보 API"를 발견했고, 공공데이터포털에서 Open API 서비스라고 명시되어 있었습니다.생각: "오! 공공데이터면 누구나 쓸 수 있겠지?"현실: "개인회원은 사용할 수 없는 OPEN-API입니다."📋 상황 분석: 뭐가 문제지?1단계: 인증키 신청공공데이터포털(data.go.kr)에서 "한국고용정보원_워크넷 채용정보" API를 검색📌 API 정보- 제공기관: 한국고용정보원- API 유형: LINK- 데이터포맷: XML- 활용신청: 8,597명- 비용: 무료"무료이고, 활용신청이 8,000명 이상? 대박이네!"라고 생각했습니다..

IT/etc 2026.01.28

[Docker] 컨테이너 파일을 서버에 마운트하기 : Docker + Volume Mount

🎯 문제: 컨테이너의 파일을 호스트에서 어떻게 접근할까?일반적인 상황:Docker 컨테이너 내부└─ /app/crawler/main.py (크롤러 파일)호스트(서버) 시스템└─ /home/opc/career-lens/crawler/ (비어있음 😢)크론잡└─ python3 /home/opc/career-lens/crawler/main.py (파일이 없어서 실행 불가!)원인: 컨테이너와 호스트의 파일시스템이 분리되어 있음✨ 해결책: Docker Volume Mount (-v 옵션)docker run -v /app/crawler:/home/opc/career-lens/crawler \ career-lens:latest의미:컨테이너의 /app/crawler/↔️ 호스트의 /home/opc/career..

IT/etc 2026.01.27

[SSL] Let's Encrypt 무료 인증서로 HTTPS 자동갱신 구축하기: Certbot + Docker 완전 자동화 가이드

[SSL] Let's Encrypt 무료 인증서로 HTTPS 자동갱신 구축하기: Certbot + Docker 완전 자동화 가이드[SSL] Let's Encrypt 무료 인증서로 HTTPS 자동갱신 구축하기: Certbot + Docker 완전 자동화 가이드개요이 글은 Let's Encrypt 무료 SSL 인증서를 Certbot으로 발급하고, Docker 볼륨 마운트를 통해 이미지 재빌드 없이 자동갱신하는 방법을 정리합니다.Spring Boot 백엔드는 application.properties에 설정된 인증서 경로를 통해 자동으로 HTTPS를 처리하며, Systemd 타이머가 매달 정기적으로 인증서를 갱신합니다.목표✅ Let's Encrypt 무료 SSL 인증서 발급✅ 포트 80 (HTTP) → 포트 4..

IT/etc 2026.01.22

[CICD] 커밋만 하면 배포되게 만들기: GitHub Actions + Docker CI/CD 삽질기

커밋만 하면 배포되게 만들고 싶었다: GitHub Actions + Docker CI/CD 삽질기1. 글을 쓰게 된 배경Spring Boot 프로젝트를 하나 새로 시작하면서, 커밋만 하면 자동으로 서버에 배포되는 구조를 처음부터 제대로 만들어보고 싶었다.그동안 회사에서는 이미 잘 짜여진 CI/CD 파이프라인 위에서만 작업하다 보니, 정작 Docker, GitHub Actions, 서버 배포를 처음부터 끝까지 직접 구성해본 경험은 많지 않았다.이번에 개인 프로젝트를 하면서 다음을 목표로 잡았다.Spring Boot + Java 17GitHub Actions 기반 CI/CDDocker Hub 이미지 빌드 및 푸시Oracle Cloud 무료 서버에 컨테이너 배포그리고… 역시나 한 번에 될 리는 없었다 😅이 ..

IT/etc 2026.01.20

[CICD] Execute permission for Gradle Wrapper in CI workflow

github actions 126 에러 코드 발생시 해결 방법 build-and-deployProcess completed with exit code 126. .github/workflows/docker-ci.yml 파일에 Gradle Wrapper 실행 권한 부여해주기 (3.1.처럼)# 3.1. Gradle Wrapper 실행 권한 부여 (exit code 126 해결)- name: Grant execute permission for gradlew run: chmod +x gradlew# 3.2. Gradle 빌드 (초기엔 테스트 제외 권장)- name: Build with Gradle # run: ./gradlew build # 전체 빌드 (테스트 포함) run: ./gradlew build..

IT/etc 2026.01.20

[기타] 티스토리 광고 차단 크롬 확장프로그램 애드블록

https://chromewebstore.google.com/category/extensions Chrome Web Store브라우저에 새로운 기능을 추가하고 탐색 환경을 맞춤설정합니다.chromewebstore.google.com들어가셔서 ABP 검색하시면 됩니다. 직링크도 공유드립니다.Adblock Plus - 무료 광고 차단https://chromewebstore.google.com/detail/adblock-plus-free-ad-bloc/cfhdojbkjhnklbpkdaibdccddilifddb Adblock Plus - 무료 광고 차단 - Chrome 웹 스토어YouTube 및 여러분이 탐색하는 모든 곳의 광고를 제거합니다.chromewebstore.google.com

IT/etc 2025.08.06
728x90
반응형
LIST