Brief Recent History 2. Backend

Platforms multiply

·

3 min read

Backend development has also changed massively in the last 10 years.

Traditionally, backend websites generated HTML and combined any static data (images, and designed components in HTML/CSS) with dynamic data, that is data that changes over time such as information from a database. The output HTML was then sent to a browser.

Mobile apps.

Mobile apps often require the same data as a website, but only require the dynamic (database) data and not any HTML, as they have their frontend code (whether that be in a Native language like Swift or iOS) or a hybrid framework like React Native or Ionic.

As such, it no longer makes as much sense to bind or conjoin the dynamic data retrieval with HTML generation. Frameworks like Django (python) and Ruby on Rails, previously primarily used for HTML (frontend websites) were often repurposed to in addition generate JSON via a restful API. This could be consumed by the mobile app, and potentially also a web app, via requests made client-side (e.g. in ReactJS).

Cloud-hosted and serverless apps. Traditionally, apps ran on a single server, often with a database server (typically an SQL variant such as MySQL or Postgres) running on the same machine. This creates issues if the website outgrows a certain traffic level because the server it is running on like any computer only has a finite amount of memory and hard disk space (for the database). Quite often, such servers were hosted physically by companies on their premises, meaning significant maintenance work for IT departments.

Over time, as website traffic has grown and cloud providers have evolved their offerings, more and more websites have moved to cloud providers (of which AWS is the biggest). These have evolved over the years:

  1. Initially, Elastic Beanstalk (for websites) and RDS (for traditional SQL databases), find ways of running multiple traditional-style services and replicating data between them.

  2. More recently, with Serverless where backend business logic and APIs are hosted using microservice style functions instead of renting servers, meaning app owners pay for computer power (billed by the microsecond). Frontend apps typically move to be static websites (which are hosted in S3 buckets, quite literally storage folders akin to a public Dropbox) or another javascript Serverless function running a NextJS app.

  3. CDN-type services (NextJS/Vercel, Gatsby/Netlify) offer increasingly user-friendly alternatives to AWS for frontend hosting, reducing setup costs, and offering easier and more frequent caching of responses including at locations closer to end users. These originally replaced static HTML and Javascript assets, but increasingly offer to host serverless functions (often via AWS).

Along the way, there have been other innovations:

  1. Graphql has made substantial inroads into traditional rest-based API communication and improved the type-safety (accuracy) of communication between backend services and clients, be that frontend web mobile or machine users.

  2. Machine learning and heavier data pipelines are now an important part of more complicated overall backend stacks. Like more general background tasks, these often run much slower and require vastly more memory and resources than an API, ML does tasks like image classification, product recommendation and forecasting.

The language split has also radically altered:

  1. PHP remains popular among smaller and more traditional website owners but has almost disappeared from large and professional websites. The same is to a lesser degree true of Ruby.

  2. Python has lost ground as an API language but has taken a dominant share in the growing areas of machine learning and data processing.

  3. Node (Javascript) and new languages like Go have eaten into Python's market share at API level. Java has also lost popularity. NextJS now occupies a space equivalent to Django, straddling both HTML generation and JSON rest-based API.

Did you find this article valuable?

Support Ben Watts by becoming a sponsor. Any amount is appreciated!