Skip to content

Instantly share code, notes, and snippets.

@machuz
Created September 1, 2018 08:19
Show Gist options
  • Save machuz/de7600f94eb3745107bd24c5811bbd33 to your computer and use it in GitHub Desktop.
Save machuz/de7600f94eb3745107bd24c5811bbd33 to your computer and use it in GitHub Desktop.
@startuml
title: 1マイクロサービスにおける依存関係図
scale 0.6
package "xxxApiExternalAdapter" as extA {
frame "PlayFramework" {
[Controller]
[Presenter]
[InputJson]
[OutputJson]
}
}
package "SharedExternalAdapter" as sExtA {
frame "AbstractPlayFramework" {
[AbstractController]
[AbstractPresenter]
[AbstractInputJson]
[AbstractOutputJson]
}
}
package "xxxApiInternalAdapter" as intA {
frame "gRPC" {
[gRPCServer]
[gRPCService]
}
}
package "SharedInternalAdapter" as sIntA {
frame "Abstract gRPC" {
[AbstractgRPCServer]
[AbstractgRPCService]
}
}
package "xxxApiStreamAdapter" as strA {
frame "KinesisStream" {
[KinesisConsumer]
[Scheduler]
[RecordProcesser]
}
}
package "SharedStreamAdapter" as sStrA {
frame "AbstractKinesisStream" {
[AbstractKinesisConsumer]
[AbstractScheduler]
[AbstractRecordProcesser]
}
}
package "xxxApiSecondaryAdapter" as secA {
frame "bridge of domain and infra(Impl)" {
[RepositoryImpl]
[DomainServiceImpl]
}
frame "SpecialtyInfrastructure" {
[ThirdPartyApiClient(Twilio,etc....)] as TAPI
[DAO for DB] as DAO
[etc....]
}
}
package "SharedSecondaryAdapter" as sSecA {
frame "SharedInfrastructure" {
[AWSClient(SES,Kinesis,etc...)] as AWS
[AbstractDAO for DB] as ADAO
[etc....]
}
}
package "xxxApiUseCase" as usecase {
frame "UseCase" {
[UseCaseImpl]
}
}
package "xxxApiDomain" as domain {
frame "Domain" {
[DomainModel]
}
frame "bridge of domain and infra(interface)" {
[RepositoryInterface]
[DomainServiceInterface]
}
frame "bridge of domain and usecase" {
[UseCaseInterface]
}
}
package "SharedLib" as lib {
frame "Lib" {
[AbstractRepository]
[AbstractDomainxxx]
[AbstractUseCase]
[Util]
[etc...]
}
}
extA ---d-> sExtA
sExtA ------d-> secA
intA ---d-> sIntA
sIntA ------d-> secA
strA ---d-> sStrA
sStrA ------d-> secA
secA ---d-> sSecA
secA ---d-> usecase
usecase --d-> domain
domain --d-> lib
Controller .> AbstractController
Controller .> InputJson
Controller .> Presenter
Controller .> UseCaseInterface
gRPCService .> UseCaseInterface
RecordProcesser .> UseCaseInterface
Presenter .> OutputJson
InputJson .> AbstractInputJson
OutputJson .> AbstractOutputJson
Presenter .> AbstractPresenter
gRPCServer .> AbstractgRPCServer
gRPCService .> AbstractgRPCService
KinesisConsumer .> AbstractKinesisConsumer
KinesisConsumer .> Scheduler
Scheduler .> AbstractScheduler
Scheduler .> RecordProcesser
RecordProcesser .> AbstractRecordProcesser
DomainServiceImpl .> DomainServiceInterface
RepositoryImpl .> RepositoryInterface
RepositoryImpl .> DAO
RepositoryImpl .> TAPI
RepositoryImpl .> AWS
DAO .> ADAO
UseCaseInterface .> AbstractUseCase
UseCaseImpl .> UseCaseInterface
UseCaseImpl .> RepositoryInterface
UseCaseImpl .> DomainServiceInterface
RepositoryInterface .> AbstractRepository
DomainModel .> AbstractDomainxxx
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment