springboot 3

[Backend] Elasticsearch

데이터의 바다에서엄청나게 방대한 유저 정보와 같은 데이터가 있다고 해보자,여기서 "Kim" 이라는 이름으로 시작하는 모든 데이터를 RDB에서 조회하려면 모든 행을 검사하며 "Kim"이 포함되어 있는지를 확인해야한다.이런 작업은 막대한 부하를 줄 수 있고 데이터가 많아질수록 비효율적으로 변한다.일래스틱...서치?오픈소스 검색,분석엔진으로 대량의 데이터를 저장하고 분석하고 조회하는데 특화되있다.RESTful API를 통해 동작하며 대규모 데이터 처리에 특화되어 다양한 설정과 데이터 조작을 제공한다.역색인 구조책에서 무언갈 찾을 때 우린 책 맨 뒷장을 펼쳐 색인을 뒤져본다.예를 들어 위 이미지에서 "Cat"을 찾으려면 1,3,6을 조회하면 되는 것이다.이처럼 키워드를 통하여 찾아내는 방식을 역색인 구조라 한다..

Backend 2024.12.23

[Backend] Redisson Pub/Sub 기반 분산 락

동시성 문제(Concurrency Issue), 그리고 분산 락(Distributed Lock)동일한 리소스에 여러 쓰레드가 동시에 접근하면 '동시성 문제'가 발생한다.'동시성 문제'란 예를 들어 하나의 쓰레드가 리소스를 수정하던 상황에서 다른 쓰레드가 수정 전의 리소스를 조회함으로서 서로 다른 리소스를 얻어가는 문제를 말한다.이러한 문제를 해결하는 데에는 여러 해결책이 있는데 그중 하나로  Java에서 사용되는 Redis 클라이언트인 Redisson를 사용하는 분산 락 방법에 대해 알아보겠다.Lettuce 기반 스핀 락(Spin Lock)?Spring Boot 2.0부터는 Netty 기반의 Lettuce가 Redis 기본 클라이언트로 사용됬다. Lettuce를 이용한 락 구현 시, 락을 획득하지 못한 ..

Backend 2024.11.30

[Backend] GraphQL

GraphQL 개요GraphQL의 주요 특징단일 엔드포인트로의 유연한 접근GraphQL은 단일 엔드포인트(/graphql)를 통해 모든 데이터 요청을 처리한다. REST API처럼 여러 엔드포인트를 관리해야 하는 복잡성을 줄이고, 클라이언트가 특정 데이터에 대한 요청을 자유롭게 구성할 수 있다.필요한 데이터만 요청 가능GraphQL은 클라이언트가 필요한 데이터만 요청하도록 설계되었다. 불필요한 데이터를 전송받을 필요 없이 원하는 필드를 명시적으로 요청할 수 있어 네트워크 사용을 효율화할 수 있다.타입 시스템을 통한 데이터 일관성 보장GraphQL 스키마는 데이터의 구조와 타입을 명확하게 정의한다. 이를 통해 개발자는 API가 어떤 데이터를 주고받는지 쉽게 이해할 수 있으며, 런타임 오류를 줄일 수 있다...

Backend 2024.11.25
반응형