Sign inSign up

cerberus237/adaptable-teastore-webui

By cerberus237

Updated about 1 year ago

The WebUI service for the Adaptable TeaStore

Image
Developer tools
Web servers
1

630

cerberus237/adaptable-teastore-webui repository overview

Adaptable TeaStore WebUI Service Documentation

1. Overview of the Component

Description

The Adaptable TeaStore WebUI service provides the front-end interface for users to interact with the Adaptable TeaStore application. It displays product recommendations, user profiles, and enables transactions, ensuring a seamless shopping experience.

Architecture

The WebUI operates as a microservice within the Adaptable TeaStore ecosystem. It communicates with various backend services, such as the Recommender and Persistence services, to fetch data and present it to users. This architecture allows the WebUI to scale independently and adapt to varying user demands.

Role in the Adaptable TeaStore
  • User Interface: Presents a visually appealing and user-friendly interface for customers.
  • Dynamic Content: Updates recommendations and product offerings based on user interactions.
  • Integration: Collaborates with backend services to retrieve and display real-time data.

2. Helpful Docker Command

To start the Adaptable TeaStore WebUI service, you can use the following command:

docker run -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=8080" -p 8080:8080 -d cerberus237/adaptable-teastore-webui
Explanation of Command:
  • docker run: Command to create and run a new container.
  • -e "REGISTRY_HOST=10.1.2.3": Sets the environment variable for the registry host.
  • -e "REGISTRY_PORT=10000": Sets the environment variable for the registry port.
  • -e "HOST_NAME=10.1.2.30": Defines the host name for the service.
  • -e "SERVICE_PORT=8080": Sets the port number for the service.
  • -p 8080:8080: Maps port 8080 of the host to port 8080 of the container.
  • -d: Runs the container in detached mode.
  • cerberus237/adaptable-teastore-webui: The name of the Docker image.

3. Sample Docker-Compose Code

Here’s a sample docker-compose.yml file to run the Adaptable TeaStore WebUI service using Docker Compose:

version: '3'
services:
  webui:
    image: cerberus237/adaptable-teastore-webui
    expose:
      - "8080"
    environment:
      HOST_NAME: "webui"
      REGISTRY_HOST: "registry"
    ports:
      - "8080:8080"
Explanation of Directives:
  • version: '3': Specifies the Docker Compose file format version.
  • services: Defines the services to be run.
    • webui: The name of the service.
      • image: Specifies the Docker image to use for the service.
      • expose: Makes the specified port accessible to linked services (not to the host).
      • environment: Sets environment variables needed for the service.
      • ports: Maps the host port to the container port.

4. Overview of the Dockerfile

The Dockerfile for the Adaptable TeaStore WebUI service is designed to set up the environment for running the service. Below is an overview of its structure and components:

FROM cerberus237/adaptable-teastore-base:latest
LABEL org.opencontainers.image.authors="Inria R&D engineer <[email protected]>"

