본문 바로가기

728x90
반응형

전체 글

(85)
[Lettuce] LettuceConnectionFactory connection timeout deprecated Spring Data Redis 1.5.2.RELEASE 버전의 LettuceConnectionFactory 에서 사용되던 setTimeout이 2.6.1 버전으로 업그레이드되면서 deprecated 되었습니다. https://docs.spring.io/spring-data/redis/docs/1.5.2.RELEASE/api/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.html 위의 공식 문서를 참고하여 기존 timeout이 connection timeout인 점을 고려하여 SocketTimeout으로 socket connection timeout을 지정하여 값을 셋팅해줬지만 그럴 필요 없이 1.5.2 버전의 con..
[Redis] Redis standalone vs sentinel vs cluster Redis 기본 개념 DB보다 데이터를 빠르게 처리하기 위해서 사용되는 인메모리 저장소로, 싱글스레드로 모든 작업을 처리한다는 특징을 가지고 있습니다. 레디스는 다음과 같이 크게 3가지 형태를 제공하고 있습니다. Standalone 하나의 인스턴스만 사용해 Redis를 구성하는 방식입니다. 셋 중에서 가장 심플하고 단순하지만, 인스턴스에 장애가 생기면 대체할 수 있는 다른 인스턴스가 없기때문에 HA(High availibilty) 보장 되지 않습니다. 싱글스레드로 작업이 처리되기 때문에 병목 현상이 생길 확률 높습니다. Sentinel Master/Slave replication이 지원됩니다. Sentinel이 redis를 모니터링하고 있습니다. 따라서 Master에서 장애가 생겨서 내려가면 Sentin..
[데이터베이스] MySQL Replication Database Replication 하나의 DB만 사용하지 않고 주 Database를 다른 Database에 복제하는 방법입니다. 물론 DB 를 구성할 때 하나의 DB 로도 구성할 수 있지만, 안정성을 위해 여러개의 DB 를 두어 운용을 하는 경우가 많습니다. 이 때 역할에 따라 주 Database 를 Master DB(source), 복제해가는 Database를 Slave DB(replica)라고 부릅니다. 역할에 따라서 진행되는 replication 이라는 작업을 통해 DB 가 장애와 같은 상황에서 더 안정적으로 동작하도록 해줍니다. Master 와 Slave 의 역할 Master 다른 노드(Slave)에 데이터를 복제해주는 쪽으로, 일반적으로 읽기 외에 insert, update 와 같이 데이터가..
[Tech] RabbitMQ와 Kafka의 차이? 메시지 브로커와 이벤트 스트리밍 플랫폼 아래 글을 참고하여 작성하였습니다. 더보기 https://www.koyeb.com/blog/rabbitmq-vs-apache-kafka-comparing-message-brokers-and-modern-event-streaming-platforms https://www.instaclustr.com/blog/rabbitmq-vs-kafka/ 어플리케이션과 시스템, 서비스가 점점 발전하고 규모가 커지게 되면서 서로가 통신하고 데이터를 교환하기 위한 방법이 필요해지게 되었습니다. 따라서 우리는 이 필요한 데이터를 담은 "메세지"라는 것을 한쪽에서 생성(produce)하면, 이것을 다른 쪽에서 소비(consume)하는 구조를 사용하게 되는데요. 이 때에 RabbitMQ와 Kafka가 그 역할을 하게 됩니다. 실..
[Tech] 캐시 서버와 캐싱 전략 해당 글은 아래의 내용을 참고하여 작성하였습니다. 더보기 https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Strategies.html 캐시 서버란? 요청에 대한 응답을 더 빠르게 하기 위해서 우리는 "캐시"라는 것을 종종 사용합니다. 특히 컴퓨터에서 자주 읽거나 방금 전에 읽은 데이터를 캐시에 저장하곤 하죠. 이러한 캐시를 통해 우리는 상대적으로 데이터를 찾아 가져오는 것이 느린 디스크를 거치지 않고도 데이터를 가져올 수 있게 됩니다. 이러한 캐시의 개념은 서버에도 도입되어있는데요, 흔히 말하는 "캐시 서버"가 바로 그 용도입니다. 흔하게 웹서비스는 클라이언트가 요청을 하면, 웹서비스가 이것을 받고, DB에서 필요한 데이터를 가져와 응답하는 구조..
[데이터베이스] SQL 튜닝 - 드라이빙 테이블 데이터베이스를 통해 데이터를 가져올 때 테이블의 엑세스 순서에 따라서 성능이 좌지우지 되는 경우가 있습니다. 특히 데이터가 많은 경우에는 이러한 성능을 개선해주는 튜닝이 중요해지게 됩니다. 이번 글에서는 이 DB튜닝에서 사용되는 드라이빙 테이블에 대해서 알아보겠습니다. 드라이빙 테이블이란 드라이빙 테이블은 join시에 먼저 엑세스 되는 테이블을 의미합니다. 반대로 나중에 엑세스되는 테이블은 드리븐 테이블, 혹은 이너 테이블이라고 합니다. 이 때 드라이빙 테이블이 될 것인지, 즉 어떤 테이블을 먼저 엑세스 할 것인지가 중요합니다. 예시로 아래의 상황을 들 수 있습니다. 만약 찾고자 하는 조건에 맞는 행이 A테이블에 5000만건, B테이블에 1000만건이 있을 때 where A.no = B.no 를 수행한다..
[Network] IP 프로토콜과 TCP, UDP 이번 시간에는 IP 프로토콜과 TCP, UDP에 대해서 다뤄보고자 합니다. 프로토콜은 컴퓨터 내부나 컴퓨터 사이에서 데이터의 교환 방식을 정의한 규칙 체계입니다. 따라서 데이터의 형식이 서로 상호 합의가 된 규칙에 따라 교환됩니다. 인터넷 프로토콜 (IP 프로토콜) 인터넷 프로토콜, 줄여서 IP는 송신 호스트와 수신 호스트가 패킷 교환 방식으로 데이터를 주고 받을 때에 사용하는 프로토콜이며, OSI의 네트워크 계층(3계층), TCP/IP의 인터넷 계층에 해당합니다. 이 때 송신 호스트와 수신 호스트는 IP 주소라는 것을 가지게 되는데, 이것은 전세계의 여러 호스트 중에 나를 특정할 수 있는 고유한 주소라고 볼 수 있습니다. 흔히 볼 수 있는 123.123.123.1 과 같은 형식입니다. 따라서 IP 프로..
[JPA] 영속성 컨텍스트(2) - 영속성 컨텍스트의 엔티티 관리 인프런에서 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 작성한 글입니다. JPA에서의 1차 캐시 JPA는 어플리케이션과 DB 사이의 중간 역할을 하기 때문에 캐싱 기능을 사용할 수 있습니다. 1차 캐시는 영속성 컨텍스트 안에 있으며, 영속 상태의 엔티티는 1차 캐시에 들어감으로써 캐싱 기능을 사용할 수 있게 됩니다. 1차 캐시는 여러개의 엔티티가 들어갈 수 있기 때문에, 각 엔티티를 구별할 수 있는 @Id와 Entity가 함께 들어갑니다. 즉 엔티티의 PK라 할 수 있는 Id로 1차 캐시 안에서 엔티티들을 구분하게 됩니다. 1차 캐시 @Id Entity 1 PK가 1인 엔티티 객체 2 PK가 2인 엔티티 객체 ... ... 먼저 Entity Manager가 생성한 entity를 p..
[JPA] 영속성 컨텍스트(1) - 기본과 엔티티의 생명주기 및 장점 인프런에서 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 작성한 글입니다. 영속성 컨텍스트란? JPA는 데이터와 연관된 객체들을 Entity로 분류하여 관리합니다. 따라서 데이터를 읽거나, 조회하거나 쓰는 내용들이 Entity를 통해서 이루어지게 됩니다. 이러한 엔티티들을 JPA는 어떠한 곳에 저장하는데, 이 영역을 영속성 컨텍스트라고 합니다. 영속성 컨텍스트는 엔티티 매니저를 통해서 접근할 수 있는데, 이는 눈에 보이지 않는 논리적인 개념입니다. 더보기 엔티티 매니저란? 웹 어플리케이션은 어떤 요청이 들어오게 되면, 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하여 할당해줍니다. 따라서 각 요청에 따라 해당 요청을 담당해주는 엔티티 매니저가 있게 됩니다. 이 엔티티 매니저는 DB에..
[Spring Boot] Logback과 Spring Boot에서 Logback 사용하기 이번 글에서는 Logback의 내용과 Spring Boot에서의 Logback 적용법 및 설정 방법에 대해서 알아보도록 하겠습니다. 더보기 아래의 글들을 참고하여 포스팅 된 글입니다. https://www.baeldung.com/logback LogBack? logback은 log4j 기반의 logging framework입니다. Spring에서 log를 남기기 위해서 slf4j를 흔하게 사용하곤 하는데, 이 slf4j는 로깅에 대한 추상 레이어를 제공하는 인터페이스 모음입니다. 따라서 slf4j만으로는 로그를 제대로 출력해낼 수 없고, 이를 구현하기 위한 native 구현체가 필요한데 이것이 바로 LogBack이라는 로깅 라이브러리입니다. Spring Boot에서 slf4j와 LogBack 사용할 준비..

728x90
반응형