본문 바로가기

<고승범> 실전 카프카 개발부터 운영까지 고승범님의 카프카 저서를 통해 학습한 내용을 정리하고자 한다. 카프카의 기본 구성 kafka: 데이터를 받아서 전달하는 데이터 버스 역할 producer: 카프카에 데이터를 만들어서 주는 역할을 하는 클라이언트 consumer: 메시지를 빼내서 소비하는 역할을 하는 클라이언트 zookeeper 카프카의 동작을 관리하기 위한 메타데이터를 관리하는 역할 브로커 정상 상태 점검 (health check) 담당 그외 카프카 주요 요소 kafka: 브로커를 구성한 클러스터 broker: 카프카 애플리케이션이 설치된 서버 혹은 노드 topic: 카프카는 메시지 피드들을 토픽으로 구분하고, 각 토픽의 이름은 카프카 내에서 고유함 RDB의 테이블 같은 역할 partition 병렬 처리 및 고성능을 위해 하나의 토픽을 ..
<마이크 아이작> 슈퍼펌프드 가끔 초기 스타트업에서 일하고 싶어질 때가 있다. 그럴 때는 스타트업과 관련된 콘텐츠를 보고는 한다. 이런 배경으로 드라마 '슈퍼펌프드: 우버전쟁'을 접하게 되었다. 드라마를 재미있게 보고 난 이후, 원작을 찾아보게 되었다. ‘슈퍼펌프드’는 우버 창업자인 트래비스 캘러닉의 이야기를 담고 있다. 우버를 창업하기 전에 있었던 몇 차례의 창업 경험과 가치관 우버에서 추구한 가치관과 위기를 해결한 에피소드 우버의 위기 크게 이런 순서로 우버의 비하인드 스토리를 써내려간다. 이 책은 우버의 경영 문제를 추적하던 한 기자가 취재를 통해 얻어낸 정보를 기반으로 작성한 글이다. 우버는 캘러닉의 세번째 창업 회사였다. 그는 대학시절, 스카워라는 P2P 회사를 친구들과 창업했었다. 그러나 저작권 문제로 인하여 회사를 폐업..
개발자를 위한 최소한의 DNS 지식 (2): 쿠버네티스 응용편 개발자를 위한 최소한의 DNS 지식 (1): 기초편에 이어서, 쿠버네티스를 통해 DNS을 살펴보자. 쿠버네티스 컨테이너의 DNS 설정 확인해보기 dnsutils를 설치해서, 테스트를 해보자. kubectl apply -f https://k8s.io/examples/admin/dns/dnsutils.yaml 그다음 resolv.conf 설정을 살펴보자. kubectl exec -i -t dnsutils -- cat /etc/resolv.conf dnsutils 컨테이너를 실행하여, resolv.conf 기본값을 살펴보자. resolv.conf 파일에 search option이 설정되어있다. 쿠버네티스에서 올라간 애플리케이션에서 PQDN으로 도메인을 호출했을 때, 알아서 주소를 찾아가는 이유는 이 설정 덕분..
[Kubernetes] readiness/liveness probe 쿠버네티스는 두가지 유형의 상태 체크 기능을 가지고 있다. Readiness Readiness Probe는 애플리케이션이 트래픽을 받을 준비가 되었다는 것을 쿠버네티스에 알리는 역할을 한다. 쿠버네티스는 트래픽을 받기 전에 Readiness Probe를 통과했는지 확인한다. Readiness Probe에 실패하면, 쿠버네티스는 Readiness Probe을 통과할 때까지 파드로 트래픽 전송을 중단한다. Liveness Liveness Probe는 애플리케이션이 살았는지, 죽었는지 알려주는 역할을 한다. 파드가 살아있으면 쿠버네티스는 별도의 조치를 하지 않는다. 그러나 파드가 죽어있다면, 쿠버네티스는 파드를 제거하고 새로운 파드를 시작한다. 두가지 시나리오를 통해, 두 차이점을 이해해보자. Readines..
Service Aggregator VS BFF 애플리케이션 아키텍처 패턴으로 Service Aggregator와 BFF가 있다. 둘이 비슷한듯 다른데, 그 차이점을 이해해보자. Service Aggregator은 여러 MSA 호출을 조합하는 오케스트레이션 역할을 하는 서버를 말한다. Backend For Front은 UI에 친화적인 응답을 만드는 서버를 말한다. 그래서 Mobile/PC 별로 다른 화면을 위한 BFF도 존재할 수 있다. BFF도 여러 API을 호출한다는 점에서 Service Aggregator와 공통점이 있다. 그러나 사용하는 목적이 다르다는 점에서 차이가 있다는 생각이 든다.
개발자를 위한 최소한의 DNS 지식 (1): 기초편 DNS resolver이란? Dns의 원리를 사용해 IP를 찾아내는 역할을 하는 클라이언트로 볼 수 있다. hosts.conf 파일이란? 특정 도메인에 대한 IP를 찾을 때, 주소 값을 어디에서 찾을지 결정하는 파일이다. resolve.conf 파일이란? OS에서 DNS resolver를 구성할 때 사용하는 파일이다. 사용하고자 하는 네임서버를 기록해둔다. resolv 파일이 다음과 같이 구성되어있다고 상상해보자. $cat /etc/resolv.conf search americano.com cafelatte.com cappuccino.com 여기서 search는 순차적으로 조회해볼 name server를 말한다. name server는 도메인에 맞는 ip 주소를 찾을 때 사용하는 서버를 말한다. reso..
개발자를 위한 최소한의 JVM 메모리 트러블 슈팅 사전 지식 한 눈에 JVM 메모리 구조 살펴보기 인텔리제이로 메모리 디버깅하기 (1) 로컬 서버 애플리케이션 상태를 실시간으로 확인하기 Intellij > Profiler > Cpu and Memory Live Charts 로컬에서 현상을 재현했을 때, 메모리 사용량이 증가하고 있는지 확인할 수 있다. 특정 조건에서 가비지 컬렉션이 어떻게 실행되었는지 확인하고 싶을 때에는, GC를 직접 실행할 수 도 있다. 2. Heapdump 파일 분석하기 Shallow Size: 객체를 저장하는 데에 사용된 메모리 Retianed Size: 이 객체를 유지하는 데에 사용된 메모리 크기이다. 객체를 저장하는 데에 사용된 메모리 + 객체가 사용하고 있는 다른 객체를 저장하는 데에 사용된 메모리의 합으로 보면 된다. 이 크기는, G..
[ChatGPT] Function calling Function Calling이란? Chatgpt Chat Completions API를 사용하면, 질문을 하고 답변을 얻을 수 있다. Function Calling을 사용하면, 질문에 적합한 애플리케이션 함수와 매개변수를 추천받을 수 있다. 즉, 애플리케이션에서 어떤 함수를 호출하는게 좋을지 gpt에게 물어볼 수 있는 기능이라고 볼 수 있다. 예제코드 open ai에서 가져온 파이썬 예제 코드이다. 한줄한줄 읽어보면, 어떤 방식으로 사용하는 건지 쉽게 감이 온다. import openai import json # 항상 같은 날씨를 리턴하는 예시용 더미 함수이다. # 실제 개발환경에서는 상황에 맞는 코드를 구현해야한다. def get_current_weather(location, unit="fahrenh..