\uD83D\uDCDA Relevant data
https://camunda.com/best-practices/deciding-about-your-stack/
Beslutet tas i sammanhanget av den infrastruktur vi har idag och hur omgivande miljöer/lösningar ser ut. Dvs inga krav på HA tillämpningar som exempel. När ny infrastruktur finns på plats 2023 är det antagligen relevant att titta på möjligheterna att flytta in detta där i takt med att lösningarna som nyttjas har kommit att bli mer kritiska samt större i omfattning och flöden.
\uD83D\uDCD8 Background
När vi nu bygger nytt flöde enligt målarkitektur behöver vi bestämma hur vår uppsättning av Camunda ska vara. Dagens deployment gjordes utifrån behov och för en PoC (till L&P), nu ska vi bygga i tilltänkt målarkitektur och behöver då fatta några beslut som kommer att vara styrande för vår framtid.
Några aspekter att värdera är:
Instansstrategi i termer av:
Behov av att skilja på externa och interna tillämpningar (CaseManagement vs SupportCenter)?
Behov av att skilja på processområden och verksamheter?
Teknikval t.ex. val av databas.
Arkitektur för servrar (Beslut #1)
A Köra vidare i PoC deployment | B Greenfield | |
---|---|---|
Description | Vi sätter inte upp nya serverar utan använder samma som används i ärendehanteringen för Lön & Pension | Vi sätter upp nya servrar för Dev,Test och Prod |
Pros and cons | Finns på plats.
Sattes inte upp optimalt från början, utan utvecklades under projektets gång. Ännu en databas installeras (PostgreSQL i tillägg till Mariadb som nyttjas idag). Placerad på fel segment i nätet (staging och produktionsmiljön, ej development). Går dock att ändra. | Renare installation (inga andra db kvar bara PostgreSQL). Placeras i rätt segment på nätet. Ny set up krävs. Betydande arbete för driften. Lång ledtid. |
Estimated cost | SMALL | MEDIUM |
Olika typer av deploy av Camundas processmotor (Beslut #2)
A. Köra vidare med embeded process engine | B. Greenfield enligt Camunda med remote process engine | |
---|---|---|
Description | Processmotorn deployas i ett Spring Boot-projekt tillsammans med övrig Java-kod. Detta är så vi har gjort i ÄHS för Lön & Pension | Processmotorn körs i en egen docker-container och deployas separat från övriga kod. |
Pros and cons | Klipp och klistra från tidigare projekt, vi vet exakt hur man gör Hård koppling mellan processmotor och övrig kod, eftersom dom driftsätts samtidigt. Är inte längre det rekommenderade sättet från Camunda | Följer best practice från Camunda. Separerar processmotorn från annan kod som då inte blir beroende av varandra vid driftsättning, omstart etc. Använder docker vilket är en teknik som bara kommer att öka i användning inom Sundsvalls kommun. Vi sätter upp vår infrastruktur för framtiden. Har inte satts upp tidigare, så det kommer ta längre tid än att kopiera det vi gjort tidigare. |
Estimated cost | LITEN | SMALL TILL MEDIUM |
Grad av separering för Camunda för internt och externt nyttjande (Beslut nr 3).
Låta Camunda stödja både CaseManagement och SupportCenter från samma instans eller ha en för resp (CaseManagement resp SupportCenter) dvs en uppdelning i internt och exteternt.
Nedan en deployment vy med CaseManagement som exempel (och därmed extern e-tjänst (OeP).
A. Ha både intern och extern instans på samma servrar | B. Separera intern och extern instans på olika servrar | |
---|---|---|
Description | Vi använder samma servrar för externt och internt bruk, men med olika Camunda-instanser för varje applikation. | Olika servrar används och vi deployar till olika beroende på vart Camunda ska vara tillgängligt ifrån. |
Pros and cons | Mindre antal maskiner att hantera. Ej möjligt att skilja på servicefönster för internt och externt. | Fysisk separering av flöden. Mer maskiner utan att någon direkt högre säkerhet erhålls. |
Estimated cost | LITEN | MEDIUM |
Historiknivå för Camunda (Beslut nr 4).
Camunda Platform Enterprise kommer med olika former av historik för körda processinstanser där man kan se olika saker beroende på vilken historiknivå man sätter. Det här behöver sättas första gången Camunda startas upp i en ny miljö, för sedan är det väldigt mycket svårare att ändra. Det beror på att en massa databas-tabeller skapas upp och är sedan inte tänkta att ändras på något sätt.
Här beskrivs dom olika nivåerna från lägst till högst. Tar inte med nivån eftersom den inte direkt är en nivå utan snarare ett sätt som beskriver hur flera processmotorer som ansluter mot samma databas ska bete sig.
För mer info: https://docs.camunda.org/manual/latest/user-guide/process-engine/history/
En viktig sak att ha koll på är att historik är väldigt krävande rent databasmässigt. Camunda kommer regelbundet skriva historik till historikdatabasen, och det är något som får en databas att växa i storlek snabbare än man kan tro. Det går snabbt att komma upp i flera 100 GB om man kör full historik och skickar runt mycket data i sin process.
Vi måste dessutom besluta hur ofta historikdata måste rensas, för den måste regelbundet rensas för att inte historikdatabasen ska växa sig för stor. Om det är så att man vill spara historikdata längre tid,från flera månader tillbaka eller ännu längre, så bör vi fungera på att använda en separat databas skild från Camundas vanliga databas för runtime-data.
Mer om history cleanup: https://docs.camunda.org/manual/7.16/user-guide/process-engine/history/#history-cleanup
A. NONE | B. ACTIVITY | C. AUDIT | D. FULL | E. CUSTOM | |
---|---|---|---|---|---|
Description | Historik är avslagen och ingen data skrivs till historikdatabasen. | Här loggas vilken väg i en process som har tagits och vilka aktiviteter som har körts. | Samma som Activity men du får även historik över variabler. | Förutom allt i Activity så får du också historik över User Taks och när en användare har kört dom. Du får också tillgång till historik över DMN-tabeller och vilka regler som har körts där. | Du kan också bygga en egen custom level med hjälp av Java-kod om inte någon av dom vanliga historiknivåerna duger. |
Pros and cons | Ingen data skrivs till historikdatabasen, vilket ökar prestanda i processerna som körs. Du tappar all spårbarhet i Camunda Cockpit och du kan endast se incidenter och instanser som körs. | Om man mest är intresserad av hur processerna körs och inte vilken data som har använts så är det här en bra nivå. Mindre krävande än andra nivåer när det kommer till prestanda, utan att man helt tappar historiken. Du får ingen information om vad olika variabler har haft för värde, vilket kan göra felsökning svårare. Ingen information om vilka beslut via DMN som har tagits. | Vid felsökning i historikdata så kan man se vilket värde en viss variabel har haft och hur det har ändrats under processens gång. Mer last på databasen, även med minimalt antal variabler i processen. Ingen information om vilka beslut via DMN som har tagits. | Du får full tillgång till all historik för din process och kan se exakt vad som har hänt i den. Inkluderar User tasks och beslut via DMN. Allra störst last på databasen, både skrivningar till databasen och hur mycket den kommer att växa. | Du får full kontroll över vilken data som sparas i historikdatabasen. Kräver utvecklingstimmar istället för att bara använda en av dom färdiga historiknivåerna. Kräver också mer detaljerad kunskap om exakt vilken historikdata som ska sparas undan. |
Estimated cost | LITEN | MEDIUM | MEDIUM | MEDIUM | HÖG |
\uD83C\uDF1F Outcome
Beslut 1: Vi kör vidare i befintliga servrar men flyttar dessa till nytt nät (alt A).
Beslut 2: Greenfield enligt Camunda med remote process engine (alt B).
Beslut 3: Ha både intern och extern instans på samma servrar (alt A).
Beslut 4: Full (alt D).