Operations | Monitoring | ITSM | DevOps | Cloud

Request Metrics

Episode 14: Designing and Testing a Data Model

It's time to think about the data model for Request Metrics. We plan to store all customer records in Redis. This requires some thought because Redis is not a relational database. The first thing we need is a user. We'd like to work on authentication soon and we won't get far without a user to login with.

Episode 13: Testing with NUnit in .NET Core

We've started writing code for Request Metrics. That code needs to be tested. We need a unit test framework for our .NET Core solution. We've used various frameworks on our .NET projects over the years, but enough has changed in .NET Core to require a small investigation into unit testing options. Ultimately, we settled on NUnit because of its good balance between simplicity and features.

Episode 12: Tweaking Systemd Services With Ansible

We thought we were done with infrastructure work. We were wrong. Just as we've started work on application code, it turns out our server configuration needs a couple changes. Our application loads its environment config based off of an environment variable. We need to ensure this variable is actually set on the server. We also want to fix our Ansible playbook which fails when run on fresh servers.

Episode 11: Connecting to Redis with .Net Core and C#

We've finally finished screwing around with basic groundwork. Today we start writing actually useful application code! First, can we connect to Redis? Connecting to Redis implies some connection strings, so we'll create a basic environment based configuration while we're thinking about it.

Episode 10: Installing Redis from Ansible Galaxy

A pre-built playbook from Ansible Galaxy lets us easily install Redis. (Even we don't re-invent the wheel every time.) The Request Metrics application will use Redis as its main data store. We need to install Redis on our servers to find out if this is a good plan. Ansible provides a repeatable way of doing this configuration work.

Query string parsing in .NET: The old way vs. the new, which is better?

Query string parsing in ASP.NET has never been pleasant. The APIs were always a little weird and had some gotchas. Well, in .NET Core, Microsoft has taken another stab at a query string parsing API. Now, remember, they've had over a decade to come up with something better.... have they managed to improve things? Let's find out.

Episode 9: Running ASP.NET Core Applications Using Systemd and Ansible

A web application isn't much use if it isn't running. We hand in our neckbeard cards and copy+paste our way out of the problem. Last episode, we configured NGINX to act as a reverse proxy for our Asp.Net Core application. We tested our setup by manually running the .Net Core app from an SSH session. Today we'll fix that stop-gap step by running our application as a service with systemd. We'll add the new service by running a few tasks in Ansible.

Episode 8: Configuring NGINX with Ansible to Support ASP.NET Core

ASP.NET Core applications have a built-in webserver called Kestrel. This internal webserver is not intended to serve requests directly. It must be placed behind a production quality webserver such as NGINX or IIS. We use Ansible to provision NGINX on our Linux server.

Episode 7: Provisioning Linux Machines With Ansible

It's time to provision our Request Metrics server. There is some common configuration that applies to all Linux servers. We want this base configuration regardless of what that specific server is doing. This a great use case for an Ansible role. Our "linux-common" role includes these among other things: