728x90
반응형
SMALL

분류 전체보기 196

[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

[Codility] Round Robin 대기시간 합 구하기

구현(Simulation) + 수식 유도 유형 문제를 복기합니다.단계별 시뮬레이션 없이 수학적 공식으로 각 작업의 완료 시간을 직접 계산하는 접근이 핵심이었던 문제입니다.문제 유형: 구현(Simulation) — 라운드로빈 스케줄링 + 수식 유도문제 요약N개의 작업이 주어진다. 각 작업은 처리에 필요한 시간(정수)을 가진다.라운드로빈(Round Robin) 방식으로 1 단위씩 번갈아 처리할 때, 모든 작업의 완료 시간 합을 구하라.입력 예시:33 1 2출력 예시:13라운드로빈(Round Robin)이란?라운드로빈은 CPU 스케줄링에서 자주 등장하는 방식입니다.여러 작업을 정해진 시간 단위(여기서는 1)만큼 공평하게 번갈아 처리합니다.작업 목록: [3, 1, 2]시간 1: 0번 작업 처리 (3→2)시간 2..

[Codility] 그룹화 및 정렬 후 순서 출력하기 (+자릿수 동적 처리)

구현(Simulation) 유형 문제를 복기합니다.조건을 그대로 코드로 옮기는 구현 문제이지만, 원본 순서 보존과 자릿수 자동 조정 두 가지를 동시에 챙겨야 했던 문제입니다.문제 유형: 구현(Simulation) — 그룹화 + 정렬 + 포맷 처리문제 요약N개의 사진 정보가 주어진다. 각 줄은 파일명, 도시명, 촬영시간 형식이다.입력 순서를 유지하면서, 각 사진 이름을 도시명 + 도시 내 시간순 번호 + 확장자 형식으로 변환하라.단, 번호 자릿수는 해당 도시의 사진 수에 맞춰 동적으로 맞춘다.입력 예시:photo.jpg, CityA, 2013-09-05 14:08:15friend.png, CityB, 2015-06-20 15:13:22sunset.jpg, CityA, 2013-09-05 14:07:13la..

[Codility] 자릿수 합이 N인 가장 작은 수 (#Greedy)

[Codility] 자릿수 합이 N인 가장 작은 수 (#Greedy) 그리디 알고리즘 문제를 복기합니다.처음엔 단순해 보였지만, 히든 테스트케이스에서 꼼꼼하게 생각하게끔 만드는 문제입니다. 문제 요약양의 정수 N이 주어졌을 때, 각 자릿수의 합이 N이 되는 가장 작은 자연수를 구하시오.예시:N = 9 → 9N = 10 → 19 (1+9=10, 최솟값)N = 18 → 99 (9+9=18)N = 20 → 299 (2+9+9=20)풀이 접근: Greedy핵심 아이디어는 두 가지입니다.자릿수 합을 빠르게 채우려면 9를 최대한 써야 한다.9보다 작은 숫자를 여러 자리에 쪼개면 자리수가 늘어나서 수가 커집니다.수를 최소로 만들려면 나머지를 가장 앞자리에 배치해야 한다.예) N=20: 9,9,2 순서면 992, 2..

[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
728x90
반응형
LIST