@@ -9,19 +9,20 @@ it only presents fetched data and sends requests to the backend for actions.
9
9
The backend runs in a Kubernetes cluster as a kubernetes service. Alternatively, it may run anywhere
10
10
outside of the cluster, given that it can connect to the master. The backend is a HTTP server that
11
11
proxies data requests to appropriate remote backends (e.g., k8s apiserver or heapster) or implements
12
- business logic. The backend implements business logic when remote backends APIs do not provide
13
- support required use case directly, e.g., “I want to get a list of pods with their CPU usage metric
12
+ business logic. The backend implements business logic when remote backends APIs do not
13
+ support required use case directly, e.g., “get a list of pods with their CPU usage metric
14
14
timeline”. Figure 1 outlines the architecture of the project.
15
15
16
16
![ Architecture Overview] ( architecture.png?raw=true " Architecture overview ")
17
+
17
18
* Figure 1: Project architecture overview*
18
19
19
20
Rationale for having a backend that implements business logic:
20
21
21
22
* Clear separation between the presentation layer (frontend) and business logic layer (backend).
22
- This is because every action goes through API.
23
+ This is because every action goes through well defined API.
23
24
* Transactional actions are easier to implement on the backend than on the frontend. Examples of
24
- such actions: "Create a replication controller and a service for it" or "Do a rolling update".
25
+ such actions: "create a replication controller and a service for it" or "do a rolling update".
25
26
* Possible code reuse from existing tools (e.g., kubectl) and upstream contributions to the tools.
26
27
* Speed: getting composite data from beckends is faster on the backend (if it runs close to the
27
28
data sources). For example, getting a list of pods with their CPU utilization timeline
0 commit comments