본문 바로가기

전체 글79

5.4 Ingress(인그레스) 5.4 Ingress 를 통한 서비스 외부 노출 인그레스가 필요한 이유 로드밸런서 서비스는 자신의 public IP 주소를 가진 로드밸런서가 필요하지만, 인그레스는 한 IP 주소로 여러 서비스에 접근이 가능하도록 지원 client 가 HTTP 요청을 인그레스에 보낼 때, 요청한 호스트와 경로에 따라 요청을 전달할 서비스가 결정 인그레스(Ingress)란 ? 외부에서 들어온 HTTP / HTTPS 를 클러스터 내부 서비스로 라우팅 인그레스는 어플리케이션 계층(HTTP) 에서 동작하며, 서비스가 할 수 없는 쿠키 기반 세션 어피니티 등과 같은 기능을 제공 인그레스 컨트롤러 인그레스를 사용하기 위해서는 클러스터 내에 인그레스 컨트롤러가 실행되어야 한다. 현재 k8s 에서 공식 지원하는 Ingress Contr.. 2023. 12. 10.
도메인 주도 설계 첫걸음 - 9장 : 커뮤니케이션 패턴 (아웃박스 패턴 /사가 패턴 /프로세스 관리자 패턴) 09. 커뮤니케이션 패턴 바운디드 컨텍스트 간 커뮤니케이션을 용이하게 애그리게이트 설계 원칙의 제한 사항 해결, 여러 시스템 컴포넌트에 걸쳐 비즈니스 프로세스 조율 역할 모델 변환 바운디드 컨텍스트 : 유비쿼터스 언어 모델의 경계 만약 다른 바운디드 컨텍스트가 협력할 의향이 있다면? 바운디드 컨텍스트를 파트너십을 통해 통합 가능 : 프로토콜 조정 및 팀간 커뮤니케이션으로 해결 가능 협력 기반 통합 방법 : 공유 커널 방법 사용 (제한된 부분을 공동으로 함께 발전시킴) 업스트림(제공자) / 다운스트림(사용자) 이 때 다운스트림이 업스트림의 바운디드 컨텍스트 모델을 따를 수 없을 때 처리 방법은 2가지 다운스트림 측에서 ACL(충돌방지계층) 사용하여 업스트림 모델을 조정하여 사용 업스트림 측에서 OHS(오픈.. 2023. 7. 21.
도메인 주도 설계 첫걸음 - 8장 : 아키텍처 패턴 (계층형 /CQRS / 포트와 어댑터) 8. 아키텍처 패턴 코드베이스가 처리해야 할 다양한 관심사로 인해 비즈니스 로직이 다양한 구성요소에 흩어지기 쉬움 사용자 인터페이스 / DB에 의해 구현 혹은 다양한 구성요소에 중복 관심사 구현 시, 엄격히 구성하지 않는다면 코드베이스의 변경에 대한 제약 계층형 아키텍처 고전적 아키텍처 : PL(Presentation layer) + BLL(Business logic) + DAL(Data access) 프로젠테이션 계층 사용자와 상호작용 하기 위한 인터페이스 구현 ex) GUI/CLI/연동 API/메시지 브로커 이벤트 구독/이벤트 발행 프로그램의 퍼블릭 인터페이스 비즈니스 로직 계층 소프트웨어의 중심 액티브 레코드 또는 도메인 모델과 같은 비즈니스 로직 패턴 적용 엔티티 / 규칙 / 프로세스 데이터 접근.. 2023. 6. 6.
도메인 주도 설계 첫걸음 - 7장 : 이벤트 소싱 7. 시간 차원의 모델링 이벤트 소싱 도메인 모델 패턴 : 도메인 모델 패턴과 동일한 전술적 패턴(밸류 오브젝트, 애그리게이트, 도메인 이벤트)을 사용 차이점 : 애그리게이트의 상태를 저장하는 방식이 다름 이벤트 소싱 도메인 모델 : 이벤트 소싱 패턴을 사용하여 애그리게이트 상태 관리 애그리게이트의 상태를 유지하는 것이 아닌 각 모델에 대한 변경사항에 대한 도메인 이벤트 생성, 애그리게이트 데이터에 대한 원천 데이터로 사용 이벤트 소싱 현재 상태만 저장되어 있다면, 그 이전에 어떤 일이 발생했는지 분석 불가 이벤트 소싱 패턴 : 데이터 모델에 시간 차원을 도입 이벤트 소싱 기반 시스템은 애그리게이트의 수명주기의 모든 변경사항 이벤트 유지 상태에 대해 도메인 이벤트로부터 쉽게 프로젝션 가능 프로젝션 : 쓰.. 2023. 4. 22.
도메인 주도 설계 첫걸음 - 6장 : 복잡한 비즈니스 로직 다루기 6. 복잡한 비즈니스 로직 다루기 도메인 모델 에릭 에반스의 비즈니스 도메인 도메인의 하위 모델과 코드를 연결하기 위해(복잡한 비즈니스 로직) 사용 애그리게이트, VO, repository 흔히 전술적 도메인 주도 설계라고 얘기하지만, 저자는 그냥 해당 패턴을 도메인 모델로 칭하고 애그리게이트와 VO는 구성요소라고 설명한다. 구현 도메인 모델은 행동과 데이터를 모두 포함하는 객체 모델 복잡성 도메인 비즈니스 로직이 이미 본질적으로 복잡하기에 모델링에 사용되는 객체가 모델에 우발적 복잡서을 추가해선 X 이러한 모델 객체는 Plain Old Object라고 한다. 인프라 구성 요소 및 프레임워크에 의지/협업 X, 비즈니스 로직 구현하는 객체 VO(Value Object) 복합적인 값에 의해 식별되는 객체 c.. 2023. 4. 14.
도메인 주도 설계 첫걸음 - 5장 : 간단한 비즈니스 로직 구현 5. 간단한 비즈니스 로직 구현 트랜잭션 스크립트 패턴 프레젠테이션으로부터 단일 요청을 처리하는 여러 프로시저를 모아, 비즈니스 로직을 구현 (시스템의 퍼블릭 인터페이스 - 마틴 파울러) 트랜잭션 스크립트 패턴 : 프로시저를 기반으로 시스템의 비즈니스 로직을 구성, 각 프로시저는 퍼블릭 인터페이스를 통해 시스템 사용자가 실행하는 작업 구현 각 프로시저는 간단하고 쉬운 절차지향 스크립트로 구현 각 프로시저는 트랜잭션 동작을 통해 각 작업이 성공/실패할 수 있고, 유효하지 않은 상태를 만들면 안된다. DB.StartTransaction(); var job = DB.LoadNextJob(); var json = LoadFile(job.Source); var xml = ConvertJsonToXml(json);.. 2023. 4. 14.