개발/기술
-
카프카 - URP, Under Min ISR개발/기술 2024. 8. 30. 17:52
URP (Under Replicated Partition)카프카를 운영하다보면 URP 장애가 종종 발생한다. URP 장애는 다양한 이유로 발생하는데 원인을 알기 위해선 먼저 URP 가 먼지 알아야 한다. 카프카에는 파티션이라는 개념이 있고 파티션은 리더와 팔로워 파티션으로 나눠진다. 파티션은 토픽의 데이터가 저장되는 스토리지로 보면 되는데 리더 파티션은 프로튜서와 컨슈머로부터 토픽을 주고 받는 부분이고 팔로워 파티션은 리더 파티션의 내용을 복제한다. 스토리지에서 볼 수 있는 RAID 처럼 카프카도 내용을 복제해서 고가용성과 내구성을 확보하는 방식으로 동작한다. 카프카 운영자는 replicas.factor 옵션으로 복제본의 개수를 설정할 수 있는데 주로 3개 정도 둔다. URP 는 리더 파티션과 동기화되지..
-
Zookeeper 사용 목적과 사례 중심으로 정리개발/기술 2024. 8. 16. 18:56
분산시스템을 무조건 만나게 되는 주키퍼. 이번 포스트에선 주키퍼를 사용하는 이유와 사례를 중점적으로 살펴보자. Why Zookeepr?카프카나 하둡, 클릭하우스 같은 분산 시스템 서비스는 여러개의 서버가 동시에 동작하는 시스템이다. 서버들이 유기적 협력하기 위해선 서로가 어떤 상태인지, 어떤 책임을 맡고 있고 무엇을 할 수 있는지 모니터링 할 수 있는 환경이 필요하다. 예를 들어 특정 서버가 죽어 버리면 다른 서버에서 장애를 발견하고 복구 작업이 진행할 수 있어야 하고 서버 마다 갖고 있는 테이블을 어딘가에 공유할 수 있어야 한다. 시스템마다 서버끼리 상태를 공유할 수 있는 환경을 독자적으로 만들 수도 있겠지만 매 시스템마다 만들기는 버겁다. 감사하게도 아파치에서 분산시스템에서 범용적으로 사용할 수 있..
-
VIP, HA개발/기술 2023. 11. 27. 22:16
VIP VIP 는 가상의 주소를 의미한다. 하나의 컴퓨터에 물리 ip 주소와는 별개로 새로운 가상 IP 주소를 설정할 수 있다. VIP 를 설정하면 같은 네트워크 내에서 설정한 vip 주소에 대한 요청을 받을 수 있게 된다. 하지만 아무 주소나 정할 수 있는건 아니고 몇가지 규칙이 있다. 네트워크 범위 네트워크의 서브넷 설정에 맞는 주소를 골라야한다. inet 192.168.1.4/24 로 설정된 경우 서브넷에 따라서 192.168.1.x 범위의 주소를 가상의 주소로 설정할 수 있다. 주소충돌방지 너무 당연하지만 기존에 있던 주소와 겹치면 안된다 HA(High Availability) VIP 는 고가용성 서비스를 구성할 때 주로 사용된다. 실제 사례를 알아보기 위해 먼저 데이터베이스의 프라이머리, 스탠드..
-
가상 스레드(Virtual Thread) 그리고 스프링개발/기술 2023. 11. 24. 20:19
1. 가상스레드란? 가상 스레드를 이해하려면 물리 스레드와 가상스레드의 차이점을 이해해야 한다. 1.1 물리스레드 학교 수업시간에 배웠던 스레드 개념이다. 하드웨어 기반 cpu 코어에서 실행되는 스레드다. 각 코어는 한번에 하나의 스레드를 실행할 수 있으며 멀티코어는 동시에 여러 스레드를 실행할 수 있다 시스템 리소스 시스템 리소스를 직접 사용한다. cpu 하나를 독차지 하고 있는 스레드라고 보면 된다. 가상스레드에 대한 개념이 없는 상태에선 이게 무슨 당연한 소리냐 싶을 수 있는데 일단 이렇게만 알고 있자. 계산집약적 작업에 효율적 직접 하드웨어 리소스를 사용하기 때문에 높은 CPU 사용량을 뽑아낼 수 있으므로 계산 집약적 작업에 적합하다 운영체제에서 관리 운영체제에서 관리되므로 컨텍스트 스위칭 비용이..
-
single threaded vs multi threaded개발/기술 2023. 3. 16. 16:15
싱글 쓰레드 시스템은 쓰레드 하나로 시스템을 구성하는 방식이고 멀티 쓰레드 시스템은 두개 이상의 쓰레드를 이용해서 프로그램을 구성하는 것을 말한다. 멀티 코어가 대세인 하드웨어 환경이라면 쓰레드를 늘려서 시간당 작업량을 늘리는게 당연히 좋지 않을까 하는 생각이 들겠지만 구조마다 장/단점이 있다. Single Thread 특징 Simplicity: 쓰레드가 하나만 있기 때문에 간단한 아키텍처를 구항할 수 있다. 개발하고 배포하고 유지하기가 쉽다. 멀티 쓰레드 환경에서 발생할 수 있는 동시성 이슈 같은 것은 고민하지 않아도 된다. Limited Concurrency: 싱글 쓰레드 환경에서는 요청 하나당 한개만 처리할 수 있다. 동시에 처리할 수 없기 때문에 응답 속도도 느려지고 througput도 좋지 않다..
-
HTTP 2.0 주요사항개발/기술 2023. 3. 1. 19:36
Multiplexed Streams HTTP1 .0 에서는 요청을 보내기 위해선 반드시 이전 요청이 완료돼야했기 때문에 속도면에서 딜레이가 있었다. 그래서 HTTP 1.1에서는 하나의 TCP 안에 두개 이상의 HTTP 요청을 담아 속도를 높일 수 있는 Pipelining을 기술을 도입했다. 동시에 여러개의 요청을 보낼 수 있기 때문에 속도면에서 HTTP 1.0 에서 발생한 딜레이를 줄일 수 있다. 그러나 순서가 보장돼야하는 한계가 있었다. 서버는 TCP에서 요청을 받은 순서대로 응답해야하기 때문이다. 그래서 앞선 요청에 의해 뒤에 있는 요청이 딜레이 되는 문제가 발생한다. 이미지 세장을 받는 경우 가장 앞선 이미지 응답이 지연되면 두, 세번째 이미지도 지연이 발생하게 된다. 이 문제를 Head Of Li..
-
HTTP개발/기술 2023. 2. 28. 17:32
HTML 문서, 이미지, 텍스트를 가져올 수 있는 프로토콜. 웹에서 이루어지는 모든 데이터 교환의 기초다. 브라우저인 클라이언트에서 보내는 메시지는 요청, 서버에서 응답하는 메시지를 응답이라 부른다. HTTP, TCP 클라이언트와 서버서 HTTP 요청, 응답을 교환하기 위해선 TCP 연결을 설정해야한다. 브라우저로 http://google.com 를 요청 할 때 HTTP 처리 순서는 아래와 같다. 브라우저는 DNS로부터 호스트 주소, google.com 대한 IP 주소를 가져온다 브라우저는 IP 주소와 Port에 대해서 TCP 연결을 형성한다 브라우저는 TCP 연결로 서버에게 HTTP 요청을 보낸다 브라우저는 TCP 연결로 서버로부터 HTTP 응답을 받는다 응답이 완료되면 TCP 연결을 종료한다. HTT..
-
HTTPS, TLS, SSL개발/기술 2023. 2. 28. 17:21
HTTPS HTTP는 Hyprtext Transfer Protocol의 약어로 HTML을 전송하는 통신 프로토콜을 의미한다. HTTPS는 Hypertext Transfer Protocover over Secure Socket Layer 로 SSL 위에서 이뤄지는 HTML 통신 규약을 의미한다. 간단히 데이터를 안전하게 전송, 전달 할 수 있도록 보안 기능을 추가한 HTTP 프로토콜이라고 말할 수 있다. TLS Transport Layer Security의 약자다. 과거에는 SSL로도 불렸다. TLS는 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약이다. TLS를 이용하면 클라이언트 서버 응용 프로그램이 네트워크로 통신할 때 암호화, 인증, 무결성을 보장한다 HTTP와 달리 암호화, 복호화 ..