Aaron Alexander

Recent Articles

Load Balancing with Nginx and Docker

The previous post showed how to use Nginx as a reverse proxy to an ASP.NET Core application running in a separate Docker container. This time, I’ll show how to use a similar configuration to spin up multiple application containers and use Nginx as a load balancer to spread traffic over them. Desired architecture The architecture […]
close up laptop keyboard and screen with code

Nginx Reverse Proxy to ASP.NET Core – Separate Containers

The previous blog post showed how to setup a reverse proxy between Nginx and an ASP.NET Core application. In that example, both Nginx and the Kestrel process ran in the same box. As alluded to, there is another (preferable) option. This time, we’ll create two separate containers: one for the application and one for the […]
SEP hex pattern overlay of person working on laptop

Nginx Reverse Proxy to ASP.NET Core – Same Container

As mentioned in the previous post, it is recommended to use something other than Kestrel as the front-line web server. In this example, I’m going to show how to use Nginx as a reverse proxy to the ASP.NET Core application. Reverse-proxy architecture options In terms of architecture setup for reverse proxying for ASP.NET Core in […]
Containers positioned side-by-side

Docker Hosting for ASP.NET Core

The containerization trend has been growing for a while now in the industry. The idea is to “containerize” (or package) any application into a well-defined container. This allows the same packaged application to be deployed to run on any infrastructure. In other words, placing your application in a container allows you to run the exact […]

Finding Additional Performance Problems With System Tests

In a previous post, I showed how to leverage system test components to find memory leaks. The same technique can be applied to other types of performance problems. Using a traditional profiler would highlight areas of code with performance issues. The problems could be anything from an unoptimized SQL query to process intensive code to […]

Leverage Your Tests to Find Memory Leaks

Many projects involve creating a suite of system tests alongside application features. These tests can provide some benefits that may not initially be self-evident. Generally, system tests are understood to provide several types of value: A mechanism for acceptance testing A regression suite for previously accepted application behavior Validating application behavior as part of your […]

Faster Feedback through Build Pipelining

As an industry, we’ve dedicated a lot of effort into getting better feedback faster. We’ve embraced small batches of work (iterations) that we can deliver and receive feedback upon faster. We perform user studies and observe people interacting with the software we create. We use clickable wireframes or paper prototypes to evaluate the effectiveness of […]

Creating a portable JDK with PowerShell

At times, I’ve found myself wanting to have a specific JDK available without installing another version of Java. Past reasons include wanting to test multiple Java versions on the same system or needing to use a Java tool (ex. JConsole) without installing additional software. With a small PowerShell script and 7-Zip installed*, you can easily […]

RavenDB and MongoDB: Not easily interchangeable (at least not always)

On a recent internal project, we experimented with various NoSQL database back-ends. The project had used MongoDB since its inception. However, due to some memory issues, we wanted to evaluate other document database back-ends. In the end, we selected RavenDB for evaluation. The good First, I want to mention the things I liked about using RavenDB: There […]