목록분류 전체보기 (77)
ballqs 님의 블로그

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는 자동으로 장애 조치를 할 수 있다. 노드가..

격리 수준이란?다른 트랜잭션과 어떻게 상호작용하는지 결정하는 정책 격리 수준 단계 READ_UNCOMMITTED (읽기 미확정)가장 낮은 격리 상태이며 트랜잭션이 아직 커밋되지 않은 데이터를 다른 트랜잭션에서 읽을 수 있다. 더티 리드(Dirty Read) 현상이 발생할 수 있습니다. 이는 한 트랜잭션이 아직 커밋되지 않은 데이터를 읽었을 때, 그 트랜잭션이 롤백되면 잘못된 데이터를 읽은 것이 된다. 트랜잭션 1SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;SET autocommit = 0;# TRANSACTION 시작START TRANSACTION;# 조회SELECT * from course;# UPDATEUPDATE course SET name=..

공부를 하다가 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은 별도의 스레드를 생성하고 해당 메서드를 실행합니다. 이때, 메서드는 호출 즉시 반환되며, 메서드의 실제 실행은 백그라운드 스레드에서 처..

GitHub Action란?Github Actions 는 Github에 내장된 CI/CD 도구Github에 내장되어 있는 CI/CD라 github와 통합이 쉽고 CI/CD 서버가 내장 되어 CI/CD서버를 따로 구축할 필요 없으며, 일정 수준까지 가격이 무료! ※무료 버전 : 스토리지 500MB, 월 2000분 Github Actions 동작 방법repository의 .github/workflows 디렉토리에 필요한 Actions 파일들을 yaml 형식으로 작성 CI란? test를 통과한 코드만 develop 브랜치와 main 브랜치에 merge되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견 사용 예제더보기# Actions 이름 github 페이지에서 볼 수 있다.name..

Docker Network란?Docker Network는 Docker Container끼리 서로 통신할 수 있게 도와주는 네트워크 핵심 개념네트워크 샌드박스: 각 컨테이너는 독립된 샌드박스 안에 존재하며, 외부의 직접적인 접근을 차단합니다. 이는 컨테이너를 안전하게 보호하는 역할을 합니다.엔드포인트: 샌드박스와 외부 네트워크를 연결하는 지점입니다. 컨테이너는 엔드포인트를 통해 다른 컨테이너나 외부 네트워크와 통신할 수 있습니다.네트워크: 여러 개의 엔드포인트를 연결하여 통신 경로를 형성합니다. 하나의 컨테이너는 여러 개의 네트워크에 연결될 수도 있습니다.주요 특징격리: 각 컨테이너는 다른 컨테이너로부터 격리되어 있어, 한 컨테이너에서 발생하는 문제가 다른 컨테이너에 영향을 미치는 것을 방지합니다.유연성:..

Docker 명령어들docker infoDocker 엔진과 구성 확인 Container 실행 테스트# nginx 이미지 다운받기docker image pull nginx:1.25.3-alpinedocker imagesdocker image history nginx:1.25.3-alpinedocker run -d -p 8001:80 --name webserver01 nginx:1.25.3-alpinedocker ps | grep webserver01docker port webserver01curl localhost:8001Docker Image 관한 명령어 docker pull Docker 이미지 내려받기 docker image inspectDocker 이미지 구조 확인docker image inspect..