diia-open-source / diia-setup-howto

41 stars 4 forks source link

[Discussion] [Backend] How to actually set it up? #5

Open alinkedd opened 6 months ago

alinkedd commented 6 months ago

The provided documentation is insufficient for assembling backend. As for now, it's more like looking package-by-package for a needle in a haystack, rather than following a structured, streamlined path. Additionally, it appears that the current batch of packages has NOT been tested in a clean environment before being uploaded.

UPD According to Diia representatives, the current batch of BE packages is a snapshot of some (but not all) packages, which have also been stripped of some code for security reasons.


This topic is aimed at coming up with possible solutions for those trying to get it all together. Please feel free to leave your setup problems, as well as link to related issues, PRs, comments, or add other useful information.

alinkedd commented 6 months ago

npm issues while building https://github.com/diia-open-source/diia-setup-howto/issues/2#issuecomment-1998143871

I trying to build source code and hit different kind of NPM issues. For example npm/cli#5007

kant2002 commented 6 months ago

Із того що я спостережую, то Дія веде усю розробку на Лінуксі, і потребує глобально установлених наступних тулів

також процес збірки залежить від ts-proto який не має зібраних windows бінарників, тому genproto пакет не функціональний і ламається + там npm root у башевому стилі використовується.

kant2002 commented 6 months ago

Зараз я намагаюся опублікувати пакети у іншому NPM скопі @kant2002-diia-inhouse, і для цього роблю форк кожного репозіторія, і маю гілку outhouse із локальними змінами. ~через те що я на Windows працюю, я не можу зібрати be-types бо пакет be-getproto лише сумісний із Лінукс/Мак де-факто~

alinkedd commented 6 months ago

(WIP) List of packages/clients to bundle

Prerequisites: Node.js 18 + npm, protoc. Currently, it seems that packages also require eslint, prettier, typescript (5.2.2) installed globally.

kant2002 commented 6 months ago

Зараз можно прубовати запустити be-documents-service

Для цього, або треба склонувати мій форк або якось запустити NPM пакет @kant2002-diia-inhouse/documents-service

якщо ви на вінді і склонували мій форк, також треба буде локально застосувати патч https://github.com/diia-open-source/be-genproto/pull/4 інакше не буде працювати.

~Також треба запустити HashiCorp Vault або щось що підтримує цей протокол.~(це я погарячкував) Далі вже требе гратися, я так далеко не зайшов. Якщо у мене буде повна інструкція, я додам інформацю.

kant2002 commented 6 months ago

Тестове середовище як вказано у https://github.com/diia-open-source/diia-setup-howto/blob/main/backend/docker-compose.yml не працює із Mongo через дві проблеми

kant2002 commented 6 months ago
diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml
index a981aa1..acb73c0 100644
--- a/backend/docker-compose.yml
+++ b/backend/docker-compose.yml
@@ -45,6 +45,9 @@ services:
         "--replSet",
         "diia"
       ]
+    volumes:
+      - ./scripts/rs-init.sh:/scripts/rs-init.sh
+      - ./scripts/init.js:/scripts/init.js
   mongo2:
     container_name: mongo2
     image: mongo:5

rs.init.sh

#!/bin/bash

DELAY=25

mongo <<EOF
var config = {
    "_id": "diia",
    "version": 1,
    "members": [
        {
            "_id": 1,
            "host": "mongo1:27017",
            "priority": 2
        },
        {
            "_id": 2,
            "host": "mongo2:27017",
            "priority": 1
        },
        {
            "_id": 3,
            "host": "mongo3:27017",
            "priority": 1
        }
    ]
};
rs.initiate(config, { force: true });
EOF

echo "****** Waiting for ${DELAY} seconds for replicaset configuration to be applied ******"

sleep $DELAY

mongo < /scripts/init.js

init.js

rs.status();
OleksandrKucherenko commented 6 months ago

we can join our efforts in monorepo https://github.com/ArtfulBits/diia.monorepo

kant2002 commented 6 months ago

