전체 글 137

Redis HAProxy

이 글에서는 Redis를 안정적으로 적용하기 위한 구성 방식, 특히 Sentinel과 HAProxy를 활용한 고가용성 아키텍처에 대해 단계적으로 알아보려 합니다.들어가기에 앞서, HAProxy가 필요한 이유부터 차근차근 살펴보겠습니다.1. 배경 지식1-1. OSI 7 Layer 1-2. Redis란?인메모리 기반의 고속 Key-Value 저장소(다양한 자료구조를 지원하는 NoSQL DB) 1-3. HAProxy vs Nginx 비교개인적으로 Nginx와 HAProxy의 차이가 궁금해서 찾아보았습니다. 차이점은 아래와 같이 HAProxy와 Nginx 각각이 주로(강점) 역할을 수행하는 곳이 L4, L7로 서로 달랐습니다. 1-4. HAProxy란?먼저, 간단하게 HAProxy는 부하 분산(Load Bala..

Spring 2025.07.08

JVM 메모리 누수 처리 방법

JVM 메모리 누수가 나는 이유와 상황에 대해 작성해 보려고 한다.먼저, JVM의 구조, 동작 방식 등을 알아보고 마지막에 상황을 가정하고 테스트 해볼 예정이다.1. JVM 동작 방식1. 프로그램 실행시 JVM은 OS로부터 메모리를 할당받는다.2. 자바 컴파일러(javac)가 소스코드(.java) -> 바이트 코드(.class) 컴파일3. Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크 하여 Runtime Data Area(실질적인 메모리를 할당 받아 관리하는 영역)에 올린다.4. Runtime Data Area에 로딩 된 바이트 코드는 Execution Engine을 통해 실제 기계어로 변환(인터프리터, JIT)4-1. Execution Engine에 의해 Garbage C..

Spring 2025.06.28

B Tree 계열의 알고리즘을 활용한 DB 인덱싱 튜닝

문제 정의게시판의 데이터가 많아질수록 DB에서 게시판을 불러오는 속도가 느려지는 상황 발생예상 원인Full Table Scan으로 인해 속도가 느려진다.인덱스 미사용으로 인한 비효율적인 검색디스크 I/O 증가 기술 선정기술설명장점Hash Index특정 값(=)에 대해 해시 테이블을 생성하여 빠르게 검색'=' 검색 속도가 빠름Full-Text Index긴 텍스트(TEXT, VARCHAR)에서 키워드 검색을 빠르게 수행특정 키워드 검색 최적화B+ Tree Index범위 검색(>, 특정 범위 검색에 효과적  B+ Tree 인덱스 선정 이유기존에 사용하고 있는 MariaDB에서 기존 테이블을 변경하지 않으면서, 범위 검색 성능을 최적화하기 위한 최적의 선택지는 B+ Tree 인덱스라고 생각하여 B+ Tree 기..

TIL 2025.02.28

DB 이중화 구현을 통한 DB 병목 현상 예방(with Redis 캐싱 전략)

1. 문제 - DB 병목 현상 및 성능 저하모든 읽기(조회)와 쓰기(저장) 작업이 단일 데이터베이스(DB)에서 수행되면, 트래픽 증가 시 심각한 병목 현상이 발생높은 동시 요청 처리 시 DB 부하 증가, 응답 속도 지연, 트랜잭션 충돌 증가, 서비스 장애 가능성 증가캐싱(Redis)이 적용되어도, 근본적인 읽기/쓰기 처리 구조를 개선하지 않으면 한계가 존재 2. 원인 - 단일 DB 구조의 한계읽기(SELECT)와 쓰기(INSERT, UPDATE, DELETE) 요청을 같은 DB에서 처리함으로써 트랜잭션 경쟁 발생읽기 트래픽(조회)이 과도할 경우, 쓰기 성능이 저하됨Redis 캐싱이 적용되더라도 DB 요청을 완전히 줄이지 못함 → 근본적인 읽기/쓰기 분리가 필요함CQRS(Command Query Resp..

TIL 2025.02.25

Redis 캐싱 전략

문제 정의데이터 조회 시 속도가 느려 서비스 성능 저하반복적으로 동일한 요청이 발생하여 서버 부하 증가불필요한 DB 트래픽으로 인해 성능 저하 및 운영 비용 상승 원인데이터베이스의 조회 시간이 길어지는 경우동일한 요청이 빈번하게 발생하지만 캐시를 활용하지 않는 경우트래픽이 급증하는 순간에도 모든 요청이 DB에 직접 접근하는 구조캐시 없이 매번 데이터를 연산하여 조회하는 구조 해결목표 설정불필요한 트래픽을 줄이고, 서버의 부하 감소빠른 처리성능(조회)을 확보하여 고객에게 더 나은 서비스경험을 제공TTL(Time To Live) 설정주요 캐싱 대상 선정 캐싱 전략을 사용하기 전 주의 사항"용도에 맞지 않는 정보나 서비스요청에 캐시를 남용하게 되면 서비스 신뢰도에 큰 문제가 생길 수 있는 위험성을 내포한다."..

TIL 2025.02.25

Spring Security6를 활용한 인증 인가

문제 정의기존 인증 방식(세션)의 문제점은 서버가 상태를 유지해야 하며, 세션 데이터를 관리하는 데 많은 자원을 소모하여, Spring Security 6과 JWT 방식을 사용하여 확장성 있고 안전한 인증/인가 시스템을 구축하고자 했습니다. 선택 가능한 기술 분석항목세션 기반 인증JWT 기반 인증상태 관리서버에서 상태 관리(Stateful)클라이언트에서 상태 관리(Stateless)확장성서버와 세션 간의 동기화 필요서버에 상태 저장 X보안세션 ID 탈취 시 하이재킹 위험, 세션 고정 공격 위험토큰 탈취 시 위험성능서버가 세션 정보를 관리하므로 부하 발생 가능서버 부하 LOW, 대규모 트래픽 처리에 유리유지 관리서버가 세션 정보를 저장하므로 서버가 다운되면 세션 손실서버가 상태를 저장하지 않으므로 서버 ..

TIL 2024.12.27

Burp Suite 인터셉터를 활용한 웹사이트 보안 테스트

문제 정의웹 애플리케이션에서 OWASP Top 10 보안 취약점 중 SQL Injection과 XSS 취약점을 사전에 분석하고 이를 해결함으로써 보안 수준을 강화하고, 보안 위협을 예방하며 문제 발생 시 효과적으로 대응할 수 있는 시스템을 구축했습니다. Burp Suite란?Burp Suite는 웹 애플리케이션의 보안을 테스트하는 종합적인 취약점 스캐너이자 프록시 도구입니다. 웹 프록시, 웹 스파이더, 스캐너, 인트루더 등 다양한 도구를 포함하고 있으며, SQL 인젝션, XSS 등 다양한 취약점을 식별하는 데 도움을 줍니다. 테스트1. XSS 테스트Burp Suite의 Interceptor를 활용하여 OWASP Top 10에 포함된 보안 취약점 중 SQL Injection과 XSS에 대한 분석을 진행했습..

TIL 2024.12.27

Spring AOP와 예외처리를 활용한 로그 쌓기

문제 정의문제 발생 시 신속한 대처를 위한 서버에 요청되는 로그 관리 시스템 구축 선택 가능한 기술 분석기술설명장점단점ELK Stack(Elasticsearch, Logstash, Kibana)로그 데이터를 수집, 저장, 시각화하는 오픈 소스 스택실시간 로그 모니터링, 강력한 검색 기능, 대규모 로그 분석복잡한 설정 및 운영Datadog클라우드 기반 로그 관리 및 모니터링 서비스클라우드 기반, 실시간 모니터링, 다양한 통합 및 알림 기능유료 서비스로 비용 발생, 데이터 처리 지연 가능성 O 기술 선택 및 구현위와 같은 좋은 기술들이 있지만, 프로젝트 기간 동안 다른 작업들과 병행해야 했고, 로그 관리 작업은 우선순위가 낮은 추가적인 작업이었습니다. 따라서 새로운 기술을 도입하기보다는 이미 보유한 기술..

TIL 2024.12.27