일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- K8S
- querydsl
- 플러터 공부
- 자바공부
- nestjs
- JPA예제
- 스프링공부
- 코테공부
- 알고리즘공부
- 스프링
- JPA 공부
- 코테준비
- 카프카
- 플러터 개발
- JPA스터디
- Axon framework
- nestjs스터디
- DDD
- 기술공부
- Kafka
- 스프링부트
- 스프링 공부
- JPA공부
- 기술면접공부
- nestjs공부
- Flutter
- 프로그래머스
- JPA
- 스프링부트공부
- 자료구조공부
- Today
- Total
목록Develop (320)
DevBoi
개체 모델을 만들고, 행위를 그 안에서 선언 서비스에서는 해당 행위에 대한 선언으로 로직을 처리한다. 액티브 레코드 패턴은 행위가 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); } } 뭐 이런식으로 진행이 되..
aggregate - 데이터 요소 command - api 후보 전통적인 방법 인 트랜잭션 스크립트 패턴이 있다. 트랜잭션 단위로 데이터베이스를 작업하는 것이다. 절자 지향 스크립트로 구현하고, 데이터베이스 직접 접근도 가능하다. -> 트랜잭션 간 비즈니스 로직이 중복 되기 쉽다, 추후 유지보수가 어려워진다. 이런 코드의 패턴은 무조건 거부는 아니고 유지보수하는데 불리하게 발전될 가능성이 높다. 왜냐면 최근 방문일시를 update하고 방문을 insert하는 것은 결국 추후에 if,else로 길게 발전될 가능성도 높고 각각의 메소드가 다른곳에서 중복적으로 사용될 가능성도 높기 떄문이다. 또한 만약에 코드에 sql 문이 있다면, DB의 기술에 대한 종속성이 존재해 버린다. 따라서 이런 코드는핵심 도메인 코드..
각기 다른 도메인들은 독립적으로 발전 할 수도 있지만, 상호작용해야한다. 각 접점이 존재한다. 이를 contract라고 한다. - 협력형 패턴 그룹 - 사용자,제공자 그룹 - 분리형 노선 결재자와 수취자에 대한 개념을 모델링을 했다고 하면, 각각 다른 도메인에 있어, 다른 위치에 있지만, 의미는 같다. 이를 같은 의미인지 통역해주는 과정이 컨텍스트 매핑이다. * 협력형 패턴 * 공유 영역 공유 영역이라고 하면, 라이브러리 영역을 공통으로 포함을 해서 배포를 각각 A,B를 한다. 마이크로 서비스할때는 공유 영역을 최소로 하는것이 중요하다. 대부분의 패턴은 공급자,소비자 패턴을 쓴다고 한다. 정보를 받을때 공급자 입장에서는 upstream, 소비자 입장에서는 downstream이라고한다. 상류의 모델에서, ..
마이크로 서비스를 식별할때 대중적으로 쓰이는 방법이다. 비지니스 도메인 : 기업의 주요활동영역, 회사가 제공하는 서비스 (sub domain) 하위 도메인: 비즈니스 활동의 세분화된 영역, 제공하는 서비스 단위 쉽게 얘기하면, 도메인과 서브 도메인으로 분류할 수 있다. 하위 도메인의 개념 하위 도메인은 도메인을 표현하는 영역이다. * 핵심 -회사가 경쟁업체와 다르게 수행하고 있는 것 -복잡성 높지만 BIz경쟁력 제공 * 일반 - 모든회사가 같은 방식으로 수행하는 비지니스 활동 - 복잡하고 구현하기 어려우나, 경쟁력을 제공하지는 않음, 알려진 영역 - 인증,권한 * 지원 - 회사 비지니스 지원활동 - 기능간단,어떠한 경쟁우위 제공하지 않음 - CRUD, ETL 유비쿼터스 언어 도메인 주도 설계에서는 도메인..
모놀리스 시스템이다. 3티어로, 클라이언트는 서버를 통해, 데이터 베이스를 호출하고 서버는 한덩어리로 구성되어있다. 레거시 적인 시스템의 문제는 있다. -한꺼번에 수정 배포되어야 해서, 다운타임이 전체적으로 존재한다. -하나 실패되면, 모두 실패된다. -단일 프로세스를 실행한다. -애플리케이션이 한덩어라로 구현이된다는 것 자체가 문제이다. -스케일아웃에 대한 진행이 전체적으로 다 진행이 되어야 한다. 또한 저장소마다 격리가 되어있기 때문에, 저장소별 스케일업이 가능하며, 각 저장소는 API에 대해 캡슐화된 장점이 있다. 또한 뭐.. 여러가지 언어로 API 및 저장소를 캡슐화 할수 있다는 것이 좋다.
사용을 위한 기본구성 1. JpaFactory package com.practice.demo.config; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class JpaFactory { @Autowired EntityManager em; @Bean ..
1. Build.gradle에 추가 // QueryDSL로 주석 처리한 부분만 신경쓰면된다. // QueryDSL buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '2.7.12-SNAPSHOT' id 'io.spring.dependency-management' version '1.0.15.RELEASE' // QueryDSL id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' co..
우선 프로젝트에서는 간단하게 JPA로 insert, delete,select하는 게 있다고 가정하자. 구조만 보이면, 어느정도 동작에 대해서는 알것이라고 기억이 날 것이라고 생각이 된다. 이제 테스트 코드를 작성해보자 우선 Spock를 위해서는 2가지 gradle상 추가를 해야한다. 1) 의존성 추가 + 플러그인 추가 2) 기본 Spock 사용 총 6단계로 나뉜다. 각 feature 메소드라고 부른다. setup,when,then,expect,cleanup,where 1) given,when,then 3가지 기본 사용법 2) Spring Boot Test 2-1) 컨텍스트에 빈 존재유무 테스트 뭔가 구리고 더럽다, 간단하게 바꾸자 2-2) 해당 서비스의 값이 올바른지 확인 사실 2-1을 했으면 거저 먹기..
HttpClient로 3rd파티로 많이 보낸다. 이때 커넥션 타임아웃이나, 리스폰스 타임아웃에 대한 설정을 추가로 해줘야 시스템이 안정적이다. 설정하는 법은 아래와 같다. 1. RequestConfig를 사용하는 방법 RequestConfig 를 생성하고, custom 하위에 여러개의 설정값들이 있다. connection timeout requestconnection timeout socket timeout 크게 이렇게 3가지를 저장하는데 의미는 이렇다. connection.timeout -> 원격 호스트와 연결을 설정하는 시간 socket timeout-> 원격 호스트한테 데이터를 받는 시간 connection timeout -> 연결 관리자 , 풀에서 대기하는 시간 위에서 두개는 원격호스트에 연결 및..
오늘은 GC log를 보는 법, 그리고 분석 및 모니터링하는 방법에 대해서 공부를 해볼까 한다. 기존 구조는 스프링이고, 해당 스프링 프로젝트에서 GC가 어떻게 동작되는지, 로그를 어떻게 남기는지에 대한 모니터링 및 분석을 진행해볼까한다. 1) 스프링 샘플 프로젝트를 생성한다. 걍 뭐 간단한, 일을 하는 이런 컨트롤러가 달린 녀석을 샘플 프로젝트로 만들어 보자 @RestController public class MyController { @GetMapping(value = "/test") public String test1() { MyDto d1 = new MyDto(); MyDto d2 = new MyDto(); return "test1"; } } 2) GC log 설정 -vmargs -Dosgi.re..