Skip to content

Latest commit

 

History

History
75 lines (50 loc) · 2.48 KB

File metadata and controls

75 lines (50 loc) · 2.48 KB

2. C4 Model for Search Boundary Context

Date: 2024-02-17

Status

Accepted

Context

The Search Boundary Context, essential for enabling efficient and accurate information retrieval, comprises the search service and its interaction with search database. Given the complexity and the critical role of this architecture in the system, there is a need for clear visualization and documentation. The C4 model is perfectly suited for this task, providing a structured approach to map out the software architecture comprehensively.

Decision

We will employ the C4 model to delineate the architecture of the Search Boundary Context. This will include the creation of System Context, Container, and Component diagrams, with a focus on detailing how the search service interfaces with search database and other components within the system.

Consequences

  • Enhanced clarity and communication of the search architecture to all stakeholders.
  • Streamlined development and maintenance processes due to better understanding of system components and their interactions.

C4

Level 1: System Context diagram

@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml

LAYOUT_WITH_LEGEND()

title System Context diagram for Search Boundary Context

Person(user, "User", "A user of the system searching for information.")
System_Boundary(sbc, "Search Boundary Context") {
System(search_service, "Search Service", "API service handling search requests.")
}
System_Ext(search_db, "Search Database", "Search database storing and indexing documents.")

Rel(user, search_service, "Uses")
Rel(search_service, search_db, "Queries")

@enduml

Level 2: Container diagram

@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

LAYOUT_WITH_LEGEND()

title Container diagram for Search Boundary Context

Person(user, "User", "A user of the system searching for information.")
Container_Ext(api_gateway, "API Gateway", "API Gateway", "Central entry point for handling requests.")

System_Boundary(sbc, "Search Boundary Context") {
    Container(search_service, "Search Service", "Service", "Handles search requests and queries Elasticsearch.")
    ContainerDb(search_db, "Search Database", "Elasticsearch", "Stores and indexes searchable documents.")
}

Rel(user, api_gateway, "Makes requests to")
Rel(api_gateway, search_service, "Routes to")
Rel(search_service, search_db, "Queries")

@enduml