일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CI/CD
- AWS
- Java
- Github Actions
- rabbitmq
- Kafka
- 테스트 코드
- aop
- Redis
- JWT
- Intellij
- algorithm
- algorihm
- springboot
- docker
- 프로그래머스
- MSA
- 멀티 모듈
- 객체지향원칙
- swagger
- 어노테이션
- EC2
- trouble shooting
- querydls
- JPA
- testcode
- 유효성 검사
- spring boot
- DevOps
- Til
- Today
- Total
목록MSA (7)
개발노트
개요DDD의 계층구조는 내가 알고있던 계층구조와는 조금 다른 개념이라 정리해본다. DDD( Domain-Driven Design )에서의 계층 구조 ( Layered Architecture )DDD에서 계층형 아키텍처 ( Layered Architecture )는 애플리케이션을 여러 개의 독립적인 계층으로 나누어 각 계층이특정한 역할을 담당하도록 하는 설계 방식입니다. 이러한 계층 구조를 적용하면 관심사의 분리 (Separation of Concerns)를 실현할 수 있어 유지보수성과 확장성이 좋아집니다. DDD의 계층 구조DDD에서는 일반적으로 다음과 같은 4가지 계층을 사용한다.사용자 인터페이스 ( User Interface, UI ) 또는 프레젠테이션 ( Presentation ) 계층애플리케이션..

개요프로젝트 설계과정에서 DDD를 필수로 도입하고해야할 거 같아서 한번 정리해보겠다.자진해서 팀장을 한다고했는데 일을 키운게 아닌가 걱정이된다.학부에서 내가 팀장을 하면 프로젝트가 터지는 경험을 4번이나 했다.징크스를 깨고싶다 도메인 주도 설계 ( DDD ) 란?소프트웨어의 복잡성을 효과적으로 관리하기 위해 도메인( 비즈니 영역 )에 집중하는 설계 방식이다.즉, 단순히 코드 구조를 정리하는 것이 아니라 비즈니스 로직과 도메인 모델을 중심으로 시스템을 구축하는 방법론이다. 기술적인 요소보다는 비즈니스 도메인(업무 영역)에 집중하여 현실 세계의 개념을 코드로 표현하는 방식이다.변경에 유연하고 유지보수가 쉬운 시스템을 구축하는 것이 주 목표다.DDD의 핵심 개념 도메인 ( Domain )애플리케이션이 해결하..

개요오늘부터 프로젝트를 시작하게되었다 아마도 RabbitMQ 보단 kafka를 쓰게될 것 같다.redis도 kafka 도 처음 프로젝트에 적용하는거라 잘할 수 있을지 걱정이 앞선다.확실히 이해하고 넘어가기위해서 정리하면서 복습해본다. Kafka 란?kafka는 분산 스트리밍 플랫폼이자 메시지 큐 시스템이다. 원래 LinkedIn에서 로그 데이터를 처리하기 위해 개발되었으며,이후 Apach 프로젝트로 오픈 소스화 되었다. kafka는 주로 대규모 데이터 파이프라인 구축, 로그 수집, 실시간 데이터 스트리밍 및 메시지 큐로 사용된다. kafka의 주요 특징은 내구성, 확장성, 고가용성이다. 데이터는 파티션을 통해 분산 저장되며, 여러 브로커에서 데이터가 복제되어 장애에 강하게 설계되어있다. Kafka의 주요..

개요RabbitMQ 에 대해 강의로 처음 접하게되었다. 개념와 사용법에 대해 정리해본다. RabbitMQ 란?AMQP ( Advanced Message Queuing Protocol ) 기반의 오픈 소스 메시지 브로커 ( Message Broker ) 이다.애플리케이션 간의 비동기 메시지 처리를 지원하여, 높은 확장성과 안정성을 가진 분산 시스템을 구축할 때 유용하다. RabbitMQ의 핵심 개념RabbitMQ는 메시지를 모내는 Producer( 발행자 ) 와 메시지를 받는 Consumer ( 구독자 ) 사이에서 Broker 역할을 수행한다. 즉, Producer가 메시지를 Queue에 전달하면 Consumer가 메시지를 가져가는 방식으로 동작한다. 1. Message ( 메시지 ) Produc..

세션 클러스트링이란?세션 클러스터링은 여러 서버에 분산된 애플리케이션 환경에서 사용자 세션 정보를 중앙화하여 여러 서버에서 세션 정보를 일관되게 유지하고 관리할 수 있게 하는 기술이다. 이를 통해 사용자가 여러 서버에 요청을 보냈을 때, 각 서버에서 동일한 세션 정보를 사용할 수 있다 왜 세션 클러스터링을 사용하는가? MSA에서 각 서비스가 독립적으로 실행되며, 서비스 간의 통신이 빈번하게 이루어진다. 이떄 로드 밸런싱을 사용해 트래픽을 여러 서버나 인스턴스로 분산하는데, 각 요청이 어떤 서비스 인스턴스로 향할지는 예측할 수 없다. 사용자가 여러 서버에 분산된 애플리케이션으로 요청을 보내게 되면, 각 서버 간에 세션 정보를 공유하지 않으면 세션 상태를 유지할 수 없게 된다 그래서 세션 클러스터링을 통해..

CircuitBreaker해석하면 누전 차단기 라는 뜻이다.코드의 흐름을 회로라고 생각하고 과부하가 걸리거나 단락으로 인한 피해를 막기 위해 자동으로 회로를 정지 시키는 장치라고 정의되어있다한다. 서버에서 사용하면 외부 시스템이나 서비스와의 통시 중에 장애가 발생했을 때 시스템 전체로 장애가 전파되는것을 방지하는 메커니즘이다. 키 포인트는 차단 인 것 같다. 상태3가지의 보통 상태(OPEN , CLOSED, HALF_OPEN)와 특별한 상태(DISABLED, FORCED_OPEN)를 가지고있다.보통 상태 3가지에 대해서만 정리해보겠다. CLOSED (정상상태)정상적으로 동작하는 상태요청이 서비스로 전달되고 응답을 기다린다.실패율이 설정한 임계치보다 낮으면 현 상태를 유지함 평상 시의 호출되고 응답을 받..

개요MSA 강의를 수강중 각 서버마다 중복되는 모듈이 나오면 서버마다 새로 생성해줘야하는 불편함을 느꼈다.때마침 다른 수강생분께서 이 문제를 해결하는 글을 올려주셔서 참고해 내가 이해하기 편하게 다시 정리해보려한다. 프로젝트 구성 기존의 프로젝트들과 동일한 패키지 경로의 프로젝트를 하나 생성해준다.com.spring-cloud.eureka.** 경로로 구성해왔지만 지금 생성하는 프로젝트는 최상위 모듈로 사용할것이기 때문에나는 com.spring-cloud.eureka로 프로젝트를 생성했다. 그 다음 기존의 프로젝트들을 하위 모듈로 가져온다. 프로젝트안에 그냥 넣으면된다.(나는 그렇게 돌아갔다)방금 생성한 project 라는 이름의 프로젝트를 최상위 모듈로 사용하고 기존의 프로젝트들을 하위 모듈로 사용..