COPY target/*.war /usr/local/tomcat/webapps/
RUN mkdir -p /usr/local/tomcat/webapps/ROOT

CMD java -jar /usr/local/tomcat/bin/dockermemoryconfigurator.jar ${TOMCAT_HEAP_MEM_PERCENTAGE}; /usr/local/tomcat/bin/start.sh && echo '<% response.sendRedirect("/tools.descartes.teastore.webui/"); %>' > /usr/local/tomcat/webapps/ROOT/index.jsp && /usr/local/tomcat/bin/catalina.sh run
Explanation of Dockerfile Components:
  • FROM cerberus237/adaptable-teastore-base:latest: Specifies the base image to use, which is the latest version of the Adaptable TeaStore base image.
  • LABEL: Provides metadata about the image, including the author's contact information.
  • COPY target/*.war /usr/local/tomcat/webapps/: Copies the compiled WAR file of the WebUI service to the Tomcat webapps directory for deployment.
  • RUN mkdir -p /usr/local/tomcat/webapps/ROOT: Creates a ROOT directory for the default web application.
  • CMD: Specifies the command to run when the container starts, including memory configuration and starting Tomcat.

5. Instrumented Adaptation Actions and Metrics Collectors

5.1 Available Collectors

The WebUI service provides a family of collectors to support various system metrics:

CategoryCollectors (Local & Remote)
CPU UsageLocalCpuUsageCollector, RemoteCpuUsageCollector, RemoteCpuUsagePerInstanceCollector, RemoteCpuUsageAllLoadBalancedServiceCollector, RemoteCpuUsageAllServiceCollector
Memory UsageLocalMemoryUsageCollector, RemoteMemoryUsageCollector, RemoteMemoryUsagePerInstanceCollector, RemoteMemoryUsageAllLoadBalancedServiceCollector, RemoteMemoryUsageAllServiceCollector, RemoteRegistryMemoryUsageCollector
RequestsLocalRequestMetricsCollector, RemoteRequestMetricsCollector, RemoteRequestMetricsPerInstanceCollector, RemoteRequestMetricsAllLoadBalancedServiceCollector, RemoteRequestMetricsAllServiceCollector
Response TimeRemoteResponseTimeCollector, RemoteResponseTimePerInstanceCollector, RemoteResponseTimeAllLoadBalancedServiceCollector, RemoteResponseTimeAllServiceCollector
Service StateRemoteServiceStateCollector, RemoteServiceStatePerInstanceCollector, RemoteServiceStateAllLoadBalancedCollector, RemoteServiceStateAllServiceCollector
Service StatusRemoteServiceStatusCollector, RemoteServiceStatusPerInstanceCollector, RemoteServiceStatusAllLoadBalancedCollector, RemoteServiceStatusAllServiceCollector

Each collector is designed to either:

  • Collect local system metrics from a running service.
  • Fetch remote metrics via REST API calls.
5.2 Usage Examples
Local CPU Usage Collection

The LocalCpuUsageCollector retrieves CPU usage metrics from the Java Management Extensions (JMX).

Example: Collecting Local CPU Usage
LocalCpuUsageCollector cpuUsageCollector = new LocalCpuUsageCollector();
double currentCpuUsage = cpuUsageCollector.get();
System.out.println("Current CPU Usage: " + currentCpuUsage + "%");
Remote CPU Usage Collection

The RemoteCpuUsageCollector fetches CPU metrics from a remote service using a REST API call.

RemoteCpuUsageCollector cpuUsageCollector = new RemoteCpuUsageCollector(Service.AUTH, "metrics/cpu");
double currentCpuUsage = cpuUsageCollector.get();
System.out.println("Current Remote CPU Usage: " + currentCpuUsage + "%");
5.3 REST API Endpoints for Metrics Collection

Note: Each service in the Adaptable TeaStore exposes a REST API endpoint to provide its metrics.

Example API Endpoints
MetricEndpointHTTP Method
CPU Usage/metrics/cpuGET
Memory Usage/metrics/memoryGET
Request Count/metrics/requestsGET
Response Time/metrics/statusGET
Service State/metrics/stateGET
Service Status/metrics/statusGET
Example: Fetching CPU Usage from a Remote Service
curl -X GET http://service-instance:8080/metrics/cpu

6. Adaptation Actions

Adaptation ActionDescription
OpenCircuitBreakerOpens the circuit breaker to prevent service failures during high load or errors.
CloseCircuitBreakerCloses the circuit breaker to resume normal operation once conditions stabilize.
DDoSAttackEventBroadcastBroadcasts an alert to all services when a DDoS attack is detected, triggering protective measures.
EnableMaintenanceModeActivates maintenance mode to inform users of potential service interruptions during high traffic or maintenance periods.
DisableMaintenanceModeDeactivates maintenance mode, allowing normal operations to resume.

7. Summary

The Adaptable TeaStore WebUI service is a crucial component for delivering an engaging user experience. It can be easily deployed using Docker commands or Docker Compose and integrates seamlessly with other services in the Adaptable TeaStore architecture. The provided Dockerfile ensures a well-configured environment for running the service, while the instrumented adaptation actions and metrics collectors enable effective adaptability and monitoring capabilities. For further details, refer to the Getting Started documentation.

Tag summary

Content type

Image

Digest

sha256:81a3cc276

Size

279.3 MB

Last updated

about 1 year ago

docker pull cerberus237/adaptable-teastore-webui