-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Etablere Redis i infrastruktur som backing for IDistributedCache #275
Comments
A precursor for #275 - Use objects and user defined types: <https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/user-defined-data-types> - Exporting types in order to make it cleaner and to add additional validation. Validation was not taken place for the module itself, but only in the main bicep file. Now we have validation all the way from bicepparam to the module in use. <https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/bicep-import#import-user-defined-data-types-preview> - Add biceppconfig with some sane lint rules --------- Co-authored-by: Ole Jørgen Skogstad <skogstad@softis.net>
Related to #275 - Added Redis resource to infrastructure - Added `host name` to the key vault and app configuration to make it accessible to the container app. - Using managed identity to connect the web apis to Redis ~~Doesn't seem like managed identity is possible for apps that read/write to the redis instance. We could use a pre-defined role, but that would only enable control plane level permissions.. ¯\_(ツ)_/¯~~
Satt opp redis-resource i Azure nå. Skal teste managed identity som er måte å autentisere mot Redis. Ser ut som det er en av de få tjenestene som ikke tar imot credentials fra Azure Credentials, men heller krever en principalId Azure/Microsoft.Azure.StackExchangeRedis#17 ... men jobbes med, og ser ut til at vi må sende med token credentials til å begynne med her. Edit: ser ut til å være en pull request som forhåpentligvis kommer inn snart så vi slipper workaround Azure/Microsoft.Azure.StackExchangeRedis#43 |
Tok en sync med @oskogstad om bruk av in-memory og Redis, og om vi skal bruke begge deler i samme miljø. Ref comment: https://github.com/digdir/dialogporten/pull/527/files#r1516954307
Vi snakket om at logikken som skal til for å bruke både in-memory og Redis kan bli ganske kompleks. Særlig når man må ta høyde for expiration med mer. Spørsmålet er om ms gained ved å bruke begge outweigher vanskeligheter med debugging, vanskeligere å skalere tjenesten (mindre kontroll på minnebruk) og implementasjonskompleksitet. Vi kan potensielt diskutere dette i refinement? Vi eventuelt lage en ny task på å forbedre cachen, men inntil videre løse det ved å kun bruke den ene eller den andre. Altså, at vi enten bruker in-memory eller Redis. |
Related to #275 Ref new cleaner entries in appsettings: https://github.com/digdir/dialogporten/pull/527/files#diff-c6838c6aab1b032787194ad73ad63002ecd89d413a405fc7b6315572bfd97417
Tenker vi tar en runde på dette i refinement. Se også #40 som diskuterer ett av behovene vi har for dette. Et annet behov jeg ser vi vil kunne få er å ha en oversikt over distinkte ressurser som alle dialogene tilhørende en gitt party refererer, som vil være viktig informasjon å kunne sende over til autorisasjonslkomponenten ifm tilgangskontroll på søke-API-et for å redusere mengden jobb den må utføre. Dette er altså informasjon vi vil ha behov for ifm autorisasjon på svært sentrale endepunkter som vil være under tung last. En Redis-cache som holdes varm uavhengig av innkommende requests løser brorparten av problemet, og unngår at requests fra brukere blokkeres eller fører til cache stampede ved expiration og ny deploy/nye replikas, så vi tenker vi begynner der. ("Holde varm"-funksjonaliteten må dog være noe vi ikke gjør oss avhengig av, det må fremdeles være en standard read-through slik at requests for ressurser som av en eller annen grunn ikke finnes i cache ikke feiler). Tanken bak en flernivås cache er at det å skulle ta på seg en 3-6(?) ms request overhead i alle disse tilfellene nok vil kunne være uhensiktsmessig dyrt (i flere forstander) og dermed noe vi må kunne unngå på sikt. Å ha en minnebasert "nivå 1" cache vil begrense trafikken fra Redis til noe kontrollerbart per replika (uavhengig av antall tråder). Jeg er ikke spesielt bekymret for minnebruken her, jeg ser ikke for meg at vi blir noen gang å bikke mer enn et knippe MB per replika. Håndtering av TTL-verdier på tvers av cahenivåene er hakket mer komplisert, men håndterbart. Jeg tror det skal være mulig å lage en custom IDistributedCache-implementasjon som wrapper både Redis og en minnebasert-cache). |
https://github.com/ZiggyCreatures/FusionCache ser interessant ut, og adresserer mange (alle?) av de problemstillingene som nevnes over og i #40 . Er kanskje noe vi bør vurdere? |
Måtte reverte til å bruke connection strings rett og slett fordi vi brukte feil Redis-bibliotek ( https://github.com/Azure/Microsoft.Azure.StackExchangeRedis). Managed Identity er ikke støttet i Ref denne her: dotnet/aspnetcore#54414 (comment) Ser ut til at det finnes en løsning, men spørs om det er verdt å implementere eller om vi skal holde på connection stringen som løsning for nå. |
Related to #275 Using Redis for IDistributedCache. Will start using FusionCache as an alternative to this, but now we have a functioning distributed cache backed by Redis.
I forbindelse med eksterne oppslag mot bl.a. ressursregisteret, skal det etableres Redis gjennom Azure Cache for Redis.
Alle steder der IDistributedCache benyttes, skal Redis være backing.
Tasks
The text was updated successfully, but these errors were encountered: