Skip to content

Instantly share code, notes, and snippets.

@NikiforovAll
Created October 16, 2024 09:05
Show Gist options
  • Save NikiforovAll/3b1106eeab470277302d5195388ecd8a to your computer and use it in GitHub Desktop.
Save NikiforovAll/3b1106eeab470277302d5195388ecd8a to your computer and use it in GitHub Desktop.
enterprise-search-architecture
@startuml Case Study
!pragma revision 1
' the folowwing diagram describes the system that has web api and workers (jobs) to to a background processing, jobs puts content in postgres, elastic and azure blob storage and web api uses elastic for search
' left to right direction
' https://github.com/plantuml-stdlib/Azure-PlantUML
!define AzurePuml https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/release/2-2/dist
!includeurl AzurePuml/AzureCommon.puml
!includeurl AzurePuml/Databases/AzureDatabaseForPostgreSQL.puml
!includeurl AzurePuml/Storage/AzureBlobStorage.puml
!includeurl AzurePuml/Compute/AzureAppService.puml
!includeurl AzurePuml/Identity/AzureActiveDirectoryUser.puml
!include <C4/C4_Container>
' https://github.com/plantuml-stdlib/Azure-PlantUML
!include <elastic/common>
!include <elastic/elasticsearch/elasticsearch>
AzureActiveDirectoryUser(user, "User", "User")
System_Boundary(c1, "System") {
AzureAppService(web, "Web App", "Web App")
AzureDatabaseForPostgreSQL(pg, "PostgreSQL", "Primary Data Store")
ELASTICSEARCH(elastic, "Search and Analyze",database)
AzureBlobStorage(blob, "Blob Storage", "Binary Data")
package Workers {
AzureAppService(jobs1, "Worker", "Jobs")
AzureAppService(jobs2, "Worker", "Jobs")
}
}
user -right--> web: Search
web -down-> elastic: Reads from
jobs1 -down-> elastic: Writes to
jobs1 -down-> blob: Writes to
jobs1 -down-> pg: Writes to
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment