Scalability: HTTP & Front-End

Burak Yiğit Kaya

Disqus

Front-End Tech Lead & DevOps

BYK

HTTP

The backbone of WWW

Built for

  • Linked Documents
  • Mostly* reliable connections (TCP)
  • High Scalability

Linked Documents?

HTML pages

Protocol(s)

  • HTTP is an Application Layer Protocol (Layer 7)
  • Mostly designed and optimized for TCP
  • Still, Layer 4 agnostic: HTTPS, HTTPU
  • Does not compensate for missing messages

High Scalability

  • Mostly* stateless
  • Request/response - no inherent sessions
  • Highly cacheable + idempotent methods

Stateless Protocols

In computing, a stateless protocol is a communications protocol that treats each request as an independent transaction that is unrelated to any previous request so that the communication consists of independent pairs of request and response.

Source: Wikipedia

Stateless Protocols

  • Functional programming
  • Lazy evaluation
  • Caching / Memoization

Safe and Unsafe Methods

Method Safe Idempotent Cacheable
GET Yes Yes Yes
HEAD Yes Yes Yes
POST No No Yes
PUT No Yes No
DELETE No Yes No
CONNECT No No No
OPTIONS Yes Yes No
TRACE Yes Yes No
PATCH No No Yes

More functional programming

Front-End

The app, the UI, the face

What is front-end?

  • Everything user facing
  • All the assets, documents and app
  • What is there to scale?

What is to scale on front-end?

  • Asset and app code delivery
  • Application performance
  • Application development

Asset and app code delivery

  • HTTP not good enough for assets
  • HTTP/1.1 - Keep-alive
  • HTTP/2

App Performance

  • UI changes a lot
  • The "natural" instinct is to use mutations and related APIs
  • Functional programming to save: ReactJS, Om

App performance

  • UI is actually Data -> View function
  • Uni-directional data flow
  • Batch & Smart updates

Scaling Application Development

  • Iterating rapidly is important: experimentation
  • Developer productivity
  • Shameless self-promotion: Hizli ve Ofkesiz

Thanks!

Scalability: HTTP & Front-End

By Burak Yigit Kaya

Scalability: HTTP & Front-End

  • 782