분류 전체보기 19

브로커 설치하기

자바와 주키퍼가 설정되었다면 카프카를 설치할 준비가 끝난 셈이다. 카프카의 현재 버전은 공식웹사이트(http://kafka.apache.org/downloads) 에서 받을 수 있다. 현재 시점의 최신 버전은 스칼라 2.13.0에서 실행되는 3.6.1 버전이다. 1. 브로커 설치 다운받은 카프카를 /usr/local/kafka 에 설치하고, 메시지 로그는 /tmp/kafka-logs 에 저장한다. 1. 배포판 다운로드 및 압축해제 2. /usr/local/kafka 로 이동 3. 로그 디렉토리 생성(/tmp/kafka-logs) 4. JAVA 환경설정 및 서버실행 $ tar -zxf kafka_2.13-3.6.1.tgz $ mv kafka_2.13-3.6.1 /usr/local/kafka $ mkdir ..

Kafka 2024.01.12

쿠버네티스 빠른 설치 (Mac - m시리즈 )

맥 환경에서 쿠버네티스 환경을 구성하기 위하여 다음과 같이 가상화 환경을 구성하였다. UTM Rocky Linux 1. Rocky Linux ISO 다운로드(9.3 arm64 버전) Site : https://rockylinux.org/ Download : https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.3-aarch64-minimal.iso 2. UTM 설치 (v4.4.5) 사이트에 접속하면 두 가지 버전(홈페이지 :무료, 앱 스토어: 유료)을 제공하고 있는데, 기능적인 차이는 없으므로 무료버전을 받으면 된다. Site : https://mac.getutm.app/ Release : https://github.com/utmapp/UTM..

k8s 2024.01.02

컨테이너 한방정리

기술의 흐름으로 이해하는 컨테이너 쿠버네티스는 컨테이너, 가상화, DevOps 환경에 깊숙히 자리잡고 있습니다. 쿠버네티스를 잘 이해하기 위해서 OS 와 더불어 컨테이너, 가상화, DevOps 환경에 대한 전반적인 배경을 이해하는 것이 중요하다. 1. Linux OS 흐름 메인프레임을 시작으로 1960년대 UNIX 가 등장하였고 이후 높은 안정성과 고성능으로 시장을 장악하였으나, 고가의 장비와 OS 로 인하여 일반적인 엔지니어의 접근이 어려웠다. 1990대 들어 리누스 토발즈에 의해 Linux ( 리누스 + 유닉스 ) 가 무료로 공개된 이후 언제든지 누구나 쉽게 접근하고 배울 수 있는 범용적인 OS로 자리 매김 하였다. 리눅스는 수많은 배포판이 존재하지만, debian 과 redhat 두가지 계열만 인지..

k8s 2023.12.28

Spring Boot Docker Compose Support

Spring Boot 3.1 부터 개발자도구에 Docker Compose 연동을 지원한다. 스프링 공식 블로그에도 관련 소개글을 확인할 수 있다. 일반적으로 docker compose 는 "docker-compose up" 으로 실행하고 "docker-compose down" 으로 컨테이너를 중지시킨다. Spring Boot 3.1 부터는 Docker Compose 명령어를 위임하여 사용할 수 있다. Spring Boot 어플리케이션이 시작되거나 중지되는 동안 컨테이너 관리도 같이 하게 된다는 의미이다. 디펜던시 설정 spring initializr 에서 프로젝트 구성시 Dependencies 에서 Docker Compose Support 를 추가하면 된다. (매우 간단하다.) dependencies {..

spring/spring-boot 2023.12.17

주키퍼 설치하기

카프카는 클러스터의 메타데이터와 컨슈머 클라이언트에 대한 정보를 저장하기 위해 아파치 주키퍼를 사용한다. 주키퍼는 설정정보관리, 이름 부여, 분산 동기화, 그룹 서비스를 제공하는 중앙화된 서비스이다. https://zookeeper.apache.org/releases.html 에서 필요한 버전을 받거나 도커 이미지를 사용하면 된다. 1. 독립 실행 서버 주키퍼는 기본적인 예제 설정파일(/usr/local/zookeeper/config/zoo_sample.cfg)과 함께 배포된다. 다음의 단계로 설치를 진행한다. 배포판 다운로드 및 압축해제 /usr/local/zookeeper 로 이동 데이터 디렉토리 생성(/var/lib/zookeeper) zoo.cfg 파일 생성 $ tar -zxf apache-zoo..

Kafka 2023.12.11

Kafka 개요

아파치 카프카는 메시지 발행/구독 시스템이다. '분산 커밋 로그' 혹은 '분산 스트리밍 플랫폼'이라고 불리기도 한다. 파일시스템이나 데이터베이스 커밋 로그는 모든 트랜잭션 기록을 지속성 있게 보존함으로써 시스템의 상태를 일관성 있게 복구할 수 있도록 고안되었다. 이와 유사하게, 카프카에 저장된 데이터는 순서를 유지한 채로 지속성 있게 보관되면 결정적으로 읽을 수 있다. 또한, 확장시 성능을 향상시키고 실패가 발생하더라도 데이터 사용에 문제가 없도록 시스템 안에서 데이터를 분산시켜 저장할 수 있다. 1. 메시지와 배치 카프카에서 데이터의 기본 단위는 메시지 이다. 메시지는 키(key)라 불리는 메타데이터를 포함할 수 있다. 키는 메시지를 저장할 파티션을 결정하기 위해 사용된다. 가장 간단한 방법은 키값에서..

Kafka 2023.12.09

7가지 아키텍처 디자인 패턴 - 면접전에 알았으면 좋았을 것들

해당 포스트는 미디엄의 아티클을 번역한 내용이다. 이 블로그에 방문하셨다면 모던 아키텍처 디자인 패턴이 무엇인지 알고 있을거라 생각됩니다. 그러나 경험이 부족한 몇몇 친구들을 위해 아키텍처 디자인 패턴을 어플리케이션을 확장할 수 있도록 설계하는 방식이라고 생각하면 됩니다. 아키텍처 디자인 패턴은 간단히 말해 High Level Design 을 위한 디자인 패턴입니다. 현대의 문제에는 현대적인 해결책이 필요합니다. 어플리케이션이 기업 혹은 인터넷 수준의 사용자를 대상으로 하려면 확장성, 가용성, 보안성, 복원력을 갖춰야 합니다. 의심할 여지 없이 모든 메이저 리그 기업들은 이러한 어려움을 파악하고 해결할 수 있는 개발자를 찾고 있습니다. 이제 문제는 개발자가 이러한 문제를 어떻게 해결할 수 있을까요? 한 ..

Medium 2023.11.06

Spring Boot3 with QueryDSL - Part2

해당 포스트는 Meduim 의 아티클을 번역한 내용이다. 개요 이 글에서는 Spring Boot3 어플리케이션에서 QueryDSL을 설정하고 활용하는 방법을 설명합니다. Set up Dependency 메이븐 pom.xml 에 종속성을 추가하는 것부터 시작해 보겠습니다. Spring Boot 3 는 Jakarta EE 를 사용합니다. 따라서 querydsl-* 디펜던시에 jakarta 식별자를 추가해야 합니다. 또한, Spring Boot Starter Parent 에 querydsl.version 이 포함되어 있으므로 QueryDSL 버전에 대한 직접적인 사용이 가능합니다. 4.0.0 org.springframework.boot spring-boot-starter-parent 3.1.4 io.jay s..

Medium 2023.11.06

Spring Boot3 with QueryDSL - Part1

해당 포스트는 Meduim 의 아티클을 번역한 내용이다. 개요 이전 프로젝트에서 다음과 같은 이유로 Spring Data JPA 를 이용하여 data access layer 를 구현했습니다. 즉시 사용가능한 CRUD 작업 제공 손쉬운 사용자 정의 쿼리 생성 페이징과 정렬 지원 data access layer에 대한 쉬운 단위테스트 작성 클라이언트는 관계형 데이터베이스를 사용하고 있다고 말했으며, 어플리케이션 도메인은 집계 루트를 통해서만 액세스되도록 Bounded Context 개념을 구현하고자 했습니다. 이를 위해 JPA 연관 관계인 @OneToMany, @ManyToOne 등이 사용되었습니다. 모든 것은 클라이언트가 각 관련 자식 테이블 행 수를 표시해야 하는 기능을 요청하기 전까지 문제없이 작동했습..

Medium 2023.11.03

RestTemplate 사용법

Connection Pool 사용 RestTemplate 은 내부적으로 Apache HttpComponents 라이브러리를 사용합니다. http 요청 시, RestTemplate 은 매번 새로운 연결을 맺고 이로 인하여 대량의 요청을 처리할 때 상당한 오버헤드가 발생할 수 있다. 이를 회피하기 위해 RestTemplate 이 매번 새로운 연결을 맺는 대신에 재사용 할 수 있는 커넥션 풀을 구성하여 사용하는 것이 좋다. Spring 에서는 RestTemplate 을 위한 커넥션 풀을 구성할 수 있도록 HttpClientConnectionManager 인터페이스를 제공한다. @Bean public RestTemplate restTemplate() { HttpComponentsClientHttpRequestF..

spring 2023.10.30