본문 바로가기

전체 글118

[Data-Structure] Hash Table(해시 테이블) 1. Hash Table(해시 테이블) 해시 테이블은 (Key, Value) 쌍으로 데이터를 저장하는 자료구조이며, 일반적으로 O(1)의 시간복잡도로 빠른 속도로 데이터를 저장하고 조회할 수 있다.   - 기본 구조해시 테이블의 기본 구조는 아래와 같이 이루어져 있다. Key가 되는 데이터를 해시 함수에 입력하면 인덱스가 생성이 되고, 해당 인덱스가 가리키는 버킷에 데이터를 저장하는 것이다.   인덱스 사용하기 때문에, 평균적으로 O(1)의 시간을 가지게 된다는 특징이 있다. 버킷(Bucket): 실제 데이터가 저장되는 공간해시 함수(Hash Function): Key를 고정된 길이의 해시값으로 변환하는 함수인덱스(Index): 해시값을 기반으로 계산된 버킷의 주소    2. 해시 함수(Hash Func.. 2024. 11. 11.
[SRE] 통상적 컴퓨터 연산 지연 값 서론 개발자들은 제품을 개발하고 나서 가용성 증진과 쿼리 최적화 등의 다양한 방법으로 사용자 경험을 증진시키고자 노력한다.  사용자 경험을 증진시키기 위해서는 어떠한 점이 사용자 경험을 저해시키는 요소이며, 어떻게 개선시켜야 하는지 정확한 분석이 필요하다.  이번 글에서는 지연과 관련하여 개발자들이 참고하기에 좋은 컴퓨터 연산의 통상적인 지연 값에 대하여 알아볼 것이다.  차트 | Operation | Latency | Throughput | 1 MiB | 1 GiB || ----------------------------------- | ------- | ---------- | ------ | ------ || Sequential Memo.. 2024. 11. 10.
[Spring-boot] JOOQ 도입 후 구동 속도가 느려지는 현상 발단  사이드 프로젝트로 스프링 부트에 JOOQ를 도입하면서 발생한 일이었다. 애플리케이션 구동 시간이 원래 10초 내외로 나왔으나, JOOQ를 도입하면서 구동 시간이 1분이 넘어가게 되었다. 자료를 조사해 보니 이는 JOOQ를 사용할 때 AOP에서 발생하는 문제였고, 해당 부분을 수정하여 해결하였다.    해결 기존 코드는 execution을 사용했었는데, 구동 시 적용되는 범위가 너무 넓어서 구동이 느려진다는 것이었다. // 기존 코드private static final String CONTROLLER = "execution(* com.myproject.app.controller..*.*(..))";private static final String SERVICE = "execution(* com.my.. 2024. 11. 9.
[Debezium] 쿠버네티스 내 PostgreSQL Source Connector 구현 이번 글은 Debezium의 Source Connector와 Postgresql의 Logical Replication을 활용하여, 데이터베이스의 2개 테이블을Kafka로 복제하는 내용을 다뤄볼 것이다.    Kafka Connector로 크게 Source Connector와 Sink Connector가 있는데, Source Connector는 원천 데이터 소스를 카프카로 보내는 역할을, Sink Connector는 카프카에 저장된 데이터를 이관할 플랫폼으로 전송하는 역할을 한다.     위 사진에서 카프카를 기준으로 Data Source -> Kafka까지의 역할이 Source Connector의 역할이다.    https://debezium.io/documentation/reference/3.0/con.. 2024. 11. 8.
[Calico] Multiple Interface에서 특정 Network Interface만 사용 or 제외 https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart Quickstart for Calico on Kubernetes | Calico DocumentationInstall Calico on a single-host Kubernetes cluster for testing or development in under 15 minutes.docs.tigera.io  Calico를 처음에 설치할 때, Tigera operator를 설치하고 이후 Custom Resource를 설치한다.  일반적인 상황에서는 이 부분을 수정할 일이 없다고 보나, 클러스터의 특정 제약 조건(IP 대역 지정 / 특정 인터페이스 사용 등)에 의해 수정할 일이.. 2024. 11. 7.
[Containerd] Image Pull의 Registry에 Http 또는 Self-Signed Certification 사용 시 기본적으로 Containerd에서 이미지를 Pull을 할 때에는 Https를 사용하여 Pull을 한다. 여기서 Registry의 Url이 Http로 되어 있거나, 인증서가 공식적으로 발급된 게 아니라면(자기 서명 인증서 등), 에러를 반환한다.  그래서 Containerd에서 CLI를 이용하여 이미지를 Pull 하려면 아래와 같은 --skip-verify나 --plain-http와 같은 옵션들이 존재한다.     여기서 쿠버네티스의 CRI로 사용하게 된다면, 당연히 위의 옵션을 이용할 수 없다. 그렇기에 /etc/containerd/config.toml을 수정해야 한다.   다음과 같이 [plugins."io.containerd.grpc.v1.cri".registry.configs]의 하위에 내용을 추가.. 2024. 11. 5.