태그

MySQL

[Git Ranker #4] 순위 및 티어 계산 기능 구현

6 분 소요

가입 직후에는 COUNT 쿼리로 즉시 순위를 계산하고, 전체 분포는 MySQL Window Function과 Spring Batch Tasklet으로 다시 맞췄다. 서비스 초기의 ‘1등인데도 낮은 티어’ 문제를 하이브리드 티어 규칙으로 정리한 구현 기록

JPA와 MySQL로 구현한 동시성 제어

8 분 소요

Redis 대신 JPA의 Pessimistic Lock과 MySQL을 활용하여 좋아요 기능의 동시성 문제를 해결하고, 시스템 복잡도를 줄이면서 데이터 정합성을 보장한 과정을 다룹니다.

SQL 튜닝을 통한 API 성능 최적화 (1편)

9 분 소요

100만 개 데이터 환경에서 6.57초 걸리던 API를 409ms로 단축시킨 SQL 튜닝 과정입니다. 인덱스 설계 전략, 복합 인덱스 활용, JOIN 최적화를 통해 94% 성능 향상을 달성했습니다.

맨 위로 이동 ↑

GitHub API

[Git Ranker #6] GitHub Search API에서 GraphQL로 전환

9 분 소요

Search API의 호출 수와 리뷰 데이터 한계를 넘기 위해 Git Ranker가 GraphQL 기반 연도별 병렬 조회 구조로 바뀐 과정과, 현재 구현이 1년 제약·동적 응답·비용 관리를 어떻게 다루는지 정리한다.

맨 위로 이동 ↑

Spring Boot

맨 위로 이동 ↑

Spring Batch

[Git Ranker #4] 순위 및 티어 계산 기능 구현

6 분 소요

가입 직후에는 COUNT 쿼리로 즉시 순위를 계산하고, 전체 분포는 MySQL Window Function과 Spring Batch Tasklet으로 다시 맞췄다. 서비스 초기의 ‘1등인데도 낮은 티어’ 문제를 하이브리드 티어 규칙으로 정리한 구현 기록

맨 위로 이동 ↑

JPA

JPA와 MySQL로 구현한 동시성 제어

8 분 소요

Redis 대신 JPA의 Pessimistic Lock과 MySQL을 활용하여 좋아요 기능의 동시성 문제를 해결하고, 시스템 복잡도를 줄이면서 데이터 정합성을 보장한 과정을 다룹니다.

맨 위로 이동 ↑

System Design

맨 위로 이동 ↑

Architecture

[Git Ranker #6] GitHub Search API에서 GraphQL로 전환

9 분 소요

Search API의 호출 수와 리뷰 데이터 한계를 넘기 위해 Git Ranker가 GraphQL 기반 연도별 병렬 조회 구조로 바뀐 과정과, 현재 구현이 1년 제약·동적 응답·비용 관리를 어떻게 다루는지 정리한다.

[Git Ranker #4] 순위 및 티어 계산 기능 구현

6 분 소요

가입 직후에는 COUNT 쿼리로 즉시 순위를 계산하고, 전체 분포는 MySQL Window Function과 Spring Batch Tasklet으로 다시 맞췄다. 서비스 초기의 ‘1등인데도 낮은 티어’ 문제를 하이브리드 티어 규칙으로 정리한 구현 기록

맨 위로 이동 ↑

SQL 튜닝

SQL 튜닝을 통한 API 성능 최적화 (1편)

9 분 소요

100만 개 데이터 환경에서 6.57초 걸리던 API를 409ms로 단축시킨 SQL 튜닝 과정입니다. 인덱스 설계 전략, 복합 인덱스 활용, JOIN 최적화를 통해 94% 성능 향상을 달성했습니다.

맨 위로 이동 ↑

API 성능 최적화

SQL 튜닝을 통한 API 성능 최적화 (1편)

9 분 소요

100만 개 데이터 환경에서 6.57초 걸리던 API를 409ms로 단축시킨 SQL 튜닝 과정입니다. 인덱스 설계 전략, 복합 인덱스 활용, JOIN 최적화를 통해 94% 성능 향상을 달성했습니다.

맨 위로 이동 ↑

인덱스

SQL 튜닝을 통한 API 성능 최적화 (1편)

9 분 소요

100만 개 데이터 환경에서 6.57초 걸리던 API를 409ms로 단축시킨 SQL 튜닝 과정입니다. 인덱스 설계 전략, 복합 인덱스 활용, JOIN 최적화를 통해 94% 성능 향상을 달성했습니다.

맨 위로 이동 ↑

동시성 제어

JPA와 MySQL로 구현한 동시성 제어

8 분 소요

Redis 대신 JPA의 Pessimistic Lock과 MySQL을 활용하여 좋아요 기능의 동시성 문제를 해결하고, 시스템 복잡도를 줄이면서 데이터 정합성을 보장한 과정을 다룹니다.

맨 위로 이동 ↑

Pessimistic Lock

JPA와 MySQL로 구현한 동시성 제어

8 분 소요

Redis 대신 JPA의 Pessimistic Lock과 MySQL을 활용하여 좋아요 기능의 동시성 문제를 해결하고, 시스템 복잡도를 줄이면서 데이터 정합성을 보장한 과정을 다룹니다.

맨 위로 이동 ↑

JWT

맨 위로 이동 ↑

Observability

맨 위로 이동 ↑

GraphQL

[Git Ranker #6] GitHub Search API에서 GraphQL로 전환

9 분 소요

Search API의 호출 수와 리뷰 데이터 한계를 넘기 위해 Git Ranker가 GraphQL 기반 연도별 병렬 조회 구조로 바뀐 과정과, 현재 구현이 1년 제약·동적 응답·비용 관리를 어떻게 다루는지 정리한다.

맨 위로 이동 ↑

SSH

맨 위로 이동 ↑

Security

맨 위로 이동 ↑

Ubuntu

맨 위로 이동 ↑

Linux

맨 위로 이동 ↑

DNS

맨 위로 이동 ↑

DDNS

맨 위로 이동 ↑

Nginx

맨 위로 이동 ↑

HTTPS

맨 위로 이동 ↑

Certbot

맨 위로 이동 ↑

AI

맨 위로 이동 ↑

Backend

맨 위로 이동 ↑

N+1 문제

맨 위로 이동 ↑

쿼리 최적화

맨 위로 이동 ↑

Spring Data JPA

맨 위로 이동 ↑

성능 최적화

맨 위로 이동 ↑

Spring

맨 위로 이동 ↑

토큰 처리

맨 위로 이동 ↑

인증 시스템

맨 위로 이동 ↑

DDD

맨 위로 이동 ↑

멀티 모듈

맨 위로 이동 ↑

헥사고날 아키텍처

맨 위로 이동 ↑

포트-어댑터 패턴

맨 위로 이동 ↑

도메인 모델

맨 위로 이동 ↑

시스템 아키텍처

맨 위로 이동 ↑

Redis Stream

맨 위로 이동 ↑

비동기 처리

맨 위로 이동 ↑

메시징 시스템

맨 위로 이동 ↑

선착순 이벤트

맨 위로 이동 ↑

Java

맨 위로 이동 ↑

알고리즘

맨 위로 이동 ↑

자료구조

맨 위로 이동 ↑

코딩테스트

맨 위로 이동 ↑

Ranking

[Git Ranker #4] 순위 및 티어 계산 기능 구현

6 분 소요

가입 직후에는 COUNT 쿼리로 즉시 순위를 계산하고, 전체 분포는 MySQL Window Function과 Spring Batch Tasklet으로 다시 맞췄다. 서비스 초기의 ‘1등인데도 낮은 티어’ 문제를 하이브리드 티어 규칙으로 정리한 구현 기록

맨 위로 이동 ↑

Ed25519

맨 위로 이동 ↑

Fail2ban

맨 위로 이동 ↑

Firewall

맨 위로 이동 ↑

Reverse Proxy

맨 위로 이동 ↑

Logging

맨 위로 이동 ↑

GitHub Camo

맨 위로 이동 ↑

HTTP Cache

맨 위로 이동 ↑

Cache-Control

맨 위로 이동 ↑

GitHub OAuth

맨 위로 이동 ↑

Spring Security

맨 위로 이동 ↑

Token Pool

맨 위로 이동 ↑

Rate Limit

맨 위로 이동 ↑

I18n

맨 위로 이동 ↑

MessageSource

맨 위로 이동 ↑

Accept-Language

맨 위로 이동 ↑

Harness Engineering

맨 위로 이동 ↑

Git Ranker

맨 위로 이동 ↑

Workflow

맨 위로 이동 ↑