From dc1e1ea62860ceb01635c08075db0ce583a63bc5 Mon Sep 17 00:00:00 2001 From: uo289157 Date: Mon, 17 Feb 2025 00:41:15 +0100 Subject: [PATCH 1/2] Week 1 update documentation. --- docs/images/07_overview.drawio.png | Bin 0 -> 15433 bytes docs/src/07_deployment_view.adoc | 45 ++++++++++++++--------------- 2 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 docs/images/07_overview.drawio.png diff --git a/docs/images/07_overview.drawio.png b/docs/images/07_overview.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..c6b1eaa7e44d11593d13f164c28eb067c744fe84 GIT binary patch literal 15433 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 E0sk0CYXATM literal 0 HcmV?d00001 diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 6f8de2b9..4e213c46 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -2,7 +2,6 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-deployment-view]] - == Deployment View ifdef::arc42help[] @@ -44,6 +43,8 @@ See https://docs.arc42.org/section-7/[Deployment View] in the arc42 documentatio **** endif::arc42help[] +Our system infrastructure consists of a single virtual machine running Ubuntu 22.04 LTS. This server hosts a Node.js application inside a Docker container and includes a MongoDB database to store application data. The application also interacts with the Wikidata API to generate dynamic content. Additionally, we use a Large Language Model (LLM) that leverages context from the application to provide user hints. + === Infrastructure Level 1 ifdef::arc42help[] @@ -60,41 +61,39 @@ For multiple environments or alternative deployments please copy and adapt this **** endif::arc42help[] -_****_ +image::07_overview.drawio.png[] Motivation:: -__ +The choice of this infrastructure is driven by the flexibility of a dockerized microservice architecture. Containerization simplifies deployment and ensures consistency across different environments. Additionally, Docker's platform-agnostic nature allows the application to run on virtually any machine, making scaling and maintenance more efficient. Quality and/or Performance Features:: -__ +- _Scalability_: The system can be easily scaled horizontally by adding more service instances, leveraging the container orchestrator for efficient load distribution. -Mapping of Building Blocks to Infrastructure:: -__ +- _Portability_: The application can be deployed in any environment that supports Docker containers, enabling seamless migration to different cloud providers if needed. +- _Maintainability_: Each container operates independently, allowing for individual updates and maintenance. By replacing containers with new application versions, the system remains up-to-date with minimal disruption. -=== Infrastructure Level 2 +- _Security_: The system is hosted in a secure environment on the Azure cloud platform. Each container runs in isolation, minimizing the impact of potential security breaches and ensuring high availability. -ifdef::arc42help[] -[role="arc42help"] -**** -Here you can include the internal structure of (some) infrastructure elements from level 1. - -Please copy the structure from level 1 for each selected element. -**** -endif::arc42help[] - -==== __ +Mapping of Building Blocks to Infrastructure:: +|=== +| Component | Description -__ +| User agent +| The client that accesses the system through the web application. -==== __ +| Virtual Machine +| The server hosting the system. -__ +| Docker +| Containerization platform used for deploying and managing the system. -... +| Wikidata API +| External service that provides dynamic content for the application. -==== __ +| Large Language Model (LLM) +| AI-powered component that analyzes application context to assist users with relevant hints. -__ +|=== \ No newline at end of file From 08808c1b937d6f8ac13727c8a2e01622da0a0434 Mon Sep 17 00:00:00 2001 From: uo289157 Date: Mon, 17 Feb 2025 01:01:29 +0100 Subject: [PATCH 2/2] Revert "Merge branch 'master' into Documentation-7-Deployment-view" This reverts commit 2b562a90290250b2b09d7e2d283a4c94b3956357, reversing changes made to dc1e1ea62860ceb01635c08075db0ce583a63bc5. --- .github/workflows/release.yml | 29 +++++++++++++++-------------- llmservice/llm-service.js | 4 ++-- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 87812433..2689aed0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -140,17 +140,18 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: gatewayservice - deploy: - name: Deploy over SSH - runs-on: ubuntu-latest - needs: [docker-push-userservice,docker-push-authservice,docker-push-llmservice,docker-push-gatewayservice,docker-push-webapp] - steps: - - name: Deploy over SSH - uses: fifsky/ssh-action@master - with: - host: ${{ secrets.DEPLOY_HOST }} - user: ${{ secrets.DEPLOY_USER }} - key: ${{ secrets.DEPLOY_KEY }} - command: | - wget https://raw.githubusercontent.com/arquisoft/wichat_0/master/docker-compose.yml -O docker-compose.yml - docker compose --profile prod down + # deploy: + # name: Deploy over SSH + # runs-on: ubuntu-latest + # needs: [docker-push-userservice,docker-push-authservice,docker-push-llmservice,docker-push-gatewayservice,docker-push-webapp] + # steps: + # - name: Deploy over SSH + # uses: fifsky/ssh-action@master + # with: + # host: ${{ secrets.DEPLOY_HOST }} + # user: ${{ secrets.DEPLOY_USER }} + # key: ${{ secrets.DEPLOY_KEY }} + # command: | + # wget https://raw.githubusercontent.com/arquisoft/wichat_es2a/master/docker-compose.yml -O docker-compose.yml + # docker compose --profile prod down + # docker compose --profile prod up -d --pull always diff --git a/llmservice/llm-service.js b/llmservice/llm-service.js index 4788a50d..da0ff837 100644 --- a/llmservice/llm-service.js +++ b/llmservice/llm-service.js @@ -17,9 +17,9 @@ const llmConfigs = { transformResponse: (response) => response.data.candidates[0]?.content?.parts[0]?.text }, empathy: { - url: () => 'https://empathyai.prod.empathy.co/v1/chat/completions', + url: () => 'https://empathyai.staging.empathy.co/v1/chat/completions', transformRequest: (question) => ({ - model: "mistralai/Mistral-7B-Instruct-v0.3", + model: "qwen/Qwen2.5-Coder-7B-Instruct", messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: question }