본문 바로가기

분류 전체보기

(26)
DDD와 Aggregate Aggregate는 DDD(Domain-Driven Design)의 한 패턴이다. 마틴파울러 DDD에서 aggregate는 하나의 유닛으로 취급할 수 있는 도메인 오브젝트의 집합이다. 예로, 분리된 Order(주문)과 Line-items(주문 아이템) 객체는 하나의 주문이라는 단일 aggregate으로 다루기 유용하다. 하나의 aggregate는 aggregate root라는 객체를 갖는다. aggregate 외부에서의 모든 참조는 aggregate root만을 통해야 한다. 이 root는 aggregate의 전체로써 무결성을 보장할 수 있다. aggregate는 데이터 저장소의 전송의 기본 요소이다. 트랜잭션은 aggregate 경계를 침범하면 안 된다. DDD Aggregate는 컬렉션 클래스에서 혼..
DDD 지향 마이크로 서비스 디자인 DDD를 배우기 시작한 꽑꽑이가 정리한 우당탕탕 정리입니다. 글 아래에 참고 사이트, 문서를 정리해두었으니 참고해주세요. DDD(Domain Driven Development)는 사용 사례와 관련하여 현실의 비즈니스에 근거한 모델링을 대표한다. 애플리케이션 빌드의 컨텍스트에서 DDD는 문제를 도메인으로 설명한다. 경계가 정해진 컨텍스트로 독립적인 문제 영역을 설명하며 문제 해결에 관해 설명하는 공통 언어를 강조한다. 내부 구현을 지원을 위해 많은 모델, Value Object, Aggregate, Aggregate Root(or Root Entity) 규칙이 있는 도메인 엔티티처럼 여러 기술적 개념과 패턴도 제시한다. 중요한 것은 패턴 자체가 아니라 비즈니스 문제에 맞게 코드를 구성하고 동일한 비즈니스 ..
Cloud Native Archtecure 를 위해 고려햐야될 항목 참고 사이트 https://12factor.net/ko/ The Twelve-Factor App (한국어) 배경 이 문서에 기여한 사람들은 수백개 앱의 개발과 배포에 직접 참여했으며, Heroku 플랫폼을 통해서 방대한 앱의 개발, 운영, 확장을 간접적으로 관찰했다. 이 문서는 실제로 쓰이는 다양한 SaaS 12factor.net
Micro Service Archtecture 이해하기 4. 클라우드 네이티브의 이해 클라우드 네이티브란? 클라우드 네이티브는 클라우드 환경에 친화적인 애플리케이션(application), 아키텍처(architecture), 인프라(infrastructure) 등의 환경을 뜻합니다. Cloud Native Computing Foundation에서 클라우드 네이티브의 공식 정의를 제공합니다. 클라우드 기본 기술을 통해 조직이 public, private 및 하이브리드 클라우드와 같은 최신의 동적 환경에서 확장 가능한 애플리케이션을 구축 및 실행할 수 있도록 지원합니다. 컨테이너(container), 서비스 메시(service meshes), 마이크로서비스(microservice), 변경 불능(immutable) 인프라구조 그리고 선언적 API가 이러한 접근 방식을 잘 보여줍니다. 이러한 기..
Micro Service Archtecture 이해하기 3. SOA(Service Oriented Archtecture) 이해 서비스지향 아키텍처(SOA)란? 대규모 시스템 환경에서 업무 처리 단위를 각각의 서비스로 반영하여 데이터 중심이 아닌 전체 시스템을 서비스 중심으로 설계하는 아키텍처 스타일입니다. 마이크로서비스 아키텍처가 주목받기 이전부터 기업 환경에서 중복되는 프로세스나 업무들을 하나의 서비스 단위로 개발하여 각 서비스는 호출 가능한 상태로 개발하자는 노력이 계속되어 왔습니다. 간단하게 SOA와 Monolithic Archtecture도 비교해봅시다. medium.com - What is Service-Oriented-Architecture? (https://medium.com/@SoftwareDevelopmentCommunity/what-is-service-oriented-architecture-fa894d11a7e..
Micro Service Archtecture 이해하기 2. 모놀리스 아키텍처의 이해 마이크로서비스 아키텍처의 개념 마이크로서비스, 즉 아주 작은 단위로 동작하는 서비스가 구동되도록 시스템 및 소프트웨어의 구성과 구성 요소 간의 관계를 정의한 서비스가 구동되도록 시스템 및 소프트웨어의 구성과 구성 요소 간의 관계를 정의한 아키텍처입니다. 마이크로서비스 아키텍처는 소프트웨어 아키텍처 구성을 위한 하나의 스타일로 이해할 수 있고, 그 특성이 마이크로서비스로 이루어져 있다는 것입니다. 모놀리스 아키텍처와의 차이점 모놀리스 아키텍처와 차이점은 하나의 애플리케이션 형태가 아닌 분할된 다수의 서비스라는 점입니다. 애플리케이션 기능뿐만 아니라 데이터까지 분리하여 격리된 독립된 환경으로 구성되는 것이 가장 큰 차이점입니다. 이미지 출처 : Red Hat Topic - Micro Service 란 ? (..
Micro Service Archtecture 이해하기 1.소프트웨어 아키텍처의 이해 소프트웨어 아키텍처란? 소프트웨어 아키텍처는 소프트웨어를 구성하는 요소와 요소 간의 관계를 정의한 청사진입니다. 소프트웨어 아키텍처는 소프트웨어의 전체적인 구성 관계인 구성 요소와 구성 요소 간의 포함관계, 호출 관계 등을 표현하여 소프트웨어 구성 전체를 조망하고 이해하는 데 유용합니다. 또, 소프트웨어와 관련된 이해관계자들이 기술 구조를 이해하고 논의할 수 있는 소통의 도구 역할도 합니다. 아키텍처의 표현 아키텍처를 표현할 때에는 UML(Unified Modeling Language)과 같은 표준화 모델링 언어를 이용하여 작성하는 것이 바람직합니다. 왜냐하면, 아키텍처를 표현하는 아키텍트(architect)들의 수준과 표현에 따라 제각각의 도식과 표기법으로 작성되어 이해관계자마다 다르게 해석할 수 있기..
5차 과제 실전 이력서 작성! 1. 좋은 개발자가 되기 위해 필요하다고 생각되는 역량 3가지와 이 역량을 키우기 위해서 노력한 사례를 작성해 주세요. (예시: 책임감, 꼼꼼함, 유연성 등) [커뮤니케이션] 프로그래머로 일을 시작하면서 다양한 사람을 만나게 되었습니다. 간단한 서비스는 4시간 만에 혼자서 금방 만드는 개발자. 인프라부터 프론트 백엔드까지 모두 섭렵한 개발자. 등 실력이 뛰어난 개발자도 훌륭하지만, 커뮤니케이션이 뛰어난 개발자야 말로 정말 훌륭한 개발자라고 생각합니다. 정말 좋아하는 개발자 선임분이 계시는데, 개인에게 주어진 시간을 존중해주며, 팀원들과 소통이 원활하게 하십니다. 다른 부서와의 커뮤니케이션에서도 절대로 조급해하지 않고, 천천히 차근차근 설명해주시면서 그들의 말을 잘 들어주시고 그들의 언어로 설명해주심으로써..