@startuml
' configures the library
!global $INCLUSION_MODE="local"
!global $LIB_BASE_LOCATION=".."

' loads the library's bootstrap
!include $LIB_BASE_LOCATION/bootstrap.puml

' loads the package bootstrap
include('gcp/bootstrap')

left to right direction

include('material/Hardware/Laptop')
include('material/Hardware/PhoneAndroid')
include('material/Device/Storage')

include('gcp/Item/CloudDns')
include('gcp/Item/CloudLoadBalancing')
include('gcp/Item/ComputeEngine')
include('gcp/Group/GroupProjectZone')
include('gcp/Group/GroupInstances')

Laptop('laptop', '')
PhoneAndroid('phone', '')
CloudDns('dns')
GroupProjectZone('project') {
  CloudLoadBalancing('lb')
  GroupInstances('grp_instances', 'Instance Group') {
    ComputeEngineCard('instances','Serving Instances', 'Multiple Instances')
  }
  GroupInstances('grp_heartbeat', 'Instance Group') {
    ComputeEngineCard('heartbeat', 'Heartbeat and Snapshot System', 'Multiple Instances')
  }
  Storage('storage', 'Persistent Disk Snapshot')
}

laptop --> dns
phone --> dns
dns --> lb
lb --> instances
heartbeat <-> instances
instances --> storage

@enduml