The FACN Stack

03/20/2020

The FACN Stack

One of the best cloud stacks available for .NET Core developers in the current year!

n the current year, it appears difficult for .NET developers to find databases, frameworks and platforms that hit the magic trifecta of innovation, developer-friendly and budget-friendly all at the same time. But we've found three that meet all of these criteria that developers should be looking at today.

F - Google Cloud Firestore (F)

Google Cloud Firestore initially started as a product underneath the Firebase platform Google bought a few years back. It's since migrated into GCP as a replacement to the Google Cloud Datastore product platform, once considered a key component to the AppEngine solution stack, which has taken a major upgrade path since its introduction of the flexible environment which abstracts everything into Docker containers running behind NGINX. But I digress.

Firestore gives .NET developers two basic objects - Collections and Documents. Collections can nest inside of documents, which can come in handy if you've got nested objects. Querying data is very easy, using the Collection object to build Query objects for filtering items down.

We're in the process of building common objects for web applications (blogs, etc.) and you can find our repository for this at https://github.com/endpointsystems/EPSWeb.Common.Firestore; our NuGet package for this is available at https://www.nuget.org/packages/EPSWeb.Common.Firestore/ if you want to keep track of it.

For .NET developers - You can find all of the .NET SDKs over at this GitHub Repository, where the legendary John Skeet maintains the SDKs and does an excellent job of handling any questions or concerns you have with the SDKs themselves.

the plug

The free tier to Firestore includes 50,000 daily document reads, 20,000 document write, and document delete operations. That's a lot of daily operations!

A - Algolia

One of the things that's vexed me the most in web application development is the simple question of: how do I provide web searching inside my website? Google used to provide this service, but for mysterious reasons gave it up.

Lucky for us, there's Algolia - a SaaS platform built from the ground up to compete with ElasicSearch who prioritizes relevance in search to almost anything else.

Algolia has a host of products and product features:

  • Search API for building search for your web content
  • Rules to optimize search result relevance
  • Instant Search UI components to implement in your web application
  • Search Analytics to give you insights to what your customers are looking for in your website
  • A/B Testing for splitting up search and search relevance stragies
  • Personalization for a personalized search experience
  • Visual Editor for a personalized view of what's happening in your web app platform
  • Algolia Crawler, a hosted and highly customizable crawler to parse out sites and site information (Enterprise feature)

The Search SDK

Algolia's .NET SDK is a very thorough and easy to use client for developers, although it can be very tricky. For starters, the amount of data you can save in a record is ver much correlated to the subscription level you have.

One thing you'll find yourself doing, especially if you're entering a blog or a lot of text, is breaking up the text into multiple records. What this means for you is, if you have a large blog (or other) entry, you'll need to make sure your entry is scattered across multiple entries for lookup purposes. While this may seem off-putting, this is actually by design - records need to stay small in order to remain searchable AND fast. if you have a search query over ten milliseconds, contact us - mainly because we want to see what you did to make it so slow!

Algolia documentation can be found here: https://www.algolia.com/doc/

the plug

Algolia gives you 10,000 records and 50,000 operations per month at no additional cost. There's also size restrictions on each record (I think it's about 1k per record in the free edition) but I can't find any specific documentation that outlines this

C - Cloudinary

This, hands-down, is our favorite API.

Imagine having a difficult image you're trying to get to 'work' within your website (if you're a front-end developer, it's easy if you try). Imagine needing to change some aspect of the image. Now, imagine using the URL to do that. That's just a taste of what you get with Cloudinary's amazing API.

Cloudinary is an asset tracking and management platform for images and video (you can also store other files up there in a pinch, like JS or CSS files). You can set up folders, asset tags, and all kinds of metadata information for your images, and use that info in your application for display, management or other purposes using their very developer friendly client SDK.

There are a lot of free and paid third-party additions you can add to your images as well. There's watermarking, cropping and scaling, and a whole host of indexing, moderation and other features from Azure, Amazon and Google if you're a cloud customer (things we can help you with if you need it, btw).

the plug

Cloudinary gives you a very generous Free Classic Plan which consists of:

  • 20,000 monthly transformations
  • 300,000 images and videos
  • 10GB monthly storage
  • 20GB monthly viewing bandwidth

We've got more than a handful of sites running on this plan, and we've yet to hit anything over 50% of our usage targets so far. If you ever get into commercial territory, they use a very democratic system of credits that are both affordable and fairly priced. One of our chief complaints about SaaS platforms is the parabolic curve around the pricing, but Cloudinary is one platform that deserves 'credit' for the excellent work they do in keeping things scalable.

Did we mention they're our favorite? They're our favorite. Everyone in the web development community (to say nothing of the vaunted.NET community!) should be using them and singing songs praising them.

They even have an affiliate program giving us free credits for referring them to you, but we're not providing a link because we can't find it we think you should try them out regardless of what we're saying about them.

N - .NET Core

Probably expected this one - we needed it to create the ultimate acronym.

But.

There's no denying that the .NET Core is turning into one of the greatest tech stacks to ever hit the planet for building web and cloud solutions. Microsoft deserves a lot of credit for what they've done in breathing new life (and new platforms) into one of the most popular frameworks they've ever built (outside VB6, of course - long live Visual Basic!).

If you've made it this far into our blog post, you already know that .NET Core is the best solution for web apps. You know that server-side rendering is king for websites that want search engines to pay attention to them, and you know that Blazor is king for websites that need to be applications to web clients.

You already know this.

But, you may not have known about the FACN stack, so hopefully that helps you build faster, better and (most importantly) save some money in this competitive space.

If you have any questions, well... you know what to do.