728x90
반응형

전체 글 8

[K8S] Node Affinity 간단하게 사용해보기

Node Affinity Node Affinity는 Kubernetes에서 Pod가 실행될 특정 노드를 선택하는 방법을 지정하는 기능입니다. 예를 들어서 현재 K8S 클러스터에는 controlplane, node01이라는 노드가 존재합니다. controlplane이라는 노드에서는 k8s 클러스터를 운영하는데 중요한 컴포넌트만 존재합니다. 따라서 클러스터 운영과 관련 없는 컴포넌트들은 node01에만 스케줄링하고 싶습니다. 이때 사용할 수 있는 방법 중 하나가 Node Affinity입니다. Pod가 스케줄 될 Node에 label 설정 Node Affinity를 사용하기 위해서는 pod가 스케줄링될 node를 선택하는데 기준이 될 label이 node에 필요합니다. 확인해 보니 node01에는 기존에 ..

개발 2024.01.30

[RabbitMQ] - 3. Spring boot로 Work Queue에 다수의 consumer를 등록하여 task 처리하기

개요오늘은 Work Queue를 등록해서 resource-intensive task(리소스를 많이 사용하는 작업)를 다수의 consumer에게 분배하는 방법을 spring boot로 작성해보려고 합니다.작업의 핵심은 Work Queue를 등록하여 리소스를 많이 사용하는 작업을 바로 수행하지 않고, 나중에 수행하도록 스케쥴링하며 요청자는 작업이 완료될 때까지 기다리지 않도록 하는 것입니다. 준비준비해야 할 것은 다음과 같습니다.1) 프로젝트 생성2) Queue, Consumer, Producer 설정 1) 프로젝트 생성https://start.spring.io/프로젝트를 생성하겠습니다.spring boot를 사용하고 의존성은 간단하게 lombok과 RabbitMq만 추가하도록 하겠습니다. 2) Queue,..

개발 2024.01.14

QueryDsl 설정 (인텔리제이, maven)

인텔리제이 + maven 사용해서 QueryDSL을 설정해봅시다. 필요 라이브러리 querydsl-apt: 쿼리 타입(Q-Class)을 생성할 때 필요 querydsl-jpa: QueryDSL JPA 라이브러리 com.mysema.querydsl querydsl-apt 3.6.3 provided com.mysema.querydsl querydsl-jpa 3.6.3 QueryDsl을 사용하기 위해 필요한 라이브러리는 위와 같습니다. pom.xml을 열어서 안에 추가해주세요. 버전은 사용하시는 환경에 맞게 설정하시면 됩니다. Q Class 생성 플러그인 추가 QueryDSL을 사용하려면 엔티티를 기반으로하는 쿼리용 클래스를 생성해야 합니다. 해당 클래스를 컴파일시 자동으로 생성하기 위해서 플러그인을 추가해주..

개발/자바 2022.04.05

JPQL - Fetch join? with 테스트 코드

Fetch Join? SQL에서 이야기하는 조인의 종류가 아니라 JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 한 번에 같이 조회하는 기능으로, join fetch 명령어로 사용할 수 있다. 예제를 진행하기에 앞서 사용할 클래스는 다음과 같다. @Entity @Table(name = "members") public class Member{ @Id @Column(name= "member_id") private Long id; ​ @Column private String name; ​ @ManyToOne(fetch = FetchType.Lazy) // 테스트를 위해 지연 로딩을 사용한다. @JoinColumn(name="team_id") private Team team; } ​ @E..

개발 2022.04.03

[RabbitMQ] - 2. Spring boot로 RabbitMQ 사용하기(hello world!)

개요 스프링 왕국의 자바 왕자님을 모시는 충신으로써 오늘은 스프링 부트를 사용해서 RabbitMQ 공식 사이트의 첫 번째 예제 프로젝트, hello world!를 진행하려고 합니다. RabbitMQ를 설치한 것을 전제로 진행합니다. https://primayy.tistory.com/74 아직 설치하지 않았다면 위 링크부터 차근차근 진행합시다! [RabbitMQ] - 1. Mac에서 RabbitMQ 설치하기 개요 메시지큐를 간단하게 사용해보고 싶어서 RabbitMQ를 설치하려고 합니다. 차근차근 같이 설치하고 실행도 해봅시다. 목차는 다음과 같습니다. RabbitMQ 설치 실행 포그라운드 실행 백그라운드 primayy.tistory.com RabbitMQ 핵심부터 알자! RabbitMQ 예제를 작성하기 전..

개발 2021.11.30

[RabbitMQ] - 1. Mac에서 RabbitMQ 설치하기

개요 메시지큐를 간단하게 사용해보고 싶어서 RabbitMQ를 설치하려고 합니다. 차근차근 같이 설치하고 실행도 해봅시다. 목차는 다음과 같습니다. RabbitMQ 설치 실행 포그라운드 실행 백그라운드 실행 GUI 관리 페이지 확인 유저 생성 및 삭제 GUI로 유저 생성 및 삭제 CLI로 유저 생성 및 삭제 1. RabbitMQ 설치 hombrew를 설치해놨다면 rabbitmq 설치는 간단합니다. 터미널을 열고 brew install rabbitmq를 입력하면 됩니다. # 설치 전에 업데이트할 항목이 있는지 확인하고 업데이트 해줍시다. brew update # rabbitmq 설치 명령어입니다. brew install rabbitmq 설치를 완료하면 위처럼 완료 메시지를 볼 수 있습니다. - 기본 포트: ..

개발 2021.11.24

정적 팩토리 메소드 방식은 API 변경없이 싱글턴이 아니게 변경할 수 있다. (보충 설명)

이전에 작성했던 이펙티브 자바 아이템 3: 싱글턴 보증 방법 정리에서 제대로 이해하지 못했던 부분이 있었다. 바로 정적 팩토리 메소드 방식으로 싱글턴을 만드는 방법에서 장점으로 존재했던, API를 변경하지 않고도 싱글턴이 아니게 변경할 수 있다는 부분이었다. API를 변경하지 않고 싱글턴이 아니게 변경할 수 있다는 것을 코드를 예시로 들어 작성하면 다음과 같다. 이전에 작성했던 정적 팩토리 메소드 방식의 싱글턴 인스턴스를 얻는 방법이다. public class YongCoding{ // 인스턴스를 얻기 위해서는 정적 팩토리 메소드를 이용해야한다. private static final YongCoding INSTANCE = new YongCoding(); // private 생성자 private YongC..

개발/자바 2021.06.13

CentOS7 MySQL 포트 변경하며 생긴 이슈

CentOS6 의 EOL로 인해 기존에 사용하던 서버의 OS를 업그레이드 해야 했다. 기존에 사용하던 서버는 통합 테스트를 위해 사용한 단순한 가상 서버였고, Vagrant를 이용해서 서버를 띄웠기 때문에 CentOS7로 업그레이드 하는 것은 어렵지 않았다. VagrantBox Cloud에서 사용할 CentOS7 image를 다운받고, 필요한 패키지들을 순서대로 설치했는데 MySQL을 설치하고 설정하는 부분에서 문제가 생겼다. 문제 기본적으로 MySQL을 실행하면 3306 포트를 사용한다. 그러나 기존에 사용하고 있던 서버는 다른 포트를 사용했기 때문에, 테스트에 사용했던 스크립트들과의 호환성을 위해 포트 번호를 맞춰줄 필요가 있었다. 이를 위해 /etc/my.cnf 파일을 수정하여 사용할 포트 번호를 ..

개발 2021.05.07
728x90
반응형