목록코딩 공부/Spring (29)
ballqs 님의 블로그
부트캠프를 통해 다양한 기술들을 배우고 실습하며, 최종 프로젝트로 실시간 맛집 예약 서비스를 개발하게 되었습니다. 이 서비스는 최근 외식 수요 증가로 긴 대기시간이 대두되었고 음식점 앞에서 직접 기다리는 불편함을 줄이고, 실시간으로 남은 대기 순서를 확인할 수 있게 하여 요율적이고 편리한 외식 경험을 제공하자는 취지로 시작했습니다. 프로젝트의 핵심 기능 중 하나는 웨이팅 대기열 시스템입니다. 사용자가 음식점에 웨이팅을 걸면 발권번호를 받아서 대기 상태에 들어가며 음식점에서 이를 확인하고 입장할 수 있도록 돕는 시스템입니다. 그러나 초기 개발 단계에서 발권번호 중복 및 데이터 불일치 문제가 발생하면서 동시성 제어에 대한 고민이 시작되었습니다. 처음에는 단순하게 DB CRUD 방식으로 구현했으나 높은 트래픽..
이전에 Redisson내용으로 작성한 글이 있습니다.https://ballqs.tistory.com/68해당 글에는 동시성 제어하는 방법에 관해서만 작성했는데 Redisson도 RedisTemplate와 같이 사용이 가능하다는 점을 파악했고 둘의 차이점에 관해 작성하고자 합니다. RedisTemplate 장점간단한 사용법: Redis의 주요 명령어를 Java 메서드로 호출 가능.풍부한 자료구조 지원: String, Hash, List, Set, ZSet 등 다양한 Redis 자료구조를 다룰 수 있음.Spring과의 강력한 통합: Spring Cache, Spring Session 등과 쉽게 연계 가능.유연성: 커스터마이징을 통해 RedisSerializer 설정 등 다양한 방식으로 활용 가능.단점분산 ..
Spring Batch(Spring Batch)란?대용량 데이터 처리를 위해 설계된 오픈 소스 프레임워크입니다. 대규모 데이터 처리를 효율적으로 수행하고, 반복적으로 작업을 자동화할 수 있는 강력한 도구를 제공합니다. 데이터베이스에서 데이터를 읽고 처리한 후 다른 데이터베이스나 파일에 기록하는 등의 작업을 안정적이고 일괄적으로 수행할 수 있도록 지원합니다. 주요 개념Job: 스프링 배치에서 수행할 작업의 단위입니다.Step: Job의 구성 요소로, 실제로 수행할 작업을 정의합니다.ItemReader: 데이터 소스에서 데이터를 읽어오는 역할을 합니다.ItemProcessor: 읽어온 데이터를 처리하는 역할을 합니다.ItemWriter: 처리된 데이터를 저장하는 역할을 합니다. 메타 테이블 BATCH_JOB..
소나클라우드(SonaCloud)란?소나클라우드(SonaCloud)는 SonarQube와 관련된 클라우드 기반의 코드 품질 관리 플랫폼입니다. 소나클라우드를 사용하여 코드 품질을 분석하고, 버그 및 코드 스멜을 식별할 수 있습니다. SonaCloud 가입 및 로그인 SonarCloud Online Code Review as a Service ToolSonarCloud extends your CI/CD workflow with an online code review solution that easily integrates into your cloud DevOps platform, to provide code review as a service & deliver clean code consistently an..
Redis Cluster 란?데이터의 고가용성과 분산 처리를 위해 Redis가 제공하는 기능이다.이를 통해 여러 노드에 데이터를 분산 저장하고, 장애 발생 시 자동으로 복구하거나 재구성할 수 있는 클러스터 환경을 제공한다. Redis Cluster 특징데이터 샤딩 (Sharding)Redis Cluster는 데이터를 여러 노드에 분산해서 저정하는 방식이다. 전체 키 공간을 16,384개의 슬롯(Slot)으로 나누고, 각 노드가 이 슬롯 중 일부를 담당한다. 키는 해시 함수에 의해 슬롯 중 하나에 매핑되고, 해당 슬롯을 가진 노드에 저장된다. 이를 통해 여러 노드에 데이터를 분산할 수 있다. 고가용성 (High Availability) Redis Cluster는 자동으로 장애 조치를 할 수 있다. 노드가..
공부를 하다가 Redis로 동시성 문제 라는 키워드를 알게되서 궁금해서 공부를 하게 되었다.그러면 Redisson이 뭔지? 이에 대해 알아보자.Redisson이란?Redisson은 Redis를 위한 Java 클라이언트 라이브러리로, Redis의 기능을 보다 직관적으로 사용할 수 있도록 돕는다. 분산 객체, 분산 잠금, 비동기 API 등을 제공하며, 이를 통해 개발자는 복잡한 분산 시스템을 손쉽게 구현할 수 있다. Redisson의 주요 특징 분산 객체 RMap: 키-값 쌍을 저장할 수 있는 객체로, Java의 Map과 유사하게 동작한다.RSet: 중복을 허용하지 않는 집합 구조로, Java의 Set과 유사하다.RQueue: 큐 구조로, FIFO 방식으로 데이터를 저장하고 처리할 수 있다. 분산 잠금 ..
Redis를 이래저래 공부를 해보았다가 다시 글을 쓰는건 오랜만인듯 하다.무려... kafka , RabbitMQ 등을 공부하다가 Redis에도 Message Queue 라는 통신 방법이 있다는 것을 알고 검색해서 따라 해보았다.이전 Redis 작성글 : https://ballqs.tistory.com/49 Message Queue란 무엇인가? Message Queue는 애플리케이션 간 비동기 통신을 지원하는 시스템입니다. 보통 두 애플리케이션 사이에서 메시지를 보내고 받는 역할을 하며, 발신자는 메시지를 큐에 보내고 수신자는 이 큐에서 메시지를 가져가 처리합니다. 메시지 큐는 데이터를 임시로 저장하는 방식으로, 발신자와 수신자가 동시에 통신할 필요 없이 작업을 처리할 수 있게 해줍니다. Message..
Spring Boot의 @Async 이해 및 활용@Async는 Spring에서 비동기 작업을 처리하는 기능을 제공하는 어노테이션입니다. 이 어노테이션을 메서드에 적용하면, 해당 메서드는 별도의 스레드에서 비동기적으로 실행됩니다. 이를 통해 메인 스레드의 작업이 차단되지 않으면서 동시에 다른 작업을 처리할 수 있어 애플리케이션의 성능과 응답성을 높일 수 있습니다.@Async 동작 원리Spring에서 @Async는 AOP(Aspect-Oriented Programming)와 스레드 풀을 활용하여 비동기 처리를 구현합니다. @Async가 붙은 메서드를 호출하면, Spring은 별도의 스레드를 생성하고 해당 메서드를 실행합니다. 이때, 메서드는 호출 즉시 반환되며, 메서드의 실제 실행은 백그라운드 스레드에서 처..
JpaRepository 쿼리 사용 방법리턴타입 {접두어}{도입부}By{프로퍼티 표현식}(조건식)[(And|Or){프로퍼티 표현식}(조건식)](OrderBy{프로퍼티}Asc|Desc) (매개변수...)접두어Find, Count, ...도입부Distinct, First(N), Top(N)프로퍼티 표현식Person.Address.ZipCode => find(Person)ByAddress_ZipCode(...)조건식IgnoreCase, Between, LessThan, GreaterThan, Like, Contains, ...정렬 조건OrderBy{프로퍼티}Asc|Desc리턴 타입E, Optional, List, Page, Slice, Stream매개변수Pageable, Sort 쿼리 실습 코드// 기본Lis..
JPA 테이블 매핑 기능 @Entity객체 관점에서의 이름디폴트로 클래스명으로 설정됨엔티티의 이름은 JQL에서 쓰임JQL : Entity 명으로 쿼리짤때 쓰이는 언어 (ex. JPQL, QueryDsl)@TableRDB 의 테이블 이름@Entity의 이름이 테이블의 기본값주로 Entity 이름과 다르게 Table 명을 지정하고 싶을때 아래와 같이 사용@Entity@Table(name = "users")public class User () {...}테이블의 이름은 SQL에서 쓰임SQL : Table 명으로 쿼리짤때 쓰이는 언어 (ex. JDBC, SQL Mapper)@Id엔티티의 주키를 맵핑할 때 사용자바의 모든 primitive 타입과 그 랩퍼 타입을 사용할 수 있음Date랑 BigDecimal, Big..