K8S 클러스터 구성
1. SSH 서버 활성화 및 기본 필요 패키지 설치 2. Docker 관련 패키지 설치 (필요 없는 경우 containerd.io만 설치하면 됨) 3. 메모리 Swap 비활성화 및 Cgroup 활성화 4. Kubernetes 설치 (Kubeadm 배포판) 5. Kubernetes 클러스터 생성 및 Flannel CNI 설치 (Master 노드) 6. Kubernetes 클러스터 등록…
1. SSH 서버 활성화 및 기본 필요 패키지 설치 2. Docker 관련 패키지 설치 (필요 없는 경우 containerd.io만 설치하면 됨) 3. 메모리 Swap 비활성화 및 Cgroup 활성화 4. Kubernetes 설치 (Kubeadm 배포판) 5. Kubernetes 클러스터 생성 및 Flannel CNI 설치 (Master 노드) 6. Kubernetes 클러스터 등록…
git 저장소에 서브모듈이 포함된 경우 root 디렉토리에 .gitmodules 파일이 생성되어 있다. https 방식의 인증을 사용하는 머신에서 서브모듈을 설정하는 경우에 다음과 같이 서브모듈의 원격 저장소 주소도 https 프로토콜을 이용하도록 설정된다. 다만, 최근 github의 인증 보안이 강화되면서 https 방식의 credential을 이용해서는 jenkins에서 private 저장소에 대한 접근이 어렵다. 따라서…
올해 초에 CS 분야 석사 학위를 받고, 졸업 후에 계약직 연구원으로 월급을 받으면서 연구 과제에 참여했다. 아무래도 전문연을 해야하는 입장에서 바로 회사로 가는 것이 베스트이지만, 그러기에는 내가 너무 지쳐있었다. 3~4월의 나는 정말 아무것도 하고 싶지 않은 번아웃 상태였다. 연구원으로 일하면서 엄청난 워라밸을 방어하며 충분한 시간을 가지고…
지난 글에서 이어서 이번 글에서 클라이언트에서의 인터셉터 구현을 살펴보겠습니다. gRPC 인터셉터 – 클라이언트 클라이언트에서의 gRPC 인터셉터도 이전 글에서 살펴본 서버와 동작 원리 및 구현 방법이 비슷합니다. 마찬가지로 라이브러리의 구조를 살펴보면서 gRPC 인터셉터를 구현해보도록 하겠습니다. (1) ClientCall.Listener<RespT> 정적 추상 클래스를 상속받는 클래스를 생성합니다. ClientCall.Listener<RespT>는 ClientCall 추상 클래스…
지금까지 gRPC의 기본적인 특징들을 살펴보고, 핵심적인 4가지의 통신 방법을 Protocol Buffer와 Java를 이용하여 간단한 예제로 구현해보았습니다. 분산된 프로세스 사이에서 간단한 통신을 하고자 한다면 이전에 다뤘던 구현 방법만으로도 충분하지만, MSA 기반 애플리케이션처럼 복잡한 형태의 구조를 가지는 경우에는 보다 세밀하고 유연하게 통신 과정을 제어할 수 있는 방법들이 요구됩니다.…
JUnit5, Hamcrest 및 Mockito JUnit5: Hamcrest: JUnit의 테스트 작성을 보다 문맥적으로 자연스럽고 우아하게 할 수 있도록 도와주는 Matcher 라이브러리입니다. JUnit5부터는 Hamcrest 관련 라이브러리가 포함되어 있지 않습니다. Mockito: Java 프로그래밍에서의 단위 테스트를 위한 Mocking 오픈소스 프레임워크입니다. 앞으로의 모든 글은 JUnit5에 맞추어 기술합니다. JUnit4에 대한 내용은 특별한 경우가…
이전 글에서 gRPC를 이용하여 Unary RPC를 구현했던 것에 이어서, 이번에는 Server Streaming, Client Streaming 및 Bidirectional Streaming RPC를 Java로 구현해보도록 하겠습니다. Streaming 패턴 구현에 앞서 gRPC에서 제공하는 클라이언트 스텁 3가지에 대해서 먼저 살펴보겠습니다. gRPC 클라이언트 스텁: BlockingStub, AsyncStub, FutureStub gRPC의 클라이언트 스텁은 다음과 같이 3가지의 객체로…
이전 글에서 gRPC에 대한 기본적인 특징과 통신 패턴들을 살펴보았습니다. gRPC는 Protocol Buffer라는 인터페이스 정의 언어(IDL)를 기반으로 서비스 정의를 작성하며, 다양한 프로그래밍 언어로 컴파일할 수 있으므로 특정 언어에 종속되지 않을 뿐만 아니라, HTTP/2 위에서 동작하기 때문에 빠른 속도의 양방향 메시지 전송을 지원합니다. 이러한 특성으로 인해 프로세스 및…