To create our community-in-a-box beta Rideology.io we invested more than 2,000 hours of development time to craft a hybrid version of Kentico's and Umbraco's content management systems (CMSs) because each CMS tool offers distinct features and benefits we like. We write programs to take advantage of features we like while downplaying or not using things we don't like as much. Far from an "out-of-the-box" installation Rideology.io takes advantage of Umbraco's headless CMS and Kentico's easy to use content editing interface.
Headless Versus Monolithic or Legacy CMS
A headless cms allows us to create a scalable, fast, secure, and modular content distribution system. We like how we can program Umbraco as a monolith and headless cms. A monolithic CMS couples the front and back-end layers as an all-in-one solution to store, manage, and present content using a single codebase. WordPress, Joomla, and Drupal are "legacy" content management systems since they've been around for ten years or more.
A monolithic CMS is a traditional CMS that couples front-end and back-end layers. As the newest trend in content management systems, headless CMS allows us to create a highly scalable, fast, secure, and modular content distribution system. Examples of an external client using APIs from a headless CMS include:
-
Static Site Generator (SSG
SSGs create static HTML web pages based on raw data and templates, automating the task of coding individual HTML pages. These pre-built HTML pages load very quickly in users' browsers.
-
Single Page Application (SPA)
SPAs know and take advantage of the fact that most web page information stays the same, with only a few pieces needing to update at a time. The SPA only sends what a user needs with each click, so this piece-by-piece client-side method makes user load times much faster, helping with a website's user experience (UX) and search engine optimization (SEO.
-
Mobile Apps
Mobile applications often use a headless CMS with API calls to render content.
While the tech industry has many names, including "Headless CMS," "API-first," "Content Infrastructure," "Content Hubs," or "Content as a Service," look closer. Many names describe the same thing - a database back-end with a web-based user interface (UI) with content accessed via an API.
Rideology.io utilizes a headless CMS and API calls because we saw smartphones as the primary user interface (UI). In addition, we knew car lovers would load large images of beloved cars, so a headless CMS was the best way to quickly render webpages with lots of information.
Dynamic Content Compression, Static File Compression
Because of those big car pictures uploaded by users (user-generated Content or UGC), we knew Rideology.io, a mix of dynamic and static file compression. Configuring an Internet Information Service (IIS) server's dynamic compression compresses responses coming from ASP.net, Internet Server Application Programming Interface (ISAPI) Extensions, and Common Gateway Interface (CGI) handlers.
Dynamic websites present different information to different visitors. Variables such as location, time, settings, previous website behaviors (shopping habits, for example), and user preferences determine what content an individual user sees to create a personal and interactive experience.
Dynamic front-end flexibility requires more back-end complexity. For example, when our web servers (hardware or cloud) build pages "on the fly," they pull information from one or multiple databases to construct an HTML page customized for the user based on programmed variables, business rules, and other factors.
We use server-side scripting such as JS and Jquery in addition to client-side languages such as HTML, CSS, and Javascript to render pages in a complex dance a website's visitors never see or know. Instead, users see what we want them to see quickly and securely, with personalization and interactivity. In addition, we use compression and content delivery networks (CDNs) to make websites 50% faster while consuming 40 - 70% less bandwidth.
Here are a few of our compression tricks:
-
Static Content Caching
Static caching helps HTML files, images, or JavaScript resources, allowing them to be served directly from the CDN's network's globally distributed data centers. It also reduces the load on your servers because content such as Rideology's large UGC pictures of cars is served directly from the CDN.
-
Dynamic content Caching
We use the patent-pending Incapsula solution's advanced machine-learning tool to profile and gather intelligence about each website resource. Some dynamically generated resources rarely change over time for some users. Therefore, we use Incapsula's intelligence to optimize caching and resource accuracy.
-
Serving Pages from Memory
We use advanced machine learning algorithms and frequency analysis to identify the most frequently accessed resources. Then we load those resources from physical memory, bypassing the file system and other generic mechanisms (such as buffer-cache). This advanced capability means our customers' web pages load faster than other caching systems can provide.
-
Client-Side Caching -
WTE Server Tech uses the same advanced algorithms used for dynamic caching to optimize client-side caching to place as much content as possible in a visitor's browser or mobile device cache. Client-side caching produces instant loading of resources to create the best possible user experience (UX). Our proprietary algorithms help CDNs enrich browser caching instructions while setting the right refresh policy to keep content fresh so users don't receive stale content.
-
"On the Fly" Compression
Configuring server resource compression requires technical expertise and consumes valuable web server processing power. Instead, we dynamically compress HTML, CSS, and JavaScript files stored on servers "on the fly" using GZIP (and HTTP/1.1 chunked transfer encoding where possible) to accelerate page load times at the cloud layer. By intelligently compressing web resources, Incapsula reduces the amount of data sent over the network without server configuration hassles.
Content Delivery Networks
CDNs are geographically distributed servers working together to deliver Internet content quickly and safely. CDNs help speed the delivery of HTML pages, javascript files, cascading style sheets (CSS), images, and videos. Today, CDNs deliver the majority of web traffic. We knew those large UGC pictures of cars meant we would need a CDN for Rideology.io.
Using a CDN when malicious attacks happen daily and frequently change content can be tricky. That's why we use the same advanced compression and resource utilization algorithms to configure our client's CDNs for security, the best user experience, and hassle-free content management. Rideology.io uses Akamai, Amazon, Cloudflair CDNs.
CDN Benefits
CDNs don't host content, but they help with content caching at the network edge. Edge computing focuses on bringing computing power as close to data sources as possible to reduce latency (so pages load faster) and use bandwidth efficiently and economically. We want to get as many processes as close to our customers' users as possible, given other considerations (speed, money, time). We want to bring as much computation to the network's edge as possible to minimize long-distance communication between a client and a server.
Every CDN installation is different, but generally, CDNs provide four benefits:
-
Faster Load Times
When website visitors use a nearby CDN server, pages load faster, and there are few things your website's visitors love more than speedier page loads (free shipping, maybe, but only if that page loads fast too).
-
Lower Bandwidth Costs
Through caching and the other optimizations outlined above, CDNs reduce data an origin server must provide must serve, thus reducing hosting costs. CDNs aren't free, but the delta between CDN usage costs and bandwidth savings usually favors the installation of a CDN; what's the cost of slow page loads, frustrated customers, and a website investment flushed due to bad user experiences?
-
Server & Content Protection
CDNs keep pressure off of your web servers, so they don't go down as often, and even when your origin server is down, aspects of your distributed content may continue to work as you fight the fire.
-
Security
CDNs can improve safety by mitigating denial of service and other attacks.
Code Repository
Where your code is securely stored can impact development efficiency and project security. That's why we kept Rideology.io's code on GitHub and used Perforce for version control. Source control tracks and manages changes to code. Nothing is more frustrating than writing the same code twice because a team member unknowingly overwrote yesterday's work.
Time is the only thing we can't create, no matter how good our code is, so we use a combination of GitHub and Perforce to only write code once and backtrack mistakes. For example, place a comma or apostrophe in the wrong place, and an API or micro-service that worked yesterday may not work today. Perforce helps us find errant apostrophes or commas and keep on writing.