1. Swagger vs Spring Rest Docs[1] Swagger장점UI 가 깔끔하고 문서화를 사용하기 편리하다.테스트 해볼 수 있는 기능과 같은 편리한 기능을 제공한다.단점테스트없이 문서화가 가능해 로직에 대한 신뢰성을 보장하지 않는다.운영 코드에 문서화 관련 코드가 침투하여 가독성이 떨어진다.[2] Spring REST DOCS장점테스트를 기반한 문서화이므로 로직의 신뢰성을 보장한다.비즈니스 코드와 문서화 코드를 분리시켜 주기 때문에 코드 가독성을 향상시킬 수 있다.단점커스터마이징에 한계가 있고 문서화에서 제공하는 기능이 제한적이다. 2. Swagger vs Spring Rest DocsSpring REST Docs 기반하여 Swagger 의 장점을 활용하고 단점을 보완하여 사용할 수 있는 ..
1. K6 K6 는 확장 가능한 오픈 소스 부하 테스트 도구이다.K6 를 통해 애플리케이션과 인프라 안정성, 성능을 테스트할 수 있으며, 이를 통해 탄력적인 애플리케이션 구축을 지원한다.(1) Use CaseK6 사용자는 개발자, QA 엔지니어, SRE 등이 대상이다.부하 및 성능 테스트 : spike, stress, soak test 와 같은 고부하 성능 테스트를 지원한다.브라우저 성능 테스트 : K6 브라우저 API 를 통해 브라우저 기반 성능 테스트 실행 및 메트릭을 수집해 성능 문제를 파악할 수 있다.성능 및 종합 모니터링 : 최소한의 부하로 자주 테스트 실행이 가능하고 K6 스크립트 실행을 지원하는 Grafana Cloud 종합 모니터링을 사용할 수 있다.성능 테스트 자동화 : CI/CD 및 자..
Docker container 접속docker exec -it [docker-container-name] /bin/sh 토픽 관련 콘솔# 토픽 생성$ /bin/kafka-topics \--create \--bootstrap-server : \--topic # 파티션 갯수, 복제 갯수, 토픽 데이터 유지 기간 옵션 지정 토픽 생성$ /bin/kafka-topics \--create \--bootstrap-server \--partitions 10 \--replication-factor 1 \--topic \--config retention.ms=172800000# 특정 토픽 정보 확인 (파티션 번호, 리더 브로커 번호, 복제 계수, ISR)$ /bin/kafka-topics \--bootstrap-s..
메시지 큐를 사용하는 이유 메시지 큐(Message Queue) 는 분산 시스템에서 컴포넌트 간 데이터를 교환하기 위한 통신 방법이다. 메시지 큐는 비동기 커뮤니케이션을 지원하고 시스템 간 느슨한 결합(decoupling)을 제공한다. 이는 발신자와 수신자가 서로 의존하지 않고 각각의 컴포넌트의 개발 독립성과 확장성을 보장한다. 카프카 특징높은 처리량과 낮은 지연 시간 : 카프카는 대용량 데이터를 실시간으로 처리 가능하도록 설계되어 높은 TPS와, 실시간 데이터 스트림, 로그 집계, 이벤트 드리븐 아키텍처에 적합하다.메시지 내구성 : 기본적으로 카프카는 모든 메시지를 디스크에 영구 저장된다. Redis Pub/Sub 과 RabbitMQ 는 기본적으로 메시지가 유실되며 장애시 메시지가 유실될 수 있다. ..
1. Optimistic Locking in JPA[1] 동시성 제어를 위한 노력엔터프라이즈 수준에서 DB의 동시성 제어를 관리하는 것이 중요하다. 효과적으로 오류 방지가 가능한 multiple transaction을 핸들링할 수 있어야 한다.대표적인 예시 중, read 와 update 사이의 일관성을 보장해야 한다는 것이 상당히 중요하다. [2] Optmistic Lock In JPAJPA에서 낙관적 락을 사용하기 위해서는 엔티티에 버전을 명시하는 @Version 어노테이션을 추가해야 한다.Lock Mode에는 OPTIMISTIC과 OPTIMISTIC_FORCE_INCREMENT 두 종류가 있다.OPTIMISTIC: 버전 속성을 포함하는 모든 엔터티에 대해 낙관적 읽기 잠금을 얻는다.READ는 OPTI..
SummarySpringBoot 를 사용한다면 application.properties 를 선언해서 MessageSource 를 관리하자.MessageAutoConfiguration 은 MessageSource 빈을 선언하지 않으면 자동 설정된다.application.properties 에서 spring.messages 로 시작하는 property 를 탐색해서 MessageSource 를 생성한다. 1. MessageSource 설정 및 선언 방법[1] MessageSource 선언 방법(1) application.properties 선언하는 방법spring.messages.basename=message/messagesspring.messages.encoding=UTF-8 # defaultspring.m..