본문 바로가기

Develop

(317)
[NestJs] NestJS 환경 세팅 1. Nodejs 설치 https://nodejs.org/ko/download 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 여기서 설치하면된다. 2. NestJS CLI 설치 sudo npm i -g @nestjs/cli 3. 설치확인 nest --version nest new nestjs-test npm을 선택해주면, nestjs-test프로젝트 내에 많은 소스들이 자동 생성된다. 4. 프로젝트 확인
[NestJs] NestJs란? 새로운 사이드 플젝에서 NestJs라는 걸 사용하게 되었다. 아... 백엔드로 java script라니 ㅋㅋ ;; 무튼 공부해보자 파이썬은 장고 자바는 스프링 js,ts에서는 NestJS라고 한단다 ㅋㅋ 플러그인 확장과, 왠만한 기능은 내장하고 있고 스프링 관련 내용과도.. 좀 있다고한단다 ㅋㅋ 무튼 사실 이런저런 이점이 있으니까 누군가가 이렇게 쓰고, 사용하고 하겠지... 이런건 중요하지 않으니 바로 실습 및 세팅해서 진행해보자
[DDD] 도메인 모델 패턴 , Aggregate 모델링(1) Aggregate 패턴은 도메인 모델 패턴이라는 거대한 개념에서, 좀더 세분화 된 모델링을 할 수 있다. 거대한 도메인 모델 패턴에서 적당히 쪼개야 하는데 Aggreagte개념으로 좀더 세분하게 쪼개는 것이다. 도메인 모델은 행위 + 자료구조를 통해 비지니스 로직을 구현한다. 도메인 모델은 POJO로 구성한다. Aggreate가 뭘까? 서비스에서는 행위를 기준으로 도메인을 호출하는데 이를 서비스 단위로 Aggregate단위로 묶는것이다. 몇가지 타입을 공통으로 모델링을 해서 사용하라고 가이드를 한다. Value object 란 뭘까? DTO와 비슷해 보이지만, DDD에서는 해당 valueobject는 DTO와 다르다. 개념적으로 완전한 하나를 표현하고, 고유의 식별자를 가지지않는다. 저 3가지 중에 Co..
[DDD] 액티브 레코드 패턴 개체 모델을 만들고, 행위를 그 안에서 선언 서비스에서는 해당 행위에 대한 선언으로 로직을 처리한다. 액티브 레코드 패턴은 행위가 getter,setter,save()만 있는 것을 의미한다. 바람직한 것은 행위가 엔티티안에 들어가서 비즈니스 로직에 대한 처리를 담당해주는 것이 좋다. User라는 엔티티가 있다고 하면 주소변환에 대한 메소드 행위를 Member entity안에 넣는 것이다. 예를 들면 @Getter @Setter class Member{ private String city; private String dong; public void 주소바꾸기(String city,String dong){ this.setCity(city); this.setDong(dong); } } 뭐 이런식으로 진행이 되..
[DDD] 트랜잭션 스크립트 패턴 aggregate - 데이터 요소 command - api 후보 전통적인 방법 인 트랜잭션 스크립트 패턴이 있다. 트랜잭션 단위로 데이터베이스를 작업하는 것이다. 절자 지향 스크립트로 구현하고, 데이터베이스 직접 접근도 가능하다. -> 트랜잭션 간 비즈니스 로직이 중복 되기 쉽다, 추후 유지보수가 어려워진다. 이런 코드의 패턴은 무조건 거부는 아니고 유지보수하는데 불리하게 발전될 가능성이 높다. 왜냐면 최근 방문일시를 update하고 방문을 insert하는 것은 결국 추후에 if,else로 길게 발전될 가능성도 높고 각각의 메소드가 다른곳에서 중복적으로 사용될 가능성도 높기 떄문이다. 또한 만약에 코드에 sql 문이 있다면, DB의 기술에 대한 종속성이 존재해 버린다. 따라서 이런 코드는핵심 도메인 코드..
[DDD] 컨텍스트 매핑 각기 다른 도메인들은 독립적으로 발전 할 수도 있지만, 상호작용해야한다. 각 접점이 존재한다. 이를 contract라고 한다. - 협력형 패턴 그룹 - 사용자,제공자 그룹 - 분리형 노선 결재자와 수취자에 대한 개념을 모델링을 했다고 하면, 각각 다른 도메인에 있어, 다른 위치에 있지만, 의미는 같다. 이를 같은 의미인지 통역해주는 과정이 컨텍스트 매핑이다. * 협력형 패턴 * 공유 영역 공유 영역이라고 하면, 라이브러리 영역을 공통으로 포함을 해서 배포를 각각 A,B를 한다. 마이크로 서비스할때는 공유 영역을 최소로 하는것이 중요하다. 대부분의 패턴은 공급자,소비자 패턴을 쓴다고 한다. 정보를 받을때 공급자 입장에서는 upstream, 소비자 입장에서는 downstream이라고한다. 상류의 모델에서, ..
[DDD] 도메인 주도 설계 (이론) - 바운디드컨텍스트,유비쿼터스언어 마이크로 서비스를 식별할때 대중적으로 쓰이는 방법이다. 비지니스 도메인 : 기업의 주요활동영역, 회사가 제공하는 서비스 (sub domain) 하위 도메인: 비즈니스 활동의 세분화된 영역, 제공하는 서비스 단위 쉽게 얘기하면, 도메인과 서브 도메인으로 분류할 수 있다. 하위 도메인의 개념 하위 도메인은 도메인을 표현하는 영역이다. * 핵심 -회사가 경쟁업체와 다르게 수행하고 있는 것 -복잡성 높지만 BIz경쟁력 제공 * 일반 - 모든회사가 같은 방식으로 수행하는 비지니스 활동 - 복잡하고 구현하기 어려우나, 경쟁력을 제공하지는 않음, 알려진 영역 - 인증,권한 * 지원 - 회사 비지니스 지원활동 - 기능간단,어떠한 경쟁우위 제공하지 않음 - CRUD, ETL 유비쿼터스 언어 도메인 주도 설계에서는 도메인..
[DDD] 마이크로서비스 개념 모놀리스 시스템이다. 3티어로, 클라이언트는 서버를 통해, 데이터 베이스를 호출하고 서버는 한덩어리로 구성되어있다. 레거시 적인 시스템의 문제는 있다. -한꺼번에 수정 배포되어야 해서, 다운타임이 전체적으로 존재한다. -하나 실패되면, 모두 실패된다. -단일 프로세스를 실행한다. -애플리케이션이 한덩어라로 구현이된다는 것 자체가 문제이다. -스케일아웃에 대한 진행이 전체적으로 다 진행이 되어야 한다. 또한 저장소마다 격리가 되어있기 때문에, 저장소별 스케일업이 가능하며, 각 저장소는 API에 대해 캡슐화된 장점이 있다. 또한 뭐.. 여러가지 언어로 API 및 저장소를 캡슐화 할수 있다는 것이 좋다.