전체 글 (87) 썸네일형 리스트형 Keep Alive: 네트워크 연결을 유지하는 핵심 기술 현대 IT 환경에서는 네트워크 연결을 유지하는 것이 필수적입니다. 클라이언트와 서버 간의 연결이 끊기지 않도록 보장하는 기술 중 하나가 바로 "Keep Alive"입니다. 이번 글에서는 Keep Alive의 개념과 동작 방식, 그리고 다양한 프로토콜에서의 활용 방법을 살펴보겠습니다.Keep Alive란?Keep Alive는 클라이언트와 서버 간의 연결을 지속적으로 유지하기 위한 메커니즘입니다. 이는 주로 네트워크 연결이 비활성 상태가 되더라도 종료되지 않도록 주기적인 신호(패킷)를 전송하는 방식으로 동작합니다. Keep Alive는 다음과 같은 목적으로 사용됩니다.연결 유지: 네트워크 환경에서 일정 시간 동안 데이터 전송이 없을 경우, 연결이 자동으로 종료되지 않도록 방지합니다.리소스 최적화: 불필요한 .. ORACLE MERGE INTO와 UPDATE의 차이점 Oracle에서 데이터를 갱신할 때 MERGE INTO와 일반 UPDATE 구문을 사용한다. 두 방법 모두 데이터를 수정하지만, 사용 목적과 성능 면에서 차이가 있다. 이 글에서는 두 방법의 차이와 장단점을 정리하고, 어떤 상황에 어떤 방법을 선택하는 것이 좋은지 알아보겠다.1. MERGE INTO와 UPDATE의 개념1-1. MERGE INTO의 UPDATEMERGE INTO는 두 테이블 간의 데이터를 비교해 조건에 맞는 행은 UPDATE, 조건에 맞지 않는 행은 INSERT를 수행한다. 주로 데이터 동기화나 배치 작업에 사용된다.MERGE INTO employees eUSING employee_updates uON (e.employee_id = u.employee_id)WHEN MATCHED THEN.. 아파치 카프카 실습 (Apache Kafka) / 스프링 카프카(Spring Kafka) - 스프링 카프카 컨슈머 스프링 카프카 컨슈머 스프링 카프카의 컨슈머는 기존 컨슈머를 2개의 타입으로 나누고 커밋을 7가지로 나누어 세분화했다. 타입은 레코드 리스너(MessageListener)와 배치 리스터(BatchMessageListener)가 있다. 리스너 종류에 따라 한번 호출하는 메서드에서 처리하는 레코드의 개수가 달라진다. 레코드 리스너 단 1개의 레코드를 처리한다. 스프링 카프카 컨슈머의 기본 리스너 타입이다. 배치 리스너 한 번에 여러개 레코드들을 처리할 수 있다. 두 리스너 외에도 각 리스너에서 파생된 형태가 존재한다. AcknowledgingMessageListener ConsumerAwareMessageListener AcknowledgingConsumerAwareMessageListener BatchAc.. 아파치 카프카 실습 (Apache Kafka) / 스프링 카프카(Spring Kafka) - 스프링 카프카 프로듀서 스프링 카프카 스프링 카프카는 카프카를 스프링 프레임워크에서 효과적으로 사용할 수 있도록 만들어진 라이브러리다. 기존 카프카 클라이언트 라이브러리를 래핑하여 마든 스프링 카프카 라이브러리는 카프카 클라이언트에서 사용하는 여러 가지 패턴을 미리 제공한다. 예를 들어, 컨슈머를 멀티 스레드로 운영하기 위한 스레드 풀 로직은 스프링 카프카를 사용하면 concurrency 옵션 하나만 추가하면 어렵지 않게 구현할 수 있다. 스프링 카프카 라이브러리를 스프링 부트 프레임워크와 함께 사용하기 위해서는 다음과 같이 build.gradle에 디펜던시를 추가한다. dependencies { // 스프링 카프카 라이브러리 디펜던시 // 스프링 카프카 라이브러리를 추가하면 카프카 클라이언트 라이브러리도 같이 포함되어 빌드된.. 아파치 카프카 실습 (Apache Kafka) / 컨슈머 랙 - 상세 개념 # 컨슈머 랙 컨슈머 랙(LAG)은 토픽의 오프셋(LOG_END_OFFSET)과 컨슈머 오프셋(CURRENT_OFFSET)간의 차이다. 프로듀서는 계속해서 새로운 데이터를 파티션에 저장하고 컨슈머는 자신이 처리할 수 있는 만큼 데이터를 가져간다. 컨슈머 랙은 컨슈머가 정상 동작하는지 여부를 확인할 수 있기 때문에 컨슈머 애플리케이션을 운영한다면 필수적으로 모니터링 해야하는 지표이다. 컨슈머 랙은 컨슈머 그룹과 토픽, 파티션별로 생성된다. 1개의 토픽에 3개의 파티션이 있고 1개의 컨슈머 그룹이 토픽을 구독하여 데이터를 가져가면 컨슈머 랙은 총 3개가 된다. 프로듀서가 보내는 데이터양이 컨슈머의 데이터 처리량보다 크다면 컨슈머 랙은 늘어난다. 반대로 프로듀서가 보내는 양이 컨슈머의 데이터 처리량 보다 적으.. 아파치 카프카 실습 (Apache Kafka) / 카프카 컨슈머 - 상세 개념 (멀티스레드 컨슈머) 멀티 스레드 컨슈머 파티션을 여러 개로 운영하는 경우 병렬처리를 위해 파티션 개수와 컨슈머 개수를 동일하게 맞추는 것이 좋은 방법이다. 토픽의 파티션은 1개 이상으로 이루어져 있으며 1개의 파티션은 1개 컨슈머가 할당되어 데이터를 처리할 수 있다. 파티션 개수가 n개라면 동일 컨슈머 그룹으로 묶인 컨슈머 스레드를 최대 n개 운영할 수 있다. 컨슈머를 멀티 스레드로 활용하는 방식은 크게 두 가지로 나눈다. 멀티 워커 스레드 컨슈머 멀티 스레드 전략 1. 카프카 컨슈머 멀티 워커 스레드 전략 데이터를 for 반복구문으로 처리할 경우 이전 레코드의 처리가 끝날 때까지 다음 레코드는 기다리게 된다. 만약 레코드별로 처리해야 하는 시간이 길 경우 더욱 오래 기다리게 디므로 처리 속도는 느려진다. 멀티 스레드를 사.. 아파치 카프카 실습 (Apache Kafka) / 카프카 프로듀서 - 상세 개념 (acks, 멱등성 프로듀서, 트랜잭션 프로듀서) 카프카 프로듀서 프로듀서는 카프카에 데이터를 저장하는 첫 단계이다. 카프카 클러스터는 3대 이상의 브로커로 이루어져 있어서 일부 브로커에 이슈가 생기더라도 데이터의 유실을 막을 수 있다. 그러나 유실을 막기 위해서는 프로듀서에서 제공하는 다양한 옵션을 함께 사용해야 한다. 프로듀서의 고급 활용법과 옵션별 동작 방식에 대해 자세하게 알아보자. 1. acks 옵션 카프카 프로듀서의 acks옵션은 0,1,all(또는 -1) 값을 가질 수 잇다. 이 옵션을 통해 프로듀서가 전송한 데이터가 카프카 클러스터에 얼마나 신뢰성 높게 저장할지 지정할 수 있다. acks옵션에 따라 성능이 달라질 수 있다. # acks = 0 acks를 0으로 설정하는 것은 프로듀서가 리더 파티션으로 데이터를 전송했을 때 리더 파티션으로 .. 아파치 카프카 실습 (Apache Kafka) / 토픽과 파티션 - 상세 개념 (적정 파티션 개수, 메시지 키 사용 여부, 토픽 정리 정책, ISR) # 토픽과 파티션 토픽에 대해 잘 이해하고 설정을 잘하는 것이 카프카를 통한 데이터 활용도를 높이는 것이다. 여러가지 운영상 고려사항을 알아보자. 1. 적정 파티션 개수 토픽의 파티션 개수는 카프카의 성능과 관련이 있다. 그렇기에 운영함에 있어 적절한 파티션 개수를 설정하고 운영하는 것이 매우 중요하다. 토픽 최초 생성 시 파티션의 개수를 정하는 데에 고려해야 할 점은 3가지 있다. # 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 파티션의 개수가 많아지면 많아 질수록 1:1 매핑되는 컨슈머 개수가 늘어나기 때문에 파티션은 카프카의 병렬처리 핵심이다. 파티션 개수를 정할 때는 해당 토픽에 필요한 데이터 처리량을 측정하여 정하는 것이 중요하다. # 데이터 처.. 이전 1 ··· 5 6 7 8 9 10 11 다음