Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • release
  • master-interface-proto4
  • ozg-5634-ozgcloud-ingress
  • OZG-3322_connect_to_mongodb_over_tls
  • 2.17.0
  • 2.16.0
  • 2.15.0
  • 2.14.0
  • 2.13.0
  • 2.12.0
  • 2.11.0
  • 2.10.1
  • 2.10.0
  • 2.9.0
  • 2.8.0
  • 2.7.1
  • 2.7.0
  • 2.6.0
  • 2.5.1
  • 2.5.0
  • 2.4.0
  • 2.3.0
  • 2.2.0
  • 2.1.0
25 results

user-manager

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    OZGCloud authored
    cf4339e5
    History

    user-manager

    This project uses Quarkus, the Supersonic Subatomic Java Framework.

    If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .

    Configuring the application

    This properties must be configured to run the application

    Key Value Default Mandatory Description
    quarkus.oidc.auth-server-url https://sso.dev.by.ozg-cloud.de/realms/sh-kiel-dev none yes Url of the keycloak server with the realm
    quarkus.mongodb.connection-string mongodb://ozg-mongodb:27017 none yes The connection string for the mongo db database
    quarkus.mongodb.database usermanager usermanager no Name of the mongo db database
    ozgcloud.keycloak.sync.period 5m 6h no Period between synchronizations
    ozgcloud.keycloak.api.user apiUser none yes The name of the keycloak admin api user
    ozgcloud.keycloak.api.password **** none yes The password of the keycloak admin api user
    ozgcloud.keycloak.api.realm realm-name none yes The name of the realm
    ozgcloud.keycloak.api.organisations-einheit-id-key organisationseinheitId organisationseinheitId no The key where the organisationsEinheitId of the group is saved
    ozgcloud.keycloak.api.ldap-id-key LDAP_ID LDAP_ID no The key to get the keycloak user id from
    ozgcloud.user-manager.url http://localhost:8080 none yes The external root url of the usermanager
    keycloak.url https://sso.service none yes The root url of the keycloak service

    Running the application in dev mode

    You can run your application in dev mode that enables live coding using:

    ./mvnw compile quarkus:dev

    NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.

    If you want to use remote Keycloak for local development, then use the profile remotekc. Be aware, that it deactivates synchronization - if you need it, then you have to create your own realm and set it in properties, like this:

    keycloak:
      realm: your-realm
    ozgcloud:
      usersync:
        period: "6h"

    Running the server with custom realm

    In order to start user-manager-server connecting againts dev keycloak locally with custom realm use below configuration in your IDE or CLI.

    -Dquarkus.profile=local,remotekc
    -Dquarkus.oidc.auth-server-url=https://sso.dev.by.ozg-cloud.de/realms/sebo-test
    -Dozgcloud.keycloak.api.realm=sebo-test
    -Dozgcloud.usersync.period="5s"

    Packaging and running the application

    The application can be packaged using:

    ./mvnw package

    It produces the quarkus-run.jar file in the target/quarkus-app/ directory. Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/ directory.

    The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar.

    If you want to build an über-jar, execute the following command:

    ./mvnw package -Dquarkus.package.type=uber-jar

    The application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar.

    Creating a native executable

    You can create a native executable using:

    ./mvnw package -Pnative

    Or, if you don't have GraalVM installed, you can run the native executable build in a container using:

    ./mvnw package -Pnative -Dquarkus.native.container-build=true

    You can then execute your native executable with: ./target/user-manager-1.0.0-SNAPSHOT-runner

    If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.

    Related Guides

    • MongoDB with Panache (guide): Simplify your persistence code for MongoDB via the active record or the repository pattern
    • SmallRye Health (guide): Monitor service health

    Provided Code

    RESTEasy Reactive

    Easily start your Reactive RESTful Web Services

    Related guide section...

    SmallRye Health

    Monitor your application's health using SmallRye Health

    Related guide section...

    Best parctice

    User package-private fields for injected fields

    This involves injection fields, constructors and initializers, observer methods, producer methods and fields, disposers and interceptor methods.

    See section 2 of quarkus guide

    Quarkus Speichernutzung

    Usermanager Einstellungen

    Usermanager als über-jar erstellen und lokal starten:

    ./mvnw clean package -Dquarkus.package.type=uber-jar
    
    java -Dquarkus.oidc.auth-server-url=https://sso.dev.by.ozg-cloud.de/realms/by-kiel-dev \
        -Dozgcloud.user-manager.url=http://localhost:8080 \
        -Dkeycloak.url=https://sso.dev.by.ozg-cloud.de \
        -jar ./target/user-manager-server-1.3.0-SNAPSHOT-runner.jar

    Usermanager als native Anwendung erstellen und lokal starten:

    ./mvnw clean package -Pnative
    
    ./target/user-manager-server-1.3.0-SNAPSHOT-runner \
        -Dquarkus.oidc.auth-server-url=https://sso.dev.by.ozg-cloud.de/realms/by-kiel-dev \
        -Dquarkus.mongodb.connection-string=mongodb://localhost:27018 \
        -Dozgcloud.user-manager.url=http://localhost:8080 \
        -Dkeycloak.url=https://sso.dev.by.ozg-cloud.de \
        -Dozgcloud.keycloak.api.user=usermanagerapiuser \
        -Dozgcloud.keycloak.api.password=hlc_j1I1Ji0trC0 \
        -Dozgcloud.keycloak.api.realm=by-kiel-dev \
        -Dozgcloud.keycloak.api.client=alfa \
        -Dozgcloud.usersync.period="5m" \
        -Xmx32m

    Commands

    Anzeigen des Verwendeten Speichers:

    ps -e -o pid,rss,args | grep application

    Anzeigen der Details der Speichernutzung:

    pmap -x [pid]

    Loggen der Speichernutzung in Datei:

    top -b -d1 -o +%MEM | grep user-manager >> usermanager_Xmx32m_long.tsv

    Quarkus Speicherverwendung

    Minimale quarkus features: cdi, resteasy-reactive, smallrye-context-propagation, vertx

    Verbrauchter Speicher ohne festgelegtem Heapspace

    Application Selected additional features Memory Usage in MB
    quarkus-test-min-1.0.0-SNAPSHOT-runner - 39,232
    quarkus-test-1.0.0-SNAPSHOT-runner resteasy-reactive-jackson 44,172
    quarkus-test-db-1.0.0-SNAPSHOT-runner mongodb-client, mongodb-panache, narayana-jta, resteasy-reactive-jackson 46,936
    quarkus-test-um-1.0.0-SNAPSHOT-runner config-yaml, grpc-server, micrometer, mongodb-client, mongodb-panache, narayana-jta, smallrye-health, scheduler 52,068
    quarkus-test-oidc-1.0.0-SNAPSHOT-runner config-yaml, grpc-server, micrometer, mongodb-client, mongodb-panache, narayana-jta, smallrye-health, scheduler, oidc, keycloak-admin 71,580
    user-manager-server-1.3.0-SNAPSHOT-runner Usermanager Projekt 124,164

    Speicher bei Last

    Lastest wurde über SoapUI (Projekt Usermanager user-manager-server/src/test/resources/Usermanager-REST-Last.xml) gemacht

    Heapspace max Memory Usage in MB max Transactions/s
    default 160 300
    32m 99 115

    Empfohlene Speichereinstellungen

    Prod:

      limits:
        cpu: "500m"
        memory: "192Mi"
      requests:
        cpu: "50m"
        memory: "192Mi"

    Dev:

      limits:
        cpu: "500m"
        memory: "100Mi"
      requests:
        cpu: "50m"
        memory: "100Mi"

    Weitere Urls

    https://e.printstacktrace.blog/graalvm-heap-size-of-native-image-how-to-set-it/

    https://quarkus.io/guides/performance-measure

    https://www.graalvm.org/22.0/reference-manual/native-image/MemoryManagement/

    https://github.com/quarkusio/quarkus/issues/22757