728x90
반응형
SMALL

IT 83

[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

[SQL] ORDER BY Ties: 하나의 데이터가 여러 Page에 조회되는 이유

제가 아는 tie 는 넥타이 뿐입니다.라고 하실 분들을 위해(저도 포함입니다), 용어부터 짚고 넘어가보겠습니다.# 영어에서, tie = 묶다 / 연결하다 / 동점 => 스포츠 경기 동점되면, “The game is tied” 라고 표현# DB에서, ORDER BY tie = 정렬 기준 같은 row 존재 => “ORDER BY tie 발생했다" 라고 표현# tie-breaker = 동점을 깨는 기준 데이터 조회 쿼리에서 페이지네이션을 구현할 때 마주친 ORDER BY Ties 버그를 소개합니다.실제로는 1개의 행만 존재하는데, 1페이지와 2페이지에 동일한 데이터가 나타나는 현상을 겪었고, 그 원인과 해결 방법을 정리했습니다.문제 유형: 데이터베이스 — LIMIT/OFFSET 페이지네이션 불안정성문제: 1..

IT/DB 2026.03.30

[Index] 복합 인덱스 적용기: 트리 구조 개념부터 실전 적용까지

오늘은, 데이터를 조회하는 쿼리에 복합 인덱스를 추가하면서,인덱스가 어떤 원리로 동작하는지 다시 한번 정리했습니다. 배경: 인덱스 없이 조회하면 어떻게 될까?아래 예시는 조회 쿼리의 WHERE 절입니다.WHERE (use_yn != 'N' OR created_at::date = CURRENT_DATE - 1) AND (created_at IS NULL OR created_at::date >= CURRENT_DATE - 1) 인덱스가 없으면 PostgreSQL은 Sequential Scan(Seq Scan) 을 수행합니다.테이블의 모든 행을 첫 줄부터 끝까지 읽으며 조건을 하나씩 확인하는 방식입니다.데이터가 100건이면 100번, 1만 건이면 1만 번 읽습니다.데이터가 적을 때는 문제없지만, 쌓일수록 ..

IT/DB 2026.03.25

[JVM] Heap 구조 뜯어보기: new 한 줄이 메모리에서 벌어지는 일

이전 글에서 부하테스트를 주제로 포스팅하면서 JVM Heap 구조를 간략히 언급했는데,이번에는 JVM 자체를 한 번 깊게 다뤄보고자 합니다.2026.03.16 - [IT/java|Spring] - [부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기 [부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기배경여러 서비스를 운영하면서 공통 질문이 생겼습니다. "POD 한 대가 실제로 얼마나 버틸 수 있는가?"부하테스트를 준비하던 중, 검증계·운영계 모두 JVM Heap이 Pod 메모리와 맞지 않게 설정되어snapcode.tistory.com 알고 있다고 생각하면서도, 막상 설명하려면 막히는 내용 이기도 합니다.이미 알고 계신 분께는 복..

IT/java|Spring 2026.03.17

[부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기

배경여러 서비스를 운영하면서 공통 질문이 생겼습니다. "POD 한 대가 실제로 얼마나 버틸 수 있는가?"부하테스트를 준비하던 중, 검증계·운영계 모두 JVM Heap이 Pod 메모리와 맞지 않게 설정되어 있다는 것을 발견했습니다. Heap을 먼저 바로잡고 테스트를 진행했으며, 이 글은 그 과정 전체를 정리합니다.JVM Heap 최적화: 인수인계 시점부터 고정되어 있던 잘못된 설정을 발견 및 개선부하테스트: 최적화 이후 실제 성능을 데이터로 검증 JVM Heap 최적화문제 발견부하테스트 준비 중 Heap 설정을 살펴보다 이상한 점을 발견했습니다. 인수인계 시점부터 검증계·운영계 모두 Xms=Xmx=2048m으로 고정되어 있었는데, 환경별 Pod 메모리와 맞지 않는 설정이었습니다. 초기 개발 시 놓친 부분으..

IT/java|Spring 2026.03.17

[Kanana 429] 카나나 앰배서더 첫날 — 100명 모인 발대식 현장 후기

안녕하세요. 오늘은,KANANA 429 앰배서더 발대식 에 다녀왔습니다2026년 3월 13일, 카카오 AI 캠퍼스(경기 용인)에서 KANANA 429 앰배서더 발대식이 열렸습니다.대학생 / 크리에이터 / AI 전문가 세 그룹이 한자리에 모인 자리로, 참석자만 약 100명에 달했습니다. 입장: 키캡 · 이름표 · 죠르디 카드도착하자마자 귀여운 빈 키캡과 타임테이블이 적힌 이름표를 받았습니다. 키캡은 처음엔 비어있고, 미션 통해서 채워야 합니다. 누르면 불빛이 반짝반짝 합니다 손맛이 있습니다 인생네컷처럼 포토부스에서 사진을 찍으면 죠르디 카드로 만들어주는 이벤트도 있었습니다.카나나 모델을 활용한 것으로 알고있고, 카카오톡 사진 우측상단의 "영상으로 만들기" 기능도 처음 사용해볼 수 있었습니다. 각종 굿즈..

IT/AI 2026.03.13

[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

[Claude Code] 반복 프롬프트 이제 그만: 슬래시 커맨드로 나만의 AI 단축키 만들기

Claude Code를 쓰다 보면 매번 같은 긴 프롬프트를 붙여넣게 되는 순간이 옵니다.블로그 초안 작성, 코드 리뷰 요청, 커밋 메시지 정리 등... 이런 반복 작업을 한 줄로 줄여주는 게 커스텀 슬래시 커맨드입니다.https://code.claude.com/docs/ko/slash-commands 슬래시 커맨드란?Claude Code에서 / 로 시작하는 명령어입니다.기본 내장 커맨드(/help, /clear 등) 외에도, 사용자가 직접 만들어 등록할 수 있습니다.만드는 방법프로젝트 루트에 .claude/commands/ 디렉토리를 만들고, 그 안에 .md 파일을 생성하면 됩니다..claude/└── commands/ └── review.md → /review 로 호출됨파일명 = 커맨드명이..

IT/AI 2026.03.10

[OCI] 무료 서버 잡기: API 스크립트로 A1.Flex 인스턴스 자동 선점 (+Discord 알람 연동)

Elasticsearch를 자체 호스팅하려면 최소 4GB RAM 이상의 서버가 필요합니다.JVM 힙 메모리를 대량으로 사용하는 구조라 메모리가 부족하면 OOM으로 죽거나 정상 기동이 어렵습니다.항목Elasticsearch 최소 권장RAM4GB 이상 (힙 2GB + OS 캐시)CPU2 Core 이상DiskSSD 권장 Oracle Cloud Free Tier의 ARM 인스턴스(VM.Standard.A1.Flex)는 최대 4 OCPU / 24GB RAM까지 무료로 사용할 수 있어 Elasticsearch 운영에 충분한 스펙입니다.단, 항상 "Out of host capacity" 오류로 생성이 막힙니다. 이 글에서는 OCI REST API + 쉘스크립트 + 크론을 이용해 용량이 생기는 순간 자동으로 인스턴스..

IT/Cloud 2026.03.09
728x90
반응형
LIST