일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- forkandjoinpool #threadpool #jvm #async #non-blocking
- Dynamic Routing
- 단위테스트
- spring cloud netflix zuul
- test
- unittest
- BFS
- unit
- microservice architecture
- zuul
- netflix eureka
- springcloud
- docker
- java #jvm #reference #gc #strong reference
- spring cloud netflix eureka
- container image #docker #layer #filesystem #content addressable
- Java
- dfs
- spring cloud
- netflix
- Spring Data Redis
- 탐색
- 설계
- api-gateway
- reactive
- spring cloud netflix
- code refactoring
- Eureka
- 서비스스펙
- Today
- Total
phantasmicmeans 기술 블로그
자동화된 비즈니스 프로세스나 현실 세계의 문제가 소프트웨어의 도메인이다. 소프트웨어는 도메인으로부터 시작되고 뗄 수 없는 관계를 가지고 있다. 좋은 소프트웨어를 만들기 위해서는, 그 소프트웨어가 무엇에 관련되어있는지를 알아야한다. 즉 도메인에 대한 깊은 지식이 필요하고, 우리가 출발해야 하는 곳은 언제나 도메인이며 소프트웨어는 도메인을 모델링해야한다. 도메인 전문가와 이야기를 나누며 배운 여러 가공되지 않은 지식들을 기반으로 > 도메인을 추상화해야한다. 즉 추상화 > 도메인을 표현한 모델 모델 모델 == 대상 도메인에 대한 내부적 표현으로 설계와 개발 프로세스 내내 반드시 필요 하나의 도메인에는 모델로 만들기에는 정보가 너무 많기에 대부분은 고려할 필요조차 없다. 은행 소프트웨어는 고객의 주소를 반드시 ..
CDC(change data capture)는 데이터베이스 내 데이터에 대한 변경을 식별해 후속 처리를 자동화 하는 기술이자 개념이고, 단어 그대로 데이터의 변경본을 캡쳐한다 로 이해하면 더 직관적입니다. 보통 변경본 캡처 후 데이터 가공 및 타 데이터베이스로의 적재가 필요한 환경에서 주로 사용되고, 이벤트 기반의 아키텍처를 구성할때에도 자주 사용되는 것 같습니다. 이번 글에서는 MongoDB를 기준으로 변경본 캡쳐 이벤트를 subscribe 하는 방법 중 아래 2가지를 간단하게 공유 드리고자 합니다. Debezium connector for MongoDB MongoDB Change Streams Debezium Kafka Connector CDC 오픈소스 중 가장 많이 사용 되는 것이 Debezium ..
먼저 expectNext / assertNext / consumeNextWith (아래에서 설명할 thenConsumeWhile와 비교를 위해 간단히 추가 했습니다.) 가장 기본적인 연산자로는 expectNext / assertNext / consumeNextWith가 있습니다. 모두 결국 onNext signal을 기반으로 동작합니다만, 이 연산자들은 아이템이 emit 되지 않으면 에러를 발생시킵니다. 즉, empty publisher를 차단할 수 있습니다. (empty publisher 반환을 테스트하고 싶다면 아래와 같은 방법을 사용하거나 아래에서 설명할 thenConsumeWhile을 사용하면 됩니다.) @Test public void EMPTY_PUBLISHER_TEST() { Mono mono..
Key Points 불필요한 짐을 실은 무언가에 의존하면 예상치 못한 문제에 빠질 수 있다. ISP: 인터페이스 분리 원칙 인터페이스 분리 원칙은 아래 다이어그램에서 이름이 유래됨 다수의 사용자가 OPS 클래스의 오퍼레이션을 사용하고 각 유저들은 각자 다른 하나의 오퍼레이션만 사용한다. User1 -> op1 User2 -> op2 User3 -> op3 정적 타입 언어인 경우 User1이 op2,op3를 전혀 사용하지 않음에도 User1의 소스 코드는 이 두 메서드에 의존하게 됨 이러한 의존성으로 인해 OPS 클래스에서 op2 코드가 변경되면 User1도 다시 컴파일 해야함 따라서 아래처럼 변경 오퍼레이션 분리 인터페이스를 두고 오퍼레이션을 분리 User1 -> U10ps(op1) 에는 의존하지만 OP..
Key Point 안정된 추상에 의존시키며 구체에 의존 X 소스 코드 의존성과 제어 흐름은 반대로 -> 이 원칙이 의존성 역전 DIP 의존성 역전 원칙에서 말하는 유연성이 극대화된 시스템이란 소스 코드 의존성이 추상에 의존하며 구체에는 의존하지 않는 시스템 자바와 같은 정적 타입 언어에서 이 말은 import 구문이 오직 인터페이스나 추상 클래스 같은 추상적인 선언만을 참조해야한다는 뜻 구체적인 대상에 절대로 의존해서는 안됨 이러한 아이디어를 규칙으로 보기에는 비현실적 측면이 있음 Java String 구체 클래스 그 예시로 자바의 String은 구체 클래스이며, 이를 추상 클래스로 만드려는 시도는 현실성이 없음. 이 경우 구체 클래스에 대한 의존성은 벗어날 수 없고, 벗어나서도 안됨 String은 매우..