Golang을 사용한 클린 아키텍처
4365 단어 architecturegoclean
업데이트
이 게시물의 업데이트된 버전을 게시했습니다. 다음에서 확인하세요.
클린 아키텍처란?
그의 저서 "Clean Architecture: A Craftsman's Guide to Software Structure and Design"에서 유명한 작가 Robert "Uncle Bob"Martin은 프레임워크, 데이터베이스 및 인터페이스의 테스트 가능성 및 독립성과 같은 몇 가지 중요한 사항을 포함하는 아키텍처를 제시합니다.
클린 아키텍처의 제약 조건은 다음과 같습니다.
자세한 내용은 https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html에서 확인하세요.
따라서 이러한 제약 조건을 기반으로 모든 레이어는 독립적이고 테스트 가능해야 합니다.
Uncle Bob의 아키텍처에서 코드를 4개 레이어로 나눌 수 있습니다.
Golang의 클린 아키텍처
패키지 사용자를 예로 들어 보겠습니다.
ls -ln pkg/user
-rw-r — r — 1 501 20 5078 Feb 16 09:58 entity.go
-rw-r — r — 1 501 20 3747 Feb 16 10:03 mongodb.go
-rw-r — r — 1 501 20 509 Feb 16 09:59 repository.go
-rw-r — r — 1 501 20 2403 Feb 16 10:30 service.go
entity.go 파일에는 엔티티가 있습니다.
repository.go 파일에는 엔티티가 저장될 저장소를 정의하는 인터페이스가 있습니다. 이 경우 리포지토리는 Uncle Bob 아키텍처의 Framework & Driver 계층을 의미합니다. 그의 내용은 다음과 같습니다.
이 인터페이스는 MongoDB, MySQL 등과 같은 모든 종류의 스토리지 계층에서 구현할 수 있습니다. 우리의 경우 mongodb.go에서 볼 수 있듯이 MongoDB를 사용하여 구현했습니다.
service.go 파일은 Uncle Bob이 정의한 사용 사례 계층을 나타냅니다. 파일에는 Service 인터페이스와 그의 구현이 있습니다. 서비스 인터페이스는 다음과 같습니다.
아키텍처의 마지막 계층인 컨트롤러는 api의 콘텐츠로 구현됩니다.
cd api ; tree
.
|____handler
| |____company.go
| |____user.go
| |____address.go
| |____skill.go
| |____invite.go
| |____position.go
|____rice-box.go
|____main.go
다음 코드에서는 api/main.go에서 서비스 사용 방법을 확인할 수 있습니다.
이제 다음과 같이 패키지에 대한 테스트를 쉽게 만들 수 있습니다.
클린 아키텍처를 사용하면 예를 들어 애플리케이션의 나머지 부분을 손상시키지 않고 데이터베이스를 MongoDB에서 Neo4j로 변경할 수 있습니다. 그리고 우리는 품질과 속도를 잃지 않고 소프트웨어를 성장시킬 수 있습니다.
참조
https://hackernoon.com/golang-clean-archithecture-efd6d7c43047
https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
https://github.com/eminetto/clean-architecture-go
Reference
이 문제에 관하여(Golang을 사용한 클린 아키텍처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eminetto/clean-architecture-using-golang-5791텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)