목록전체 글 (75)
ballqs 님의 블로그
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..
Docker Compose 란?여러 개의 Docker Container를 하나의 서비스로 정의하고 구성하며 관리할 수 있게 하는 것 Docker Compose를 사용하는 이유는?편하게 설정하기 : 여러 컨테이너를 한 파일에 적어서 설정자동으로 배포 : Docker Compose가 컨테이너들을 알아서 만들어 줌의존성 관리 : 컨테이너들간 서로 의존관계가 있다면 관리 해줌모니터링과 로깅 : 컨테이너의 현 상황을 모니터링하여 보여주며 로그까지 남김확장성 : 여러 컨테이너를 하나의 그룹으로 관리유연성 : 개발 환경,테스트 환경,실제 운영 환경에서도 같은 설정 파일을 쓰기 가능보안 강화 : 네트워크를 분리하여 외부로부터 접근을 제한유지보수 용이 : 설정 파일 하나로 컨테이너를 관리하기에 바꿀 일 있으면 파일 수정..
Dockerfile 이란?이미지를 생성하기 위한 용도로 작성하는 파일이다. 이 파일을 통해 Docker에 사용할 Image를 생성한다.Dockerfile 사용방법Dockerfile 기본적인 틀# DockerfileFROM ubuntu:latestMAINTAINER Your Name RUN apt-get update && apt-get install -y nginxCOPY index.html /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]FROM: 베이스 이미지를 선택MAINTAINER: 이미지를 만든 사람의 정보를 입력RUN: 이미지에 명령을 실행하여 파일을 추가하거나 삭제COPY: 파일을 이미지에 복사EXPOSE: 컨테이너가 노출할 포..