일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘공부
- JPA스터디
- 기술면접공부
- Axon framework
- 기술공부
- 코테준비
- nestjs공부
- nestjs스터디
- 스프링부트
- JPA공부
- 플러터 공부
- JPA 공부
- 스프링
- JPA
- 스프링부트공부
- 프로그래머스
- 스프링 공부
- 자료구조공부
- Kafka
- JPA예제
- Flutter
- querydsl
- 자바공부
- 스프링공부
- nestjs
- 플러터 개발
- K8S
- 코테공부
- 카프카
- DDD
- Today
- Total
목록Develop (320)
DevBoi
EventListener가 어떻게 등록이되고 캐치가 될까? applicationEventPublisher는 Event를 받아, 리스너들에게 Event를 Publish해준다. 도대체 어떻게 무슨 원리로 Publish 되는걸까 ApplicationEventPublisher 인터페이스는 아래 4개의 곳에서 재 정의한다. 그리고, 보통은 AbstarctApplicatonContext에서 정의한 걸 따라간다. AbstractApplicationContext - publishEvent 중요한 부분은 아래이다. Multicaster에게 작업을 위임한다. SimpleApplicationEventMulticaster의 내용이다. 보면 알다싶이, 이벤트 타입을 받아오고, getApplicationListeners를 통해서..
생소한 단어들일 수 있다. DDD를 하지 않으면, 잘 모른다. 우선, 공부를 해보자. Notification은 전파, 전달에 대한 기능을 구현하는 모듈이다. Event가 발생했을때, Notification을 주어서, 특정 이벤트를 발생시키는것이다. Outbox패턴으로 작업한다면, 이벤트를 저장하고, 배치나 스케줄러를 통해서 적정 단위로 처리된다. 이벤트 소싱과 Notification은 다르다. Notification이란, Repository에서 애그리게잇을 가져올때 이벤트를 사용해서 재구성한다. 재구성 하기 위해서는 이벤트 소싱이 가장 중요하다. 특정이벤트를 관심있어 하는 주체에 대해, Notification이 발동된다. Notification은 이벤트 소싱에 저장된 일련의 애그리게잇, 주체에게 이벤트를..
멀티모듈, 단일 프로젝트로하면 어떤 장점이 있을까? 왜 굳이 멀티 모듈을 두는것일까? 시스템적으로 보장이되고, 빠른 개발 사이클을 가질 수 있다. 멀티모듈과 MSA가 어떤 연관이 있을까? MSA에서는 분리와 병합이 자주된다. 시스템의 분리,통합을 유연하게 만들어줄 수 있는 좋은 아키텍처를 만들 수 있다. 클린 아키텍처라는 책에서는 모놀리틱과 msa적인 변경이 자유로운 아키텍처가 좋은 아키텍처라고 얘기한다. 대부분 공통화된 코드를 분류해서 뽑아내려고하면 공통화된코드를 Common으로 모은다. 그러면, common이 계속 커지면서 개발하기 힘들어진다. 1. 스파게티 소스가 된다. Common이 커지면서 영향범위가 점점 커지기 마련이다. 즉 스파게티 소스가 되고 분리가 어려워진다. 쉽게 말하면 뭐가 뭔지 모르..
거지같던 레거시..가 아니고 내 코드를 좀더 바꿨다. (controller) import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Put, NotFoundException } from '@nestjs/common'; import { CorpService } from './corp.service'; import { JwtAuthGuard } from 'src/auth/auth-guard'; import { Corp } from './entities/corp.entity'; import { ApiTags, ApiOperation, ApiResponse, ApiQuery, ApiParam, ApiBody } from '@nestjs/sw..
저번에는 생성을 하는 API를 간단하게 개발했는데, 이제는 수정 및 삭제에 대한 API를 생성해보자 뭐 생성만 하면 사실 수정은 껌이다. 서비스는 기존 생성과 동일하다. 바뀐 부분이라면 dto,entity 가 변경됬다. (컨트롤러) @Put('') putCorp(@Body('corp') corpReqDto :CorpReqDto){ return this.corpService.saveCorp(corpReqDto); } (Dto) import { IsNotEmpty } from "class-validator"; import { Corp } from "./entities/corp.entity"; import { ClassSerializerInterceptor } from "@nestjs/common"; impo..
간단한데, 이것저것 삽질을 많이한것같다. 무튼 스프링에서 넘어가는 개발자들을 위해서 도움이 될까 한다. class-transform, class-validator, auto-mapper,Interceptor등을 살펴봤지만, 뭔가 간단하게 dto entity를 변환하는데 불필요한 기능? 좀, 의도와 다른 기능들이 보였다. 그래서 이건 나중에 적용하도록 하려고한다.(class-validator는 dto validation에 많은 도움을 줄것같다) 무튼, 시작 entity에 메소드를 추가했다(이건 jpa소스 작성 습관 같다) import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; import { CorpReqDto } from '../corp.re..
단순히 nestJS 관련 API를 개발했다. 스웨거를 붙였고, 해당 관련되서, 단순히 조회해서, 리턴하는 (DTO) 로직을 구현했다. typeorm 0.3버전 부터 좀 많이 바뀌어서, 버전은 0.2.45로 변경해서 작업을 했다. 1) 컨트롤러 import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common'; import { CorpService } from './corp.service'; import { JwtAuthGuard } from 'src/auth/auth-guard'; import { Corp } from './entities/corp.entity'; import { ApiTags, ApiO..
Axon framework 에서 command를 사용할때는 CommandBus, Event는 EventBus를 통해서 전달되었다 Query도 QueryBus를 통해서 해당 구현에 대한 Handler로 전달이 된다. 1. pointing query 해당 관련되서, 가장 간단한 구조이다. 각 핸들러를 미리 App에서 등록하고, 해당 요청이 오면 알맞은 Handler를 통해서 결과를 반환하는 것이다. 2. Routing 구조 멀티 모듈을 사용할때는 위와 같은 구조로 이루어 진다. 해당 관련되서, Axon Server에서 라우팅 테이블에 관련된 queryHandler를 등록해서, 사용자가 요청이 오면, 알맞은 앱으로 전달 및 결과를 요청 앱에 등록한다. 우선 해당 간단한 쿼리 클래스를 만들자 public cla..
오늘은 Fegin에 대해서 잘 쓰는 법을 알아보자 우선 Fegin이 뭘까? Fegin -Netfilx에서 개발하나, Http client binder이다. -Fegin을 사용하면, 웹 서비스 클라이언트를 (외부 호출하는 앱을) 쉽게 작성할 수 있다. -인터페이스, 어노테이션만 하면 끝이다. 1) Gradle implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' 2) Main class 추가 @SpringBootApplication @EnableFeignClients public class SmithStudyApplication { public static void main(String[] args) { SpringApplica..
공식 문서를 참조해서, 정리했다. Event Bus, Event Store의 개념에 대해서 정리를 하고, 쿼리에 대한 개념을 정리해보자. 1) Event Store Event를 읽고 쓰는데 있어, EventStore가 기본적으로 갖출 조건이 있다. 1. 이벤트는 추가만 가능하다, 입력 삭제,수정이 불가능하다. 2. 여러 이벤트가 하나의 트랜잭션에서 처리가 되어야 한다면, 트랜잭션 단위로 커밋,롤백 되어야한다. 3. 커밋된 이벤트는 유실되어서는 안된다. 4. 발행된 모든 Event중 Aggregate별로 데이터를 읽을 수 있어야 한다. 5. 모든 이벤트는 삽입된 순서대로 읽기가 가능해야한다. 6. Snapshot 저장소 지원 이벤트 저장소에, Aggregate에 대한 ID와 시퀀스 번호가 있다. 그리고 해..