커플링 개념 결합: 모듈이 다른 모듈을 알고 의존하는 정도를 나타냅니다. 낮은 결합도: 한 모듈의 변경 사항이 다른 모듈에 미치는 영향이 적습니다. 높은 결합도: 한 모듈의 변경 사항이 여러 모듈에 영향을 미칠 수 있습니다. 응집력 개념 응집성: 모듈의 책임이 얼마나 잘 그룹화되어 있는지를 나타냅니다. 높은 응집력: 모듈은 관련 책임을 가지며 단일 작업 수행에 중점을 둡니다. 낮은 응집력: 책임의 연관성이 적습니다. 의사소통 접근법 메시징 커뮤니케이션 전통적인 커뮤니케이션. 메시징 커뮤니케이션 비동기 통신. 모듈은 메시지를 보내고 받습니다. 인터페이스를 통한 메시지 계약 정의 모듈 간의 분리를 촉진합니다. 모듈은 메시지 버스를 통해 통신합니다 도구: RabbitMQ, Kafka 등 전통적인 커뮤니케이션 모듈 간 기능을 호출합니다. 패키지 간 개체, 구조체, 특성 사용 한 모듈이 다른 모듈을 호출합니다. 네임스페이스, 패키지, 모듈 사용 관찰 완전한 디커플링을 보장하기는 어렵습니다 모듈 간에는 항상 어느 정도 종속성이 있습니다. 계약, 인터페이스, 메시징을 사용하더라도 어느 정도 종속성이 있습니다. 한 모듈과 다른 모듈 사이에 종속성이 있는 것은 정상입니다. 소스 코드: https://github.com/ortizdavid/golang-modular-software