Spring
인 메모리가 빠른데 어떻게 활용해야하나요
2026.03.14
Topic (오늘의 주제)Redis(Remote Dictionary Server) 는 인메모리(In-Memory) 에 데이터를 저장하는 키-값(Key-Value) 저장소이다. 디스크 I/O 없이 메모리에서만 동작해 응답 속도가 매우 빠르며, 캐시, 세션 스토어, 실시간 랭킹, 메시지 브로커 등 다양한 용도로 쓰인다.Why (왜 사용하는가? 왜 중요한가?)문제점: DB(MySQL, PostgreSQL 등)는 디스크 기반이라 조회·갱신이 상대적으로 느리고, 트래픽이 몰리면 DB 부하와 응답 지연이 발생한다. 세션을 애플리케이션 메모리에만 두면 서버를 여러 대 쓰는 환경에서 공유가 어렵다.해결책: 자주 쓰는 데이터를 Redis에 두어 캐시로 활용하면 DB 부하를 줄이고 응답 속도를 높일 수 있다. 세션을 Re..
Spring
Spring_30) 관점에 따라 다르게... 보이지만은 않을수도
2026.02.23
Topic (오늘의 주제)AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍) 는 핵심 비즈니스 로직과 애플리케이션 전반에 걸쳐 반복되는 횡단 관심사(부가 기능) 를 분리하여 모듈화하는 프로그래밍 기법이다. Spring AOP는 프록시(Proxy) 패턴을 활용해 런타임에 부가 기능을 적용하며, @Transactional, 로깅, 권한 검사 등이 이 방식으로 동작한다.Why (왜 사용하는가? 왜 중요한가?)문제점: 로깅, 권한 검사, 성능 측정(시간 측정) 같은 코드가 여러 서비스·컨트롤러에 반복되면 비즈니스 로직과 섞여 가독성과 유지보수가 어려워진다.해결책: 핵심 로직과 부가 기능(횡단 관심사)을 분리해, 한 곳에서 부가 기능을 정의하고 필요한 메서드에만 적용할 수 있게 한다..
SQL
SQL_24) 동시라는 것은 SQL에 좋지 않다.
2026.01.30
Topic (오늘의 주제)데이터베이스 동시성 이슈(Concurrency Issues)는 여러 트랜잭션이 동시에 같은 데이터에 접근할 때 발생하는 문제입니다. Lost Update, Dirty Read, Non-Repeatable Read, Phantom Read 등의 문제가 발생할 수 있으며, 이를 해결하기 위해 락(Lock) 메커니즘과 격리 수준(Isolation Level)을 사용합니다. 동시성과 데이터 일관성 사이의 트레이드오프를 이해하고 적절한 격리 수준을 선택하는 것이 중요합니다.Why (왜 사용하는가? 왜 중요한가?)현대의 데이터베이스는 여러 사용자가 동시에 접근하는 환경입니다. 여러 트랜잭션이 동시에 같은 데이터를 읽거나 수정할 때, 적절한 제어가 없으면 데이터의 일관성이 깨지고 잘못된 결과..
SQL
SQL_23) index 넌 못지 나간다.
2026.01.28
Topic (오늘의 주제)트랜잭션(Transaction)과 인덱스(Index)는 데이터베이스에서 서로 밀접한 관계를 가집니다. 트랜잭션이 데이터를 변경할 때 인덱스도 함께 업데이트되어야 하며, 인덱스의 존재는 트랜잭션의 성능과 일관성에 직접적인 영향을 미칩니다. 트랜잭션의 ACID 속성을 보장하면서 인덱스를 효율적으로 관리하는 것이 데이터베이스 성능 최적화의 핵심입니다.Why (왜 사용하는가? 왜 중요한가?)트랜잭션이 데이터를 INSERT, UPDATE, DELETE할 때마다 해당 컬럼에 인덱스가 있다면 인덱스도 함께 업데이트되어야 합니다. 이 과정에서 인덱스의 정렬 상태를 유지하기 위한 추가 작업이 발생하며, 트랜잭션의 성능과 일관성에 영향을 줍니다.인덱스는 트랜잭션의 격리성(Isolation)과 밀접..
SQL
SQL_22) 건초더미에서 바늘 찾기 싫다면 인덱스를 쓰세요
2026.01.28
인덱스(Index)인덱스(Index) 는 데이터 검색 속도를 높이기 위해 별도로 관리하는 자료구조입니다. 일반적으로 B-Tree 구조를 사용하며, 컬럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 저장합니다. 인덱스가 있으면 테이블 전체를 읽는 'Full Table Scan' 대신 특정 범위만 탐색하는 'Index Scan'이 가능해져 SELECT 성능이 비약적으로 향상됩니다.Why (왜 사용하는가? 왜 중요한가?)인덱스 없이는 대용량 테이블에서 데이터를 검색할 때 전체 테이블을 스캔해야 하므로 성능이 크게 저하됩니다. 1억 개의 데이터가 섞여 있을 때 특정 값을 찾는 것은 '모래사장에서 바늘 찾기'와 같지만, 인덱스를 통해 미리 정렬해두면 업다운 게임처럼 빠르게 찾을 수 있습니다.인덱스는 항상..