Architecture

C4 Diagramming Model

Diagram

97 ways to sidestep UML

Just use a whiteboard

  • Google Software archotecture diagrams

  • If we have 2 different maps, they will represent the same information, irrespective of different color coding, legends, language used etc.

  • CONTAINER - individual unit

  • Mobile App

  • web app

  • a script

  • COMPONENTS - runs inside containers

  • Structure - drill down into details

  • Diagrams are Maps

  • CONTEXT - Interaction between people and software system

  • Containers, Component, Classes - interactions between various pieces of system

  • Use single direcctional arrows only

  • Read your diagrams outloud

  • Different color codes for external and internal systems

  • Solid lines for Synchronous calls

  • Dashed lines for Asynchronous calls

Make diagrams stand on their own

Diagram
Diagram

2 Introduction to the Cambridge MQTT service

2.1 Basic informations:

Projekt Cambridge zajmuje się speedcamami (Raporty na podstawie których tworzone są kamery) Cambridge Mqtt to popdrojekt który ma zadanie dostarczać w czasie rzeczywistym informacje o kamerach Cambridge Mqtt jest oparty o technologie MQTT oraz morton cody

Ogólnie w 2 zdaniach co ma robić - tj samochody będa w stanie odbierać informacje o

2.2 Mqtt

Czym jest mqtt – 2 zdania że to kolejka I że można sie subskrybować na dany topic aby odbierać informacje o tym co tam jest I o zmianach.

Odnośnik do oficjalnuych dokumentów

2.3 Morton code

Czym są morton cody - dzielą świat na kwadraty w zależności od poziomu

Czym są jak działają, jakie biblioteki wykorzystujemy

2.4 Morton code and mqtt topics

Wyjaśnienie że same morton cody były wykorzystane aby móc nadawać nazwy topicom itp.

(Topic naming strategyreference to how_mqtt_works and tile partitioningshort description of topic structure)

2.5 Cambridge Camera

Informacje o przykładowej kamerze która jest wyciągnięta z gatewaya.

2.6 Topic message

Informacje o tym jakie wartości z kamery zostały przekazane do wiadomości topica

AWS Architecture Diagrams

@startuml
'AWS stuff here
'================================
!includeurl <aws/common.puml>
!includeurl <aws/SDKs/Java/Java.puml>
!includeurl <aws/SDKs/Nodejs/Nodejs.puml>

!includeurl <aws/General/users/users.puml>
!includeurl <aws/General/client/client.puml>
!includeurl <aws/General/AWScloud/AWScloud.puml>
!includeurl <aws/General/mobileclient/mobileclient.puml>

!includeurl <aws/Database/AmazonRDS/AmazonRDS.puml>
!includeurl <aws/Database/AmazonRDS/DBinstance/DBinstance.puml>
!includeurl <aws/Database/AmazonRDS/MySQLDBinstance/MySQLDBinstance.puml>

!includeurl <aws/Compute/AWSElasticBeanstalk/AWSElasticBeanstalk.puml>
!includeurl <aws/Compute/AWSElasticBeanstalk/deployment/deployment.puml>
!includeurl <aws/Compute/AWSElasticBeanstalk/application/application.puml>
!includeurl <aws/Compute/ElasticLoadBalancing/ApplicationLoadBalancer/ApplicationLoadBalancer.puml>
!includeurl <aws/Compute/AWSLambda/AWSLambda.puml>
!includeurl <aws/Compute/AWSLambda/LambdaFunction/LambdaFunction.puml>

!includeurl <aws/Storage/AmazonS3/AmazonS3.puml>
!includeurl <aws/Storage/AmazonS3/bucket/bucket.puml>
!includeurl <aws/Storage/AmazonGlacier/AmazonGlacier.puml>
!includeurl <aws/Storage/AmazonGlacier/archive/archive.puml>

!includeurl <aws/SecurityIdentityCompliance/AWSIAM/AWSIAM.puml>
!includeurl <aws/SecurityIdentityCompliance/IAM/permissions/permissions.puml>
!includeurl <aws/SecurityIdentityCompliance/IAM/role/role.puml>

!includeurl <aws/MobileServices/AmazonCognito/AmazonCognito.puml>
!includeurl <aws/NetworkingContentDelivery/AmazonRoute53/AmazonRoute53.puml>
!includeurl <aws/SecurityIdentityCompliance/AWSIAM/AWSIAM.puml>

!includeurl <aws/Analytics/AmazonES/AmazonES.puml>
!includeurl <aws/ManagementTools/AmazonCloudWatch/AmazonCloudWatch.puml>

'Elastic stuff here
'================================
!define ELASTIC_PUML elastic
!include <elastic/apm/apm.puml>
!include <elastic/app_search/app_search.puml>
!include <elastic/beats/beats.puml>
!include <elastic/cloud/cloud.puml>
!include <elastic/cloud_in_kubernetes/cloud_in_kubernetes.puml>
!include <elastic/code_search/code_search.puml>
!include <elastic/ece/ece.puml>
!include <elastic/eck/eck.puml>
!include <elastic/elasticsearch/elasticsearch.puml>
!include <elastic/endpoint/endpoint.puml>
!include <elastic/enterprise_search/enterprise_search.puml>
!include <elastic/kibana/kibana.puml>
!include <elastic/logging/logging.puml>
!include <elastic/logstash/logstash.puml>
!include <elastic/maps/maps.puml>
!include <elastic/metrics/metrics.puml>
!include <elastic/siem/siem.puml>
!include <elastic/site_search/site_search.puml>
!include <elastic/stack/stack.puml>
!include <elastic/uptime/uptime.puml>



'change color of selected background shape https://plantuml.com/deployment-diagram
skinparam actorBackgroundColor White
skinparam agentBackgroundColor White
skinparam artifactBackgroundColor White
skinparam boundaryBackgroundColor White
skinparam cardBackgroundColor White
skinparam cloudBackgroundColor White
skinparam componentBackgroundColor White
skinparam controlBackgroundColor White
skinparam databaseBackgroundColor White
skinparam entityBackgroundColor White
skinparam fileBackgroundColor White
skinparam folderBackgroundColor White
skinparam frameBackgroundColor White
skinparam interfaceBackgroundColor White
skinparam nodeBackgroundColor White
skinparam packageBackgroundColor White
skinparam queueBackgroundColor White
skinparam stackBackgroundColor White
skinparam rectangleBackgroundColor White
skinparam storageBackgroundColor White
skinparam usecaseBackgroundColor White



'To change background color to elastic green
'skinparam componentBackgroundColor 00BFB3

AWSCLOUD(aws) {

    AMAZONS3(s3_bucket,"Logs uploaded to here")

package Elastic {

    'add "node", "component", "agent" etc... to change background shape per https://plantuml.com/deployment-diagram
    'default is agent
    ELASTICSEARCH(ElasticSearch, "Search and Analyze",database)
    LOGSTASH(Logstash, "Parse and Transform",node)
    KIBANA(Kibana, "Visualize",agent)
}

    s3_bucket -down-> Logstash: Raw logs
    Logstash -right-> ElasticSearch: Transformed Data
    ElasticSearch -right-> Kibana: Data to View

}
footer %filename() rendered with PlantUML version %version()\nThe Hitchhiker’s Guide to PlantUML
@enduml
Diagram