RSSAmplifier

Blog

Yet another developer blog

tpeczek.comRSS feed ↗25 posts

Latest posts

Exploring Neon as a Serverless Postgres Alternative for .NET Applications on Azure - Part 1 (Simple ASP.NET Core on App Service)

Neon , a serverless Postgres platform, was recently brought to my attention. It comes with the promise of some interesting features like scale-to-zero, on-demand autoscaling, point-in-time restore and time travel with up to 30 days retention, instant read replicas, and probably the most unique, branching (which allows you to quickly branch your schema and data to create isolated development, test,…

Monitoring C# Azure Functions in the Isolated Worker Model - Infrastructure & Configuration Deep Dive

Not so long ago my colleague reached out with a question "Are there any known issues with ITelemetryInitializer in Azure Functions?". This question started a discussion about the monitoring configuration for C# Azure Functions in the isolated worker model. At some point in that discussion I stated "Alright, you've motivated me, I'll make a sample". When I sat down to do that, I started wondering…

ASP.NET Core 9 and IAsyncEnumerable - Async Streaming JSON and NDJSON From Blazor WebAssembly

I've been exploring working with asynchronous streaming data sources over HTTP for quite some time on this blog. I've been playing with async streamed JSON and NDJSON. I've been streaming and receiving streams in ASP.NET Core and console applications. But there is one scenario I haven't touched yet - streaming from Blazor WebAssembly. Why? Simply it wasn't possible. Streaming objects from Blazor…

Azure Functions Extensibility - Extensions and Isolated Worker Model

I've been exploring the subject of Azure Functions extensibility on this blog for quite some time. I've touched on subjects directly related to creating extensions and their anatomy, but also some peripheral ones. Azure Functions Extensibility - Overview Azure Functions Extensibility - Triggers Azure Functions Extensibility - Runtime Scaling Azure Functions Extensibility - Extending Extensions I…

Azure Functions Extensibility - Runtime Scaling

In the past, I've written posts that explored the core aspects of creating Azure Functions extensions: Azure Functions Extensibility - Overview Azure Functions Extensibility - Triggers In this post, I want to dive into how extensions implement support for the Azure Functions scaling model. The Azure Functions scaling model (as one can expect) has evolved over the years. The first model is…

Experimenting With .NET & WebAssembly - Running .NET Based Slight Application On WASM/WASI Node Pool in AKS

A year ago I wrote about running a .NET based Spin application on a WASI node pool in AKS . Since then the support for WebAssembly in AKS hasn't changed. We still have the same preview, supporting the same versions of two ContainerD shims: Spin and Slight (a.k.a. SpiderLightning). So why am I coming back to the subject? The broader context has evolved. With WASI preview 2, the ecosystem is…

Azure Functions Integration Testing With Testcontainers

As developers, we want reassurance that our code functions as expected. We also want to be given that reassurance as fast as possible. This is why we are writing automated tests. We also desire for those tests to be easy to run on our machine or in the worst-case scenario on the build agent as part of the continuous integration pipeline. This is something that can be challenging to achieve when it…

Revisiting Various Change Feeds Consumption in .NET

The first time I wrote about change feeds consumption from .NET (ASP.NET Core to be more precise) was back in 2018 in the context of RethinkDB. It was always a very powerful concept. Having access to an ordered flow of information about changes to items is a low-entry enabler for various event-driven, stream processing, or data movement scenarios. As a result, over the years, this capability (with…

Deploying a Dapr Sidecar to Azure Container Instances

Containers have become one of the main, if not the main, ways to modularize, isolate, encapsulate, and package applications in the cloud. The sidecar pattern allows for taking this even further by allowing the separation of functionalities like monitoring, logging, or configuration from the business logic. This is why I recommend that the teams who are adopting containers adopt sidecars as well.…

DevOps Practices for Azure Infrastructure - Continuous Operations & Continuous Monitoring

This series on implementing DevOps practices for Azure infrastructure is nearing its conclusion. The last part remaining is completing the operations side of the loop. This brings focus to the last two practices on our list: Continuous Planning Continuous Integration Continuous Delivery Continuous Deployment Continuous Testing Continuous Operations Continuous Monitoring Continuous Operations &…

DevOps Practices for Azure Infrastructure - Continuous Testing

So far, as part of my series on implementing DevOps practices for Azure infrastructure, I've walked through Continuous Integration , Continuous Delivery, and Continuous Deployment . In many conversations I had around implementing DevOps I've heard an opinion that once you have CI/CD (or CI/CD/CD) you have DevOps. That's not true. DevOps is about a continuous loop of feedback, automation,…

DevOps Practices for Azure Infrastructure - Continuous Delivery & Continuous Deployment

In my previous post , I started the journey of implementing DevOps practices for infrastructure. I've proposed implementation for Continuous Integration practice, which covers the Create and Verify stages of the DevOps pipeline. But Continuous Integration is just the first of several practices which should be implemented for a complete pipeline: Continuous Planning Continuous Integration…

DevOps Practices for Azure Infrastructure - Continuous Integration

The generally adopted definition of DevOps methodology says that it's a combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver solutions. That's very broad. So broad, that initial adoption in the case of many organizations has focused on applying it only to application code. This has led to the naming of several additional methodologies to…

Server Timing API Meets Isolated Worker Process Azure Functions - Custom Middleware and Dependency Injection

Server Timing API has piqued my interest back in 2017 . I've always been a promoter of a data-driven approach to non-functional requirements. Also, I always warned the teams I worked with that it's very easy to not see the forest for the trees. Server Timing API was bringing a convenient way to communicate backend performance information to developer tools in the browser. It enabled access to…

Experimenting With .NET & WebAssembly - Running .NET Based Spin Application On WASI Node Pool in AKS

I'm quite an enthusiast of WebAssembly beyond the browser. It's already made its way into edge computing with WasmEdge , Cloudflare Workers , or EdgeWorkers . It's also made its way into cloud computing with dedicated clouds like wasmCloud or Fermyon Cloud . So it shouldn't be a surprise that large cloud vendors are starting to experiment with bringing WASM to their platforms as well. In the case…

Micro Frontends in Action With ASP.NET Core - Universal Rendering With Blazor WebAssembly Based Web Components

In the last two posts of this series on implementing the Micro Frontends in Action samples in ASP.NET Core, I've focused on Blazor WebAssembly based Web Components as a way to achieve client-side composition. As a result, we have well-encapsulated frontend parts which can communicate with each other and the page. But there is a problem with the client-side rendered fragments, they appear after a…

Commits Promotion Between GitHub and Azure Databricks

One of the projects I'm currently working on is utilizing Azure Databricks for its machine learning component. The machine learning engineers working on the project wanted to use external IDEs for the development. Unfortunately, using external IDEs doesn't remove all needs for developing or testing directly in Azure Databricks. As we wanted our GitHub repository to be the only source of truth, we…

Micro Frontends in Action With ASP.NET Core - Communication Patterns for Blazor WebAssembly Based Web Components

I'm continuing my series on implementing the Micro Frontends in Action samples in ASP.NET Core, and I'm continuing the subject of Blazor WebAssembly based Web Components. In the previous post, the project has been expanded with a new service that provides its fronted fragment as a Custom Element power by Blazor WebAssembly. In this post, I will explore how Custom Elements can communicate with…

Micro Frontends in Action With ASP.NET Core - Composition via Blazor WebAssembly Based Web Components

This is another post in my series on implementing the samples from Micro Frontends in Action in ASP.NET Core: Server-Side Routing via YARP in Azure Container Apps Composition via YARP Transforms and Server-Side Includes (SSI) Composition via Blazor WebAssembly Based Web Components Communication Patterns for Blazor WebAssembly Based Web Components Universal Rendering With Blazor WebAssembly Based…

Exploring Communication of Rate Limits in ASP.NET Core With Rate Limit Headers

Rate limiting (sometimes also referred to as throttling) is a key mechanism when it comes to ensuring API responsiveness and availability. By enforcing usage quotas, it can protect an API from issues like: Denial Of Service (DOS) attacks Degraded performance due to traffic spikes Monopolization by a single consumer Despite its importance, the typical approach to rate limiting is far from perfect…

Micro Frontends in Action With ASP.NET Core - Composition via YARP Transforms and Server-Side Includes (SSI)

I'm continuing my series on implementing the samples from Micro Frontends in Action in ASP.NET Core: Server-Side Routing via YARP in Azure Container Apps Composition via YARP Transforms and Server-Side Includes (SSI) Composition via Blazor WebAssembly Based Web Components Communication Patterns for Blazor WebAssembly Based Web Components Universal Rendering With Blazor WebAssembly Based Web…

Micro Frontends in Action With ASP.NET Core - Server-Side Routing via YARP in Azure Container Apps

Recently, I've been reading Micro Frontends in Action and while doing it I've decided that I want to implement the samples in ASP.NET Core and host them on Azure. Then I had a thought, that maybe I can use this as an opportunity to play with some technologies I didn't have a chance to play with yet, like YARP or Azure Container Apps . Once I did that, the next thought was that maybe I should write…

ASP.NET Core 6 and IAsyncEnumerable - Receiving Async Streamed JSON in Blazor WebAssembly

Back in July, I've shared my experiments around new JSON async streaming capabilities in ASP.NET Core 6 . Last week I've received a question about utilizing these capabilities in the Blazor WebAssembly application. The person asking the question has adopted the DeserializeAsyncEnumerable based client code, but it didn't seem to work properly. All the results were always displayed at once. As I…

Leveraging Azure Cosmos DB Partial Document Update With JSON Patch in an ASP.NET Core Web API

A couple of weeks ago the Cosmos DB team has announced support for patching documents . This is quite a useful and long-awaited feature, as up to this point the only way to change the stored document was to completely replace it. This feature opens up new scenarios. For example, if you are providing a Web API on top of Cosmos DB, you can now directly implement support for the PATCH request method.…

Server-Sent Events and ASP.NET Core - Disconnecting a Client

One of the common requests for my Server-Sent Events library is the ability to disconnect clients from a server. My usual answer was that this is best to be implemented as a logical operation where the server sends an event with a specific type and clients to react to it by closing the connection. I was avoiding putting disconnect functionality into the library because it's not fully defined by…