분류 전체보기

CQRS에 대한 정보는 아래 글을 참고해주세요. https://saysimple.tistory.com/196 [CQRS] CQRS란? CQRS CQRS란 Command and Query Responsibility Segregation 의 약자입니다. 저장소로부터 질의/명령을 이용하여 읽기/ 쓰기 작업을 분리하여 애플리케이션의 성능, 확장성, 보안성 등을 증가시키는 방법입니다. saysimple.tistory.com 서론 스프링 부트에서는 CQRS를 구현하기 위해 Axon 라이브러리를 사용합니다. baeldung의 글을 참고해 스프링 부트에선 어떻게 CQRS를 구현하는지 알아보겠습니다. 해당 예제에선 Axon Server를 이벤트 스토어로 사용하며 Postman을 이용해 테스트합니다. 이번 글에선 API와..
CQRS CQRS란 Command and Query Responsibility Segregation 의 약자입니다. 저장소로부터 질의/명령을 이용하여 읽기/ 쓰기 작업을 분리하여 애플리케이션의 성능, 확장성, 보안성 등을 증가시키는 방법입니다. 명령(Command): Aggregation을 중심으로 데이터의 변화를 만듭니다. 주로 쓰기 작업을 실행합니다. 질의(Query): Aggregation을 중심으로 데이터를 가져옵니다. 주로 읽기 작업을 실행합니다. CQRS는 읽기/쓰기 모델을 분리하여 읽기 작업에 보다 높은 트랜잭션에서의 자유를 부여합니다. 주로 MongoDB와 같은 NoSQL을 사용하여 읽기 성능을 증가시킵니다. 쓰기 작업에는 PostgreSQL과 같은 RDBMS를 사용해 트랜잭션을 보장합니다..
Map 인터페이스에서 Java 8 버전에 추가된 일부 API에 대해 살펴봅니다. putIfAbsent() compute() computeIfPresent() computeIfAbsent() getOrDefault() 해당 코드는 Map 인터페이스의 구현체인 HashMap을 기준으로 정리하였습니다. 1. putIfAbsent(K key, V value) Map - putIfAbsent() putIfAbsent() 메서드는 네이밍에서 유추할 수 있듯이, 다음과 같이 동작합니다. Key가 존재할 경우: Value 변경 없이 기존에 존재하는 Key의 Value를 리턴합니다. Key가 존재하지 않는 경우: Key에 해당하는 Value를 저장한 후 null을 리턴합니다. HashMap - putIfAbsent() ..
시작하기전 예제코드는 여기에 있습니다. JUnit5 문서기반으로 번역과 공부하고, 실졔로 사용하면서 필요한 내용을 조금 보강했습니다. 다른 곳에 공유해도 좋지만, 출처만 남겨주시면 됩니다. JUnit5 이전 JUnit 버전과 다르게, JUnt5는 세개의 서브 프로젝트로 이루어져 있다. JUnit5은 JUnit Platform + JUnit Jupiter + JUnit Vintage 이 세개가 합친 것이다. JUnit Platform JUnit Platform은 JVM에서 테스트 프레임워크를 실행하는데 기초를 제공한다. 또한 TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있다. JUnit Jupiter JUnit Jupiter는 JUnit 5에서 테스트를 작성하고 확장을 하기 위한 새로..
리뷰 엔티티에서 ColumnDefault를 사용해 리뷰를 만들 때 rating을 0으로 초기화 하고자 했는데 아래와 같은 에러를 마주하였다.java.sql.SQLException: Column 'rating' cannot be null자바의 rating 값이 null 로 전달된 것이다. 왜 이렇게 되었을까?@ColumnDefault()필자가 사용한 코드는 아래와 같다. ColumnDefault에 값이 0으로 올바르게 설정되어 있다. @Column(nullable = false) @ColumnDefault("0") private Integer rating;하지만 hibernate에선 create-drop일 때만 default 쿼리를 날린다.그렇기 때문에 컬럼에 default 설정이 되지 않..
장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행하여 장애 회피 마틴 파울러는 루비를 이용해서 timeouts에 대해 보호하는 간단한 예를 보여준다. 아래 브레이커는 블럭을 저장하고, thresholds, timeouts, mornitoring과 같은 파라미터를 저장한다. 그리고 상태가 종료되면 리셋된다. class CircuitBreaker... attr_accessor :invocation_timeout, :failure_threshold, :monitor def initialize &block @circuit = block @invocation_timeout = 0.01 @failure_threshold = 5 @moni..
Say simple
'분류 전체보기' 카테고리의 글 목록 (2 Page)