NimblePros

Recent Posts

What is Specification Driven Development (SDD)?

There are many different approaches to software development. In the earliest days, there was the “Test Last” or “Code First” approach. A business analyst would work with the client to develop requirements. Once all the requirements were gathered, they would pass them to the developers, who would write the application from beginning to end. The “finished” product would be handed back to the client, or maybe to a QA team for testing (if there was a big enough budget). That testing was usually manual, and slow, and it depended on whomever was selected for testing understanding the product and what it was supposed to do, which they often really didn’t. Sometimes, the process worked. Often, it didn’t. Features and edge cases would often be missed. Critical business logic would be incorrect. The end product was often nothing like the client envisioned, or wanted. Sometimes, if there was a big enough budget available, there would be iterations to fix some of the more egregious issues. But often they would have to make do with the result.

Read more →

Microsoft Resiliency Extensions and Polly Part 4 - Proactive Strategies

While reactive strategies respond to failures after they occur, proactive strategies prevent problems before they happen. In this post, we'll explore the two essential proactive strategies: Timeout and Rate Limiter. The Rate Limiter strategy is particularly versatile, offering both traditional rate limiting (controlling requests over time) and concurrency limiting (controlling simultaneous operations). Together, these strategies help you constrain resource usage and execution time to keep your applications stable and performant.

Read more →

Microsoft Resiliency Extensions and Polly Part 2 - Telemetry with Polly

Adding observability to Polly resilience pipelines involves configuring TelemetryOptions for logging, customizing severity levels for resilience events, integrating OpenTelemetry to export metrics to monitoring dashboards, and creating custom MeteringEnricher classes for contextual data. This provides crucial insights into how applications handle service failures and enables data-driven optimization of resilience strategies.

Read more →