#cache
#circuit-breaker
#resilience4j
#caffeine
#performance 캐시 만료 직후 같은 키의 요청이 외부 API로 몰리면서 Resilience4j 서킷 브레이커가 HALF_OPEN 상태에 갇힌 사례를 정리하고, Caffeine의 single-flight 패턴으로 해결한 과정을 다룹니다.
#system-design
#aws
#nginx
#resilience4j
#bulkhead
#circuit-breaker
#traffic
#rate-limiting 평시 대비 15~30배 트래픽이 몰리는 선착순 이벤트에서 ALB LCU 예약, nginx 커넥션 한계, WAS 스레드 풀, Bulkhead/CircuitBreaker 연동, 봇 차단까지 운영 전에 확인할 항목을 정리합니다.
#database
#redis
#concurrency
#read-replica
#distributed-lock Read Replica 환경에서 Replication Lag 때문에 생기는 동시성 문제를 살펴보고, Writer 재조회, 분산 락, SETNX, 캐시 조합을 트래픽 규모에 따라 어떻게 선택할지 정리합니다.
#spring-boot
#jackson
#troubleshooting
#annotation Spring Boot 4의 Jackson 3와 의존성 라이브러리의 Jackson 2.x가 클래스패스에 함께 있을 때, @JsonNaming 같은 일부 어노테이션이 컴파일은 되지만 런타임에 무시되는 이유를 정리합니다.
#java
#javascript
#url-encoding
#uri
#spring URI 표준(RFC 2396 vs RFC 3986)의 차이, Java URLEncoder와 JavaScript encodeURIComponent의 인코딩 방식, Spring UriComponentsBuilder 사용 시 생기는 문제를 정리합니다.
#ddd
#architecture
#hexagonal-architecture
#domain-driven-design
#kotlin 복잡한 비즈니스 로직을 가진 애플리케이션에서 Domain-Driven Design과 Hexagonal Architecture를 어떻게 나눠 적용할지 정리합니다. Aggregate 설계 원칙, Bounded Context, 패키지 구조를 함께 다룹니다.
#api-design
#performance
#spring-boot
#kotlin
#pattern GraphQL까지 도입하기에는 부담스러울 때, REST API 구조를 유지하면서 오버페칭을 줄이는 Sparse Fieldsets(Field Mask) 패턴을 정리합니다. 개념, 적용 기준, Spring Boot 구현 예제를 함께 다룹니다.
#data-engineering
#architecture
#best-practices
#guide
#lakehouse 데이터 기술을 고를 때 확인해야 할 지연 시간, 데이터 변경 여부, 동시성 기준을 정리하고 Flink, Spark, Iceberg 같은 도구가 어떤 상황에 맞는지 살펴봅니다.
#redis
#spring
#spring-data-redis
#performance Spring Data Redis의 @RedisHash와 CrudRepository를 사용할 때 내부 인덱스용 Set 때문에 BigKey가 생길 수 있습니다. 원인과 위험성을 살펴보고 RedisTemplate으로 저장 방식을 직접 제어하는 방법을 정리합니다.
#security
#architecture
#api
#mitm 클라이언트 API 통신에서 발생하는 중간자(MITM) 공격 시나리오를 살펴보고, Signature 검증과 SSL Pinning의 한계, 민감한 로직을 서버(S2S)로 옮기는 접근을 정리합니다.
#database
#mysql
#index
#performance MySQL 다중 컬럼 인덱스에서 컬럼 순서가 왜 중요한지, 범위 조건(>, <, BETWEEN, LIKE)이 인덱스 사용에 어떤 영향을 주는지 예제로 정리합니다.
#troubleshooting
#csv
#backend
#frontend CSV 다운로드 기능을 만들 때 자주 겪는 엑셀 한글 깨짐, 프론트엔드 API 호출 시 파일 손상, 특수 문자로 인한 형식 오류의 원인과 해결 방법을 정리합니다.
#kotlin
#kotest
#fleet
#testing JetBrains Fleet에서 Kotest 테스트를 실행하기 위해 Gradle과 Fleet Run Configuration을 설정하는 방법을 정리합니다.
#kotlin
#jackson
#spring
#deserialization Kotlin 데이터 클래스와 Jackson을 함께 사용할 때 JSON에서 non-null 원시 타입(Long, Int) 필드가 누락되면 예외 대신 0이 들어갈 수 있습니다. 원인과 해결 방법을 정리합니다.
#kotlin
#hibernate
#jpa
#bug Kotlin 엔티티에서 프로퍼티와 같은 이름의 커스텀 Getter를 정의했을 때 Hibernate Proxy의 리플렉션 동작과 충돌하며 NullPointerException이 발생한 사례를 정리합니다.
(Modified:
2024-12-29)
#kotlin
#ktlint
#editorconfig
#code-style Ktlint 규칙을 프로젝트에 맞게 조정하는 방법을 정리합니다. .editorconfig로 코드 스타일을 바꾸고, 특정 규칙을 비활성화하고, 규칙 ID를 찾는 방법을 다룹니다.
(Modified:
2024-12-29)
#kafka
#kafka-connect
#s3
#data-pipeline Kafka S3 Sink Connector의 rotate.interval.ms와 rotate.schedule.interval.ms가 어떤 기준으로 파일을 닫고 업로드하는지 비교합니다. 레코드 타임스탬프 기반 로테이션과 시스템 시간 기반 로테이션의 차이를 정리합니다.
(Modified:
2024-12-26)
#redis
#database
#performance Redis에서 키를 삭제할 때 DEL과 UNLINK가 어떻게 다르게 동작하는지, 큰 키 삭제가 지연 시간에 어떤 영향을 주는지, lazyfree-lazy-user-del 설정은 언제 쓸 수 있는지 정리합니다.
(Modified:
2024-12-29)
#java
#jvm
#performance JIT(Just-In-Time) 컴파일러가 자바 바이트코드를 어떻게 최적화하는지, 계층적 컴파일(Tiered Compilation)은 어떻게 동작하는지 예제와 함께 정리합니다.
(Modified:
2024-12-30)
#aws
#sqs
#architecture
#messaging AWS SQS의 표준(Standard) 큐와 FIFO(First-In-First-Out) 큐가 처리량, 메시지 순서, 전달 보장 수준에서 어떻게 다른지 비교합니다.
(Modified:
2024-12-29)
#software engineering
#architecture
#metrics 로버트 C. 마틴이 제시한 아키텍처 품질 지표인 ‘메인 시퀀스로부터의 거리’를 정리합니다. 추상도(Abstractness)와 불안정도(Instability)를 함께 보며 모듈의 균형 상태를 평가하는 방법을 설명합니다.
(Modified:
2024-12-29)
#software engineering
#architecture
#code quality 응집도(Cohesion)의 7가지 유형을 예시와 함께 정리하고, 클래스 응집도를 정량적으로 살펴볼 때 쓰는 LCOM 메트릭을 소개합니다.
(Modified:
2024-12-29)
#architecture
#scalability
#performance
#system design 확장성을 이야기할 때 먼저 정의해야 할 부하 매개변수와 성능 지표를 정리합니다. 평균 응답 시간의 한계, 백분위, 꼬리 지연 시간이 왜 중요한지도 함께 다룹니다.
(Modified:
2024-12-29)
#kotlin
#performance
#collections Kotlin 컬렉션 처리에서 Iterable과 Sequence가 즉시 평가(Eager)와 지연 평가(Lazy)로 어떻게 다르게 동작하는지 예제로 비교합니다.
#java
#http
#java11
#concurrency Java 11에서 표준으로 채택된 HTTP Client API(JEP 321)의 기본 구성요소와 동기/비동기 요청 처리 방법을 예제와 함께 정리합니다.
#java
#formatting
#decimalformat Java의 DecimalFormat 클래스로 숫자를 원하는 형식의 문자열로 만드는 방법을 정리합니다. 주요 패턴 문자, 소수점 처리, 그룹핑, 지역화, 스레드 안전성 문제를 함께 다룹니다.
#development
#oauth
#security OAuth 2.0에서 Resource Owner, Client, Authorization Server, Resource Server가 어떤 역할을 하는지 정리하고, 인가 코드 승인 흐름을 단계별로 설명합니다.
#java
#datetime
#java8 Java 8의 java.time.format.DateTimeFormatter를 사용해 날짜와 시간을 포매팅하고 파싱하는 방법을 정리합니다. SimpleDateFormat과 달리 스레드에 안전하다는 점도 함께 다룹니다.
(Modified:
2024-12-29)
#database
#transaction
#concurrency 트랜잭션 격리 수준이 동시성과 데이터 일관성 사이에서 어떤 트레이드오프를 만드는지 정리합니다. Dirty Read, Non-Repeatable Read, Phantom Read와 4가지 격리 수준을 함께 설명합니다.
(Modified:
2024-12-29)
#data structure
#algorithm
#graph 서로소 집합(Disjoint Set)을 관리하는 Union-Find 자료구조를 정리합니다. Find와 Union 연산, 경로 압축(Path Compression), 랭크 기반 합치기(Union by Rank)를 예제로 설명합니다.