【GO/DDD】레이어드 아키텍처의 정리
4927 단어 5DDDLayeredArchitecture
계층화된 아키텍처
아래 그림의 구성이 됩니다.
Presentation 레이어(handler)→Application 레이어(usecase)→Domain 레이어(domain)→ Infrastructure 레이어(infrastructure)의 순서로 한 방향에 따라 구성되어 있습니다.
또한 각 레이어에
interface
, struct
를 정의합니다.Presentation 레이어
http 통신 등을 씁니다.
애플리케이션 계층
CRUD를하는 장소.
MVC에서 말하는 View와 Controller 사이에 있는 녀석.
Domain 레이어
비즈니스 로직을 작성합니다.
구체적으로는 하기의 예를 알기 쉽다.
도메인 모델에서 실행해야 할 논리입니다.
・한정 공유 투고, 공개를 바꿀 수 있다(단, 한 번 공개한 기사를 비공개(=한정 공유)는 할 수 없다)
・최종 갱신일시로부터 1년 이상 경과하면 「이 기사는 최종 갱신일로부터 ○년 이상이 경과하고 있습니다.」라고 표시된다
도메인 모델, 도메인 로직이란 무엇인가를 코드를 섞어 생각해 본다 - Qiita 보다 인용
비즈니스 로직(business logic)이란?
인프라 레이어
DB, 메모리 조작을 작성합니다.
구체적으로는 SQL이군요.
MVC에서 말하면
Rails를 예로 들면 다음과 같이 보입니다.
레이어
이름
사용자 인터페이스 계층(View)
views view_objects
애플리케이션 계층(Controller)
controllers observers decorators parameters
도메인 계층(Model)
models mailers callbacks validators policies queries services value_objects factories
중간 규모 웹 개발을 위한 MVC 분할 및 레이어 아키텍처 - Qiita 보다 인용
이것도 엄청 도움이 되었다.
테메라의 Rails는 객체 지향이 아니야! 우선은 Callback 클래스, Validator 클래스를 활용하라! - Qiita
폴더 구성
현재 폴더 구성을
tree
명령으로 출력해 보았습니다.├── app
│ ├── application
│ │ └── usecase
│ │ ├── user.go
│ ├── domain
│ │ ├── model
│ │ │ ├── user.go
│ │ ├── repository
│ │ │ ├── user.go
│ │ └── service
│ │ ├── user.go
│ ├── infrastructure
│ │ ├── database.go
│ │ └── persistence
│ │ ├── user.go
│ └── presentation
│ ├── handler
│ │ ├── request.go
│ │ └── response.go
용어 정리
도메인
도메인 모델이란, 지금 당신이 취급하고 있는 업무 도메인에 특화한, 소프트웨어 모델을 말한다.
도메인을 반영한 모델이란 도메인을 구성하는 물건, 개념, 행동, 관계성을 표현한 것입니다.
이해! 도메인 구동 설계 ~모치코짱의 대모험~【C91 신간】 - TechBooster - BOOTH 보다 인용
그리고이 레이어드 아키텍처는 DDD 내에서 전술 설계에 해당합니다.
종속성
위의 레이어드 아키텍처와 같은 구성을 도입하면 무엇이 기쁜지.
그것은 종속성이 단일 방향이 되고, 어느 한쪽의 변경으로 다른 한쪽이 망가지는 위험을 없애 줍니다.
즉 변경에 강해진다는 것에 집약된다고 생각합니다.
이상
프로그램 종속성 및 모듈 구성 - Qiita 보다 인용
개인적으로 주의할 것
프로그램 종속성 및 모듈 구성 - Qiita 보다 인용
인터페이스
기능을 약속해주고, 다른 구조체(내용이 전혀 다르다고 해도)도 문제 없게 사용할 수 있습니다.
Go의 인터페이스를 모르는 사람에게 - Qiita
인터페이스 구현 패턴 #golang - Qiita
기타 참고가 되는 기사
Go package 구성 및 개발에 대한 모범 사례 - Tech Blog - Recruit Lifestyle Engineer
레이어드 아키텍처 관점 - Qiita
Golang API 레이어드 아키텍처를 사용해 보았습니다. - Qiita
MVC, 3층 아키텍처에서 설계를 배우기 위한 기초 지식 - Qiita
Reference
이 문제에 관하여(【GO/DDD】레이어드 아키텍처의 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wqwq/items/6b43ed4a1b68c0373a60텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)