elmah.io Technology Stack

This post didn't age well. Almost all of the technologies on this list has been replaced with more modern options. If anyone is still interested in knowing about these details, please make sure to reach out and I'll write an updated post. For now, this post is here for historic reasons only.

We often get this question:

Which technologies, tools and frameworks do you use to develop and host elmah.io?

We already revealed some of the "secrets" in the post Danish service provides maximum scaling and secures data on Azure. This post is a thorough walkthrough of the technologies in play in order to keep the elmah.io engine running.

Windows Azure

elmah.io runs entirely on Windows Azure. We use a combination of web apps, virtual machines, service bus and storage to host everything in the cloud.

ASP.NET MVC

elmah.io is pretty much a single page application. All of the static HTML seen in the UI is served by ASP.NET MVC. We actually started out with simple HTML files, but quickly found out that MVC offers so much more than Razor (which we don't use).

ASP.NET Web API

Both our internal API for feeding the UI, as well as our public API are hosted by ASP.NET Web API. Web API may not be the coolest kid on the block, but it works great and actually got some nice features from v2.

Elasticsearch

If you ever wondered how elmah.io is able to provide instant search results when executing full text queries from the UI, Elasticsearch is the answer. This perfect NoSQL database is the foundation for most of the data access on elmah.io.

Redis

Everyone needs caching in order to provide a responsive product. Redis has turned out as the perfect choice for not only cache DB data, but also persist temporary statistics about which mails have been send etc.

Visual Studio

Couldn't really develop without it. Everything from the website to all of the backend code is developed in Visual Studio.

ReSharper

We'd love to tell you that we type fast enough to code without ReSharper. Unfortunately this is not that case. ReSharper provides us with so many nice features to speed up development time.

TeamCity

Developing a product in 2015 without a build server is wack. We use TeamCity to build and test our internal code. For the open source parts of elmah.io, we use a combination of TeamCity provided by CodeBetter and Appveyor.

elmah.io

One of the goals for elmah.io, is to be able to work as a cloud logging platform for ... well elmah.io. We eat our own dog food and use all of the features in elmah.io ourselves. In parallel, we use Serilog and Elasticsearch to log a copy of all messages. If elmah.io goes down, we always have an external log telling us what went wrong.

Mandrill

We send a lot of transactional mails. Various features for sending emails from elmah.io are available and for that we use Mandrill. Mandrill provides some nice templating features that we blogged about as well: Sending transactional emails using Mandrill and .NET.

New Relic

We want to provide the best performing .NET cloud logging platform out there. To keep an eye on performance and to debug when something starts performing poorly, we monitor every web request with New Relic.

Paymill

We wouldn't be anywhere if we weren't able to accept payments from our users. Paymill handles all of our transactions.

MkDocs

We recently switched from Wordpress to MkDocs on all of our static stuff like documentation and blog. MkDocs is a nice little documentation tool written in Python. Every article and blog post are now written in Markdown and available on GitHub.

Frameworks

Besides all of the larger products and SaaS services, we use a large range of .NET frameworks for implementing and testing the various elmah.io features. NUnit, Moq and Autofixture for unit testing. Autofac for dependency injection. A range of client side libraries for building the crisp elmah.io UI like Knockout, Bootstrap, jQuery and d3. For integrating with social providers, we use SimpleAuthentication, a lightweight framework for hooking up with Facebook etc. Topshelf runs a bunch of Windows Services, hosting different consumers of our service bus, sending out emails etc.