👨‍💻 Tech Story/Cloud Architecture 58

OpenStack 컴퓨팅 서비스 이해하기: 심화편

OpenStack 컴퓨팅 서비스 이해하기: 심화편

[kt cloud CloudSW운영팀 김호균 님] OpenStack 컴퓨팅 서비스 이해하기: 심화편지난 포스팅에서는 컴퓨팅 서비스인 Nova의 아키텍처와 기본 동작 과정에 대해서 간단히 살펴보았습니다. 또한 OpenStack 대시보드 서비스인 Horizon을 통해 가상 머신을 직접 생성해 보고, 이 과정에서 OpenStack의 여러 컴포넌트들이 어떻게 서로 상호 작용하는지 알아보았습니다.이번 포스팅에서는 가상화 관점에서 Nova를 좀 더 자세히 살펴보겠습니다.   OpenStack 가상화 방식: KVM과 QEMU Nova에 대해 설명하기 전에, KVM과 QEMU에 대해 먼저 알아보겠습니다.가상화 방식을 활용하면 호스트 시스템과 독립적인 환경에서 각각 다른 운영체제로 가상 머신(VM)을 동작할 수 있습니다..

BufferedReader.readLine()와 InterruptedException

BufferedReader.readLine()와 InterruptedException

[kt cloud 서비스개발팀 이지윤 님] BufferedReader.readLine()와 InterruptedException kt cloud의 DBaaS 상품에는 생성된 VM에 원격으로 접속해서 OS 명령어로 DB의 상태를 체크하는 과정이 주기적으로 실행되고 있습니다. 그리고 OS 명령어의 결과값을 처리할 때에는 표준 출력 스트림과 에러 스트림을 비동기식으로 처리하고 있습니다.이 과정에서 Java의 Process 객체를 사용해서 OS 명령어 처리를 위한 외부 프로세스를 관리하고,BufferedReader를 사용해서 외부 프로세스의 출력/에러 스트림을 처리하고,스트림 처리를 비동기식으로 수행하기 위해 CompletableFuture를 사용하고 있습니다.DBaaS에서 실제로 어떻게 외부 프로세스 사용 및..

Kafka 이벤트 전송 최적화: Partitioner와 batch 설정 이해하기

Kafka 이벤트 전송 최적화: Partitioner와 batch 설정 이해하기

[kt cloud 플랫폼Innovation팀 오준영] Kafka 이벤트 전송 최적화: Partitioner와 batch 설정 이해하기 Kafka에서 Producer는 기본적으로 Sticky Partitioner를 사용하여, 이벤트를 batch 단위로 묶어 효율적으로 전송할 수 있습니다.배치 설정은 batch.size와 linger.ms가 있으며, 각각 배치의 크기와 데이터가 쌓이는 시간을 설정해 전송 조건을 조절할 수 있습니다.본 포스팅에서는 Kafka를 활용한 이벤트 발행과 구독하는 과정에서, 겪은 이벤트 분산 이슈의 원인을 파악하기 위해 Kafka Partitioner, batch.size, linger.ms 설정을 분석한 내용을 공유합니다.  1.시나리오 테스트 환경 (Local) Kafka Clu..

MSW로 프론트엔드 개발 프로세스 개선하기 : API Mocking

MSW로 프론트엔드 개발 프로세스 개선하기 : API Mocking

[kt cloud 플랫폼Innovation팀 송재희 님] MSW로 프론트엔드 개발 프로세스 개선하기 : API Mocking 프론트엔드 개발자라면, 종종 백엔드 API가 준비되기 전까지 대기해야 하는 상황을 경험해 보셨을 겁니다. 이번 포스트에서는 백엔드 API가 준비되기 전에 동일한 규격의 API를 지원하는 가상 서버 환경을 구성하여, 생산성 높은 프론트엔드 개발을 진행할 수 있는 방법을 소개하고자 합니다. 그 중심에는 MSW(Mock Service Worker)가 있습니다.  프론트엔드 개발의 현실 프론트엔드와 백엔드가 협업하며 마주하는 어려움 중 하나는 백엔드 API 연동 과정에 있습니다. 프론트엔드는 클라이언트 UI 화면 구현을 중심으로 작업을 진행하지만, 서버 API를 연동하여 알맞은 데이터와 ..

효율적인 gRPC 서비스 설계: Protobuf 작성 컨벤션 도입기

효율적인 gRPC 서비스 설계: Protobuf 작성 컨벤션 도입기

[kt cloud 플랫폼Innovation팀 강솔 님] 효율적인 gRPC 서비스 설계: Protobuf 작성 컨벤션 도입기 클라이언트와 서버는 항상 동시에 업데이트될 수 없기 때문에, 이들이 항상 동기화될 것이라는 가정은 위험합니다. 특히, Breaking Changes(호환되지 않는 변경)가 발생했을 때 클라이언트나 서버가 최신 업데이트를 반영하지 못하면 서비스 중단이나 통신 오류가 발생할 수 있습니다. 이와 관련하여 Protobuf를 정의할 때 유의할 점에 대해 살펴보고, 이를 예방하고 안정적인 서비스 운영을 위해 저희 프로젝트에서 정의한 Protobuf 작성과 관련된 컨벤션 규칙에 대해 설명하겠습니다.   1. Proto 파일 버전에 따른 메시지 내용 변경 먼저 .proto 파일이 변경될 경우 구 ..

gRPC로 시작하는 API 개발: 첫 번째 서버와 클라이언트 구현

gRPC로 시작하는 API 개발: 첫 번째 서버와 클라이언트 구현

[kt cloud 플랫폼Innovation팀 강솔 님]  gRPC로 시작하는 API 개발: 첫 번째 서버와 클라이언트 구현  지금까지 gRPC의 핵심 동작 원리와 개념에 대해 학습했었습니다. 이번 포스팅에서는 gRPC 핵심 동작 원리를 바탕으로 Java와 Spring Boot를 사용해 간단한 은행 계좌 잔액 조회 서비스를 구현해보겠습니다. 이 프로젝트를 통해 서비스 스키마 정의부터 서버와 클라이언트 구현까지의 일련의 과정을 따라가며, gRPC 동작 방식을 학습합니다. 그리고 gRPC 관련 여러 가지 테스트 방법에 대해 소개하겠습니다.  1. gRPC 샘플 프로젝트 구현하기 1.1. Sample 시나리오 및 구성    1. 서비스 정의        a. Bank Service: 은행 계좌 서비스      ..

gRPC의 내부 구조 파헤치기(2): Channel & Stub

gRPC의 내부 구조 파헤치기(2): Channel & Stub

[kt cloud 플랫폼Innovation팀 강솔 님] gRPC의 내부 구조 파헤치기(2): Channel & Stub이번 포스팅에서는 gRPC의 핵심 동작 원리인 채널(Channel)과 스텁(Stub)의 개념과 역할을 살펴보겠습니다. 이를 통해 gRPC 서버와 클라이언트가 어떻게 연결되고, 클라이언트가 서버의 원격 메서드를 호출하는 과정을 명확히 이해할 수 있습니다. 1. 채널(Channel)과 스텁(stub)을 통한 서버와 클라이언트 연결하기  gRPC를 사용할 경우, 클라이언트는 서버의 원격 메서드를 마치 로컬에 있는 것처럼 호출할 수 있습니다. 이는 내부적으로 채널과 스텁이 서버와 클라이언트 간의 네트워크 연결과 호출 전달을 처리하기 때문입니다.이제 채널과 스텁이 어떻게 상호 작용하며 동작하는지에..