Public Service Catalog також не може бути створено, через брак пакету "@diia-inhouse/user-service-client" https://github.com/diia-open-source/be-public-service-catalog/blob/3e70df9fe7f918f17ffe6aa737d8261e9893a770/package.json#L78

the-az-dev commented 5 months ago

Мене от цікавить важливе питання чому саме всі ці пакети вони не змогли налаштувати для чистого форку і організувати нормальне налаштування для того самого новачка який цікавиться строгим Ентерпрайзом аби він зуміг без всяких проблем могли на локальній машині трішки підняти і погратись із кодом, бо для мене це все зараз лише експонат аніж просто засіб який ти можеш детально вивчити шляхом тестів чи просто налаштувати і підняти локально на чистому середовищі. Бо реально я ніч витратив аби +- щось налаштувати (дякуючи JavaScript Січ де на трансляції все це було зроблено перший початок, тільки вже потім мудрував із протобуферами та імплементацією інших частин). Реально без ГПТ + СтекОверфлоу тут наразі не налаштуєш бо дуже багато багів і помилок навіть при стабільній ноді 20.х.х і дуже багато компонентів зроблено аби було. Як і що до того це напевно або моїх знань недостатньо або там реально все доволі туго йде.

the-az-dev commented 5 months ago

Тестове середовище як вказано у https://github.com/diia-open-source/diia-setup-howto/blob/main/backend/docker-compose.yml не працює із Mongo через дві проблеми

Наскільки я бачив у коді, то бек дії має таку конфігурації тільки вона скоріш за все в ігнорі для репозиторія, але це лише мої здогадки бо зараз важко щось мені описати після 15-ти годинної терапії із цим бекендом. Хай там як наразі дуже багато доведеться писати руцями аби це все підняти на локальній машині і цього "дуже багато" реально багато.

alinkedd commented 5 months ago

btw, setup stream by JavaScript Січ (@xanf) - https://youtu.be/Pe4N5ssNMTo (in Ukrainian)

kant2002 commented 5 months ago

замість @diia-inhouse/user-service-client можна юзати або @kant2002-diia-inhouse/user-service-client який побудований звідси https://github.com/kant2002/be-user-service-client Це дозволило запустити ще public-service-catalog

kant2002 commented 5 months ago

@the-az-dev Чи тобі вдалося запустити якусь частину Дії? Бо у мене зараз усе окрім criminal-cert сервіса начебто піднято. Незважаючи, який підхід тобі більше до вподоби, мій, Олександра чи робити усе самотужки, ти можеш знайти нас у телезі https://t.me/+f6d5MCe-euthOTFi можливо там ми тобі швидше зможемо допомогти із стартом.

the-az-dev commented 5 months ago

@the-az-dev Чи тобі вдалося запустити якусь частину Дії? Бо у мене зараз усе окрім criminal-cert сервіса начебто піднято. Незважаючи, який підхід тобі більше до вподоби, мій, Олександра чи робити усе самотужки, ти можеш знайти нас у телезі https://t.me/+f6d5MCe-euthOTFi можливо там ми тобі швидше зможемо допомогти із стартом.

Я лише фокусувався на архітектурі, патернах і роботи авторизації, бо саме там для себе я відкрив нові речі. Доречі, дякую за інвайт в вашу групу, обовязково доєднаюсь, крім того я надіюсь, що Diia Center дозволить сформувати Open Source команду на базі досвідчених програмістів та програмістів ентузіастів, які зможуть елементарно робити взаємодії із шаблонами готово коду ну й робити адекватні рефактори коду, ну й яка буде підтримувати весь цей код як і бекенду так і мобільних апок і ця команда зможе спокійно робити PRи!)

kant2002 commented 5 months ago

Ще дрібна глобальна залежність https://github.com/diia-open-source/be-gateway-service/issues/4

Mr-NumberOne commented 3 months ago

Комусь вдалося налаштувати все середовище та фактично запустити службу в одному вікні? Has anyone managed to setup the whole environment and actually run a service one windows? @kant2002