728x90
반응형

개발 32

[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..

개발 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

[실용주의 프로그래머] 8장 - 실용주의 프로젝트를 읽으며

개요 이번 챕터에서는 프로젝트가 진행됨에 따라 고려해야 하는 프로젝트 전체 차원의 문제들을 다룹니다. 8장에서 다루는 내용은 다음과 같습니다. 실용주의 팀 유비쿼터스 자동화 가차없는 테스트 결국은 모두 글쓰기 위대한 유산 오만과 편견 느낀점 및 정리 실용주의 팀 지금까지 이 책에서 다룬 내용은 개인이 실용주의 프로그래머가 되는데 도움이 되는 팁이었습니다. 그러나 이 팁은 개인뿐만이 아닌 팀 단위로도 적용이 가능한 팁으로, 개인이 실용주의 팀에서 일하게 된다면 개인이 실용주의적이 되는 것에 몇 배에 달하는 이득을 얻을 수 있다고 합니다. 지난 챕터들에서 다루었던 내용들을 팀 측면에서 생각하면 다음과 같습니다. 깨진 창문을 없애라: 품질은 팀의 이슈 -> 팀 전체가 깨진 창문을 용납하지 않아야 합니다. 삶은..

개발 2021.12.22

[실용주의 프로그래머] 7장 - 프로젝트 전에를 읽으며

개요 이번 챕터에서는 프로젝트를 시작하기 전에 생각할만한 것들을 다룹니다. 요구사항 분석이라던지 제약 조건이라던지.. 프로젝트를 시작하기 전부터 우리를 옭아매는 것들을 어떻게 지혜롭게 처리할 수 있을지 알아보도록 하겠습니다. 이번 챕터에서 다루는 내용은 다음과 같습니다. 요구사항의 구렁텅이 불가능한 퍼즐 풀기 준비가 되어야만 명세의 함정 동그라미와 화살표 느낀점 & 정리 요구사항의 구렁텅이 프로젝트를 시작하기 전에 요구사항의 구렁텅이에 빠지는 경우가 많습니다. 요구사항을 발견하는 것은 어렵고, 찾아낸 요구사항이 실제로 요구사항이 맞는지 확신하기도 어렵습니다. 그리고 마치 우리의 시간만 끝없이 잡아먹는 것처럼 보이기도 합니다. 이럴 때, 명확한 요구사항을 찾기 위해 우리가 해볼 수 있는 방법 중 하나는 우..

개발 2021.12.21

[실용주의 프로그래머] 6장 - 코딩하는 동안 해야 할 일들을 읽으며

개요 작성할 프로그램에 대한 설계가 끝나고나면 남은 일은 기계적으로 코딩을 하는 일이라고 생각하곤 합니다. 그러나 실제로 코딩은 기계적으로 할 일이 아니고 의도적으로 면밀히 생각하며 해야하는 일입니다. 특정한 상황에만 동작하는 우연에 맡기는 코딩을 하고 있지는 않은지 혹은 성능을 고려하고 있지는 않은지 등 생각할 거리가 많습니다. 이 챕터에서는 우리가 코딩을 할 때 생각할 일들, 해야 할 일들에 대해서 정리합니다. 챕터에서 다루는 내용은 다음과 같습니다. 우연에 맡기는 프로그래밍 알고리즘의 속도 리팩터링 테스트하기 쉬운 코드 사악한 마법사 느낀점 우연에 맡기는 프로그래밍 프로그래밍을 하다보면 우리가 할 작업을 제대로 이해하지 못한 상황에서 요구사항을 구현하게 되는 경우가 있습니다. 이런 경우에 발생할 수..

개발 2021.12.19

[실용주의 프로그래머] - 5장. 구부러지거나 부러지거나를 읽으며

개요 요구사항은 빠르고 지속적으로 바뀌기 때문에 이러한 변화에 맞추기 위해서는 가능한 느슨하고 유연한 코드를 작성해야합니다. 5장에서는 되돌릴 수 있는 의사 결정을 내릴 수 있는 구체적인 방법에 대해 설명하고 다룹니다. 5장에서 다루는 챕터는 다음과 같습니다. 결합도 줄이기와 디미터 법칙 메타프로그래밍 시간적 결합 단지 뷰일 뿐이야 칠판 느낀점 결합도 줄이기와 디미터 법칙 결합도는 모듈간의 의존 정도를 의미합니다. 해당 챕터에서는 서로 다른 개념들을 분리하여 결합도를 줄이는 방법을 다룹니다. 코드는 되도록 모듈로 구성하고 이들 간의 상호작용을 제한해야 합니다. 한 모듈이 변경되거나 교체된다 하더라도 다른 모듈들은 변경 없이 수행될 수 있기 때문입니다. 만약 결합도가 높아져 의존 관계가 복잡해진다면 다음과..

개발 2021.12.05

[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

[실용주의 프로그래머] - 4장. 실용주의 편집증을 읽으며

개요 완벽한 프로그램을 설계하는 것은 불가능합니다. 이 점을 명심하고, 실용주의 프로그래머는 어떻게 프로그램을 설계하고 작업하는지 알아봅시다. 목차는 다음과 같습니다. 계약에 의한 설계 죽은 프로그램은 거짓말을 하지 않는다. 단정적 프로그래밍 언제 예외를 사용할까 리소스 사용의 균형 느낀점 계약에 의한 설계 (Design By Contract) 계약에 의한 설계는 프로그램의 정확성을 높이기 위해서 프로그램이 갖춰야할 조건들을 계약서를 작성하듯이 문서화하고 검증하는 것을 말합니다. 예를 들어서 메소드 선언부 위에 주석으로 메소드에 대한 설명, 메소드의 조건, 실행 후 결과 등을 적는 것을 생각하면 쉬울 듯 합니다. 계약에 의한 설계를 하기 위해서는 고려해야할 것이 세가지 존재합니다. 선행 조건: 메소드가 ..

개발 2021.11.30
728x90
반응형