본문 바로가기

반응형

개인공부

(151)
DDD 공부 : 마이크로서비스 마이크로서비스는 모노리스 시스템과 많이 비교된다. 옛날 방식이아닌 다른방식이라 생각하면 좀더 편할것 같다. 모노리스 시스템 - 애플리케이션이 한 덩어리로 구성 - 단일 프로세스 실행 - 한꺼번에 수정, 배포되어야 함 - 하나가 실패하면 모두 실패됨을 의미 당연한 이야기이지만 이러한 구조는 스케일 아웃을 하고싶어도 전체를 확장해야하는 이슈가 따른다. 예를들어 많은 기능중에 구매에대한 기능이 스케일아웃이 필요하다해도 모든 기능들에 대해서 확장을 해야한다. (효율적이지 못하다, 돈만 많으면 상관없다.) 마이크로서비스 - 서비스는 각기 독립적인 기능을 제공 - 서비스가 사용하는 저장소는 다른 서비스와 완벽히 격리됨 - 따라서 독립적으로 수정 가능하며 별도 배포 ,확장 가능 - 하나의 서비스 실패는 전체 실패가 ..
Reflection 과 Jdk동적 프록시 Reflection 다음과 같은 로직을 살펴보자. Hello target = new Hello(); //공통 로직1 시작 log.info("start"); String result1 = target.callA(); //호출하는 메서드가 다음 log.info("result={}", result1); //공통 로직1 종료 //공통 로직2 시작 log.info("start"); String result2 = target.callB(); //호출하는 메서드가 다음 log.info("result={}", result2); //공통 로직2 종료 공통로직을 이쁘게 묶는 방법이 필요하다... 이럴 때 사용하는게 reflection이다. //클래스 정보 Class classHello = Class.forName("hel..
인터페이스 프록시 VS 클래스 기반 프록시 패턴 인터페이스 기반 프록시 패턴 @Bean public OrderControllerV1 orderController(LogTrace logTrace) { OrderControllerV1Impl controllerImpl = new OrderControllerV1Impl(orderService(logTrace)); return new OrderControllerInterfaceProxy(controllerImpl, logTrace); } @Bean public OrderServiceV1 orderService(LogTrace logTrace) { OrderServiceV1Impl serviceImpl = new OrderServiceV1Impl(orderRepository(logTrace)); return n..
프록시 패턴 / 데코레이터 패턴 프록시란? 서버 이야기를 하다보면 프록시라는게 존재한다. 프록시는 클라이언트에서 서버를 호출할 때 들리는 일종의 중간 문이라고 생각하고 그 과정에서 여러가지 정보를 수정하거나 로그를 찍거나 할 수 있다. 프록시 패턴에서 프록시도 서버에서 말하는 프록시와 그 기능이 동일하다. 프록시 패턴 (접근제어, 캐싱) 어떠한 인터페이스 Subject라고 하는 인터페이스의 구현체라고 가정한다. Subject Interface public interface Subject { String operation(); } 해당 인터페이스를 구현하고 있는 현재 사용하고 있는 인스턴스이다. public class RealSubject implements Subject { @Override public String operation(..
템플릿 콜백 패턴 https://redbinalgorithm.tistory.com/721 전략 패턴 https://redbinalgorithm.tistory.com/720 템플릿 메서드 패턴 기본 로직 템플릿 메서드 패턴은 여러 반복되는 메서드들을 줄여 줄 수 있는 패턴이다. /// 고정로직 /// /// 비즈니스 로직 /// /// 고정로직 ///.. redbinalgorithm.tistory.com 이전에는 전략 패턴에 대해서 배웠다. Interface로 설계한 전략 아래 다향한 전략을 바꿔가면서 Context에서 호출하면서 사용한다. 이번에는 템플릿 콜백 패턴에 대해서 배워보겠다. 템플릿 콜백 패턴은 전략패턴과 다를게 없지만 DI(Dependency injection) 의존성 주입에서 사용하는 특별한 전략 패턴입니다..
전략 패턴 https://redbinalgorithm.tistory.com/720 템플릿 메서드 패턴 기본 로직 템플릿 메서드 패턴은 여러 반복되는 메서드들을 줄여 줄 수 있는 패턴이다. /// 고정로직 /// /// 비즈니스 로직 /// /// 고정로직 /// 다음과 같이 고정로직이 반복되고 비즈니스 로직만 redbinalgorithm.tistory.com 포스팅을 시작하며 이전 템플릿 메서드 패턴에 대해서 공부 했다. 전략패턴도 고정된 로직과 바뀌는 비즈니스 로직을 어떻게하면 좋은 유지보스로 적용할 수 잇을까? 라는 생각으로 나오게 된 패턴이다. 먼저! , 이전의 템플릿 메서드 패턴의 클라이언트 구조를 살펴보자. @Test void templateMethodV() { AbstractTemplateT templa..
템플릿 메서드 패턴 기본 로직 템플릿 메서드 패턴은 여러 반복되는 메서드들을 줄여 줄 수 있는 패턴이다. /// 고정로직 /// /// 비즈니스 로직 /// /// 고정로직 /// 다음과 같이 고정로직이 반복되고 비즈니스 로직만 바뀌는 경우에 사용할 수 있는 패턴이다. 다음과 같은 예시를 알아보자. @Test void myTemplateMethodPattern() { proccess1(); proccess2(); } private void proccess1() { // 고정로직 // long start = System.currentTimeMillis(); // 비지니스 로직 // System.out.println("TemplateMethodTest.proccess1"); // 고정로직 // long end = System...
MYSQL WHERE 조건 이해 묵시적 형변환 함정 서비스 쿼리를 작성하다 보면 이상은 없는데 성능이 이상하게 좋지 않을 때가 있다. 명시적 쿼리로 보기힘들다 (애플리케이션에서 변수를 바인딩하여 SQL 실행 등 여러 요인) 묵시적 형변환이 발생하여 테이블을 처음부터 끝까지 전부 체크해야 하는 테이블 풀스캔에 따른 현상을 방지하기 위한 팁에 대한 설명. 묵시적 형변환이란? 묵시적 형변환이란 조건절의 데이터 타입이 다를 때 우선순위가 높은 타입으로 형이 내부적으로 변환되는 것을 말한다. 정수 타입이 문자열 타입보다 우선순위가 높다. 만약 문자열과 정수값을 비교하는 쿼리가 들어오면 두개의 칼럼을 비교하고 우선순위가 높은 정수 타입으로 형변환 한다. 형 변환은 언제든지 발생할수 있지만... 만약 묵시적 형변환이 일어나는 대상이 인덱스라면?? ..

반응형