| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- java 팩토리얼 개수
- spring mongodb switch
- kotiln functional interface
- 안정해시
- 자바 1676
- Spring ipfs
- Claude Intelij 연결
- java 파티
- 익명 객체 @transactional
- spring mongodb
- java 1509
- ipfs singletone
- ipfs bean
- java 1238
- 백준 1504 java
- go
- spring mongoTemplate switch
- spring mongoTemplate
- java 백준 1509
- javav 1676
- rabbitmq 싱글톤
- kotiln const val
- Java Call By Refernce
- mongodb lookup
- 자바 백준 팩토리얼 개수
- 백준 연결요소 자바
- nodejs rabbitmq
- kotiln const
- 백준 특정한 최단 경로
- 백준 2252 줄세우기
- Today
- Total
목록2025/02 (7)
공부 흔적남기기
Axon을 사용해서 EDA 구현중 계속해서 저 에러가 발생했다.저 에러의 원인은 Event를 저장하기 위해서 Sequence 번호 1을 기대하는데 계속해서 0이 나온다는 말이다.즉 이미 Axon Event 저장소에 해당하는 AggregateId에 Sequence 번호 0 이 존재하는데 계속해서 0이 나온다는 말이다. 나의 실수를 update를 할때 @CommandHandler를 계속 생성자를 통해서 만들었다.Axon은 생성자일떄는 항상 Sequence 번호를 0으로 주는 것 같다.생성자를 handle 함수로 변경하니 잘 진행되었다. 즉 해당 에러가 뜰떄는 하나의 AggregateIdentifer에 대해 생성자를 여러번 호출하는 것이 아닌지 확인해보아야한다.
EDA란 Event Driven Architecture로 Event Sourcing을 기반으로한 아키텍쳐이다.일반적으로는 Persistence Database를 사용해서 Sync하게 Request를 받고 Processing을 한후 Response를 주는 Flow 였다. 이와 달리 EDA에서는 Request가 들어오면 Queue 에 Event를 Produce 한 후 Consume Service가 이를 처리하는 방식이다. Event 관리를 위한 데이터베이스가 존재하며 실제 Domain DB에는 가장 최신 Version의 이벤트가 들어간다. EDA를 사용하면 서비스간 강결합이 낮아지고 서비스간 응집도가 올라가며 데이터 정합성 undo에 대해 관리하기 용이해지고 이벤트에 대해서 일괄 연산도 가능하며, 오류가..
SAGA 패턴은 MSA와 같은 분산 서비스에서 하나의 트랜잭션으로 묶어서 연산을 수행하고 싶을 때 사용한다. Event 기반이며 Kafka와 같은 Message Queue를 이용하여 Async하게 Event를 주고 받는다. Sync로 동작하게 되면 특정 서비스의 장애나 대기로 인한 Data Lock, Transcation Context 소실 등 문제가 발생할 수 있고각 서비스간 강결합이 생기게 되어 관리가 어려워진다. SAGA Pattern은 각 서비스에서 다른 서비스의 성공/실패를 판단하지 않고 먼저 commit 하는데 그 이유는 위와 같이 Data Lock과 Transaction Context 소실 문제 때문이다. 다른 서비스가 실패 하게되면 보상 트랙재션을 통해서 RollBack 하게 된다. 이때 ..
1. Partition 의 개수하나의 Topic은 여러개의 Partition 을 가질 수 있는데 충분한 브로커가 있다는 전제하에서 Partition을 증가시키면 Consumer가 병렬로 처리하기 때문에 cosume 속도가 상당히 올라갈 수 있다.예를들어 하나의 Topic에 대해 기존에는 1개의 Partition만 사용했다면 속도가 1이였을 것이다.하지만 Partition의 개수를 n개로 조정한다면 cosumer가 동시에 n개에 partion에 병렬로 연결하여 처리하므로 최대 n배가 빨리질 수 있는 것이다. 2. Partition Replication FactorKafka는 고성능도 중요하지만 고가용성도 중요하다. 적절한 Replica개수를 조정해서 고가용성을 가능하게 만들자.이때 Replica를 많이 만..
헥사고날 아키택쳐란클린 아키텍쳐의 일종으로 Adapter와 Port를 통해서 내부 비즈니스로직이 외부의 영향을 받지 않도하고 항상 저수준 모듈이 고수준 모듈에 의존하게 하는 아키텍쳐이다. 즉 개발자는 외부 infra에 상관없지 비즈니스 로직만 잘 짜면 되는 관심의 분리를 높이고 응집도를 높이는 아키텍쳐이다. 구현Adpater를 통해 Request가 들어오면 해당 Adapter는 Port를 호출하고 Port의 구현체인 비즈니스 로직이 핵심 로직을 처리한다.또한 비즈니스 로직에서 외부 API나 DB를 호출할때역시 Port를 통해 호출하고 Apdater를 통해 나간다.Domain을 분리하고 DIP를 통해 외부와의 결합을 떨어뜨리고 외부의 변화가 내부에 영향을 미치지 않도록 한다. 고민근데 고민인게 이것 또한 ..
Microservice ArcitectureMSA란최근에 독립적으로 배포가능한 서비스들을 디자인하는 아키텍쳐로 MSA가 떠오르고 있다.MSA에 대해 정확한 정의는 내리기 어렵지만비즈니스 능력(capability), 배포 자동화(automated deployment), 엔드포인트의 지능(intelligence in the endpoints) (dump pipeline), 데이터와 개발 언어의 분산화(decentralized control of language and data)라는 특정 공통 특징이 있다. MSA의 근황MSA라는 새로운 용어가 등장했다. 우리는 이러한 새로운 것들을 대해 경멸적인 태도로 지나가는게 본래 성향이지만,MSA는 용어적으로 우리에게 좀 더 찾아보게하고 어필하는 소프트웨어 시스템을 ..
ROUND -> 소수점 반올림할 경우 round(number,0) 소수점 둘째자리부터 반올림할경우 round(number,1) 뒤에 숫자는 소수점 자리개수를 의미한다. https://school.programmers.co.kr/learn/courses/30/lessons/151136 예시 풀어보기Group 한 다음 Group Key로 Count 조건 처리 싶을 경우 HAVING COUNT(*) > 1이런식으로 처리가 가능하다 https://school.programmers.co.kr/learn/courses/30/lessons/131536 예시 풀어보기 날짜간 계산은 DATEDIFF를 사용한다 사용기간을 구할때 5일에시작해서 6일에 끝났으면 2일이므로 +1을 해줘야한다DATEDIFF(END_DATE, S..