Skip to main contentLogo

Command Palette

Search for a command to run...

The Evolution of the Internet and the Building Blocks of Modern Apps — From Web 1.0 to Quantum Computing

Published on
Apr 15, 2025
The Evolution of the Internet and the Building Blocks of Modern Apps — From Web 1.0 to Quantum Computing

The Evolution of the Internet and the Building Blocks of Modern Applications: From Web 1.0 to Quantum Computing

Hello, warriors of the code world! Today we won’t touch on an ordinary topic. Make your tea or coffee, because we’re diving into the depths of the evolution of the Internet—the path that brought us here. From static HTML pages to the complex, real-time applications we interact with today, this journey is critical for understanding the fundamental principles of modern programming. Ready? Let’s begin!

From Web 1.0 to Web 3.0: Static, Dynamic, and Semantic Web

Those who remember (or have read about) the early days of the Internet know things were quite different. We can divide this evolution into three main stages:

Web 1.0: The “Read-Only” Web (Approx. 1991–2004)

  • Characteristics: Mostly static HTML pages. Few content creators, many consumers. Websites resembled digital brochures.
  • Technologies: Simple HTML, basic CSS, <table>-based layouts. Server-side CGI scripts existed, but dynamism was very limited.
  • User Experience: Almost no interactivity. Users mostly read information. “Guestbooks” and simple forms were the first attempts at interactivity.
  • Outcome: Provided access to information but was one-way. We can call this the early era of the information highway.

Web 2.0: The Interactive and Social Web (From ~2004 to today)

  • Characteristics: User-Generated Content, social networks, blogs, wikis came to the forefront. Web applications began competing with desktop apps.
  • Technologies: Dynamic HTML (DHTML), JavaScript frameworks (jQuery, then Angular, React, Vue), AJAX for server communication without page reloads, powerful backend languages (PHP, Python, Ruby, Java, Node.js) and frameworks (Laravel, Django, Rails, Spring, Express), Rich Internet Applications (RIA).
  • User Experience: The web became not only a place to “read,” but also to “write” and “share.” Interactivity and real-time communication became the norm.
  • Outcome: The web became social, dynamic, and a platform for applications. We largely live in the mature stage of Web 2.0 today.

Web 3.0: The Semantic and Decentralized Web (In development)

  • Characteristics: Better machine understanding of data (Semantic Web), integration of Artificial Intelligence (AI) and Machine Learning (ML), decentralized technologies (Blockchain, dApps), tight integration with the Internet of Things (IoT).
  • Technologies: Blockchain platforms (Ethereum, Solana), Smart Contracts, IPFS (InterPlanetary File System), AI/ML algorithms, GraphQL (for more flexible querying), VR/AR technologies.
  • User Experience: More personalized, intelligent, and context-aware experiences. More control and transparency over data (ideally). Convergence of physical and digital worlds.
  • Outcome: The web is moving toward being “smarter,” decentralized, and immersive. It’s not fully formed yet, but the potential is huge.

Comparing Web Versions

FeatureWeb 1.0Web 2.0Web 3.0 (Expected)
Primary FocusInformation PublishingInteractivity, SocializationSemantics, Decentralization, Intelligence
Content CreatorFew webmastersEveryone (Blogs, Social Media)AI, Users, Decentralized Networks
Core TechnologyHTML, HTTPJavaScript, AJAX, Backend FrameworksBlockchain, AI/ML, Semantic Tech
ArchitectureClient-Server (Simple)Client-Server (Complex), APIsPeer-to-Peer (P2P), Decentralized
DataStatic, UnstructuredDynamic, User-CentricLinked, Semantic, Portable

HTTP’s Stateless Nature and Modern State Strategies

The backbone protocol of the web, HTTP (Hypertext Transfer Protocol), is by design stateless—a protocol with “no citizenship.”

HTTP: The Stateless Protocol

What does this mean? Each HTTP request is completely independent of previous or subsequent requests. The server processes each request without any context, as if it’s the first time it’s seen it. It doesn’t “remember” who you were or what you did in the previous request.

Why Stateless?

  • Simplicity: Simplifies protocol design and implementation.
  • Scalability: Any server can handle any request because there’s no obligation to maintain session state across requests. This makes load balancing and horizontal scaling easier. Imagine the complexity if every server had to remember every user’s state.

➡️ State Management Strategies

So how do we log in to sites and keep items in our carts? Because we build stateful experiences on top of stateless HTTP using various strategies:

  • Cookies: Small pieces of data sent by the server to the browser. The browser sends these back on subsequent requests. Widely used to store session IDs.
  • Server-side Sessions: The server creates a unique session ID (usually sent via a cookie) for each user and stores user-related data (e.g., login status, cart) associated with that ID on the server (memory, DB, cache).
  • Tokens (especially JWT — JSON Web Tokens): A popular method for stateless authentication. On login, the server gives the client a signed token. The client sends the token (usually in the Authorization header) with subsequent protected requests. The server verifies the signature to identify the user—no need to store session data server-side. Particularly useful for microservices.
  • Client-side Storage (localStorage, sessionStorage): Browser-provided storage areas. Useful for non-sensitive data (UI state, preferences). localStorage persists across browser restarts; sessionStorage is cleared when the tab closes.

⚠️ Remember: Each strategy has its own pros, cons, and security considerations. Choose based on application requirements and architecture.

Client-Server Architecture, REST, and RPC Models

Most modern web applications are based on the Client-Server architecture.

Client-Server Model: Basics

  • Client: The side requesting resources. Typically the interface users interact with (web browser, mobile app, desktop program). Responsibilities: UI, sending requests, processing responses.
  • Server: The side providing resources or services. Powerful machines and software running in the background. Responsibilities: accept requests, execute business logic, interact with the database, prepare and send responses.
  • This model enables separation of concerns, scalability, and easier management.

There are different communication models between Client and Server. The most popular are REST and RPC.

REST (Representational State Transfer)

An architectural style, not a protocol. Closely aligned with how the web (HTTP) works.

  • Core Principles:
    • Stateless
    • Client-Server
    • Cacheable
    • Uniform Interface: Identify resources (via URI), use standard HTTP methods (GET, POST, PUT, DELETE, PATCH), self-descriptive responses (e.g., Content-Type), and HATEOAS (links indicating possible next actions).
    • Layered System: Proxies, load balancers, etc.; the client may not know the final server.
  • Focus: Resources (/users, /products/123) and actions via HTTP methods.

RPC (Remote Procedure Call)

An older yet still relevant model.

  • Idea: Invoke a function (procedure) on a server over the network as if it were local.
  • Focus: Operations/function calls (getUser(userId: 123), createOrder(items: [...])).
  • Implementations:
    • XML-RPC, JSON-RPC: Built on simple formats.
    • gRPC (Google RPC): Modern, high-performance RPC framework using HTTP/2 and Protocol Buffers. Popular for fast, efficient microservice-to-microservice communication.

REST vs. RPC Comparison

FeatureRESTRPC (especially gRPC)
Core ConceptResources (Nouns)Operations/Functions (Verbs)
ProtocolUsually HTTP/1.1, HTTP/2Various (TCP, HTTP/2 — gRPC)
Data FormatOften JSON; also XML, HTML, text...Binary (Protocol Buffers — gRPC), JSON, XML
Standard MethodsGET, POST, PUT, DELETE, PATCH...Methods defined by the API
CachingLeverages HTTP cachingMore complex, not standardized
Interface DefinitionOpenAPI/Swagger (popular but optional)IDL (.proto files — for gRPC)
Primary Use CasePublic APIs, web apps, simple microservicesInternal microservice comms, high-performance systems

💡 When to Choose Which?

  • If you need an API that handles standard CRUD operations, is easily consumable by browsers and various clients, and benefits from caching, REST is usually a good choice. It’s the de facto standard for public APIs.
  • If you need low-latency, high-throughput communication between microservices, operations are more complex and not resource-centric, gRPC can be more effective. Features like streaming (including bidirectional) are strengths.

Web Servers: Apache, Nginx, Tomcat

One of the core components that accept and respond to HTTP requests from clients is the web server. Let’s review some of the most popular ones:

Role of a Web Server:

  • Accept and process HTTP(S) requests.
  • Serve static files (HTML, CSS, JS, images) directly.
  • When dynamic content is needed, forward the request to an application server (e.g., PHP-FPM, Gunicorn, uWSGI, Tomcat) and pass the response back to the client.
  • Act as a Reverse Proxy (route requests to backend servers).
  • Load Balancing across multiple servers.
  • Manage SSL/TLS encryption (HTTPS).
  • Perform optimizations such as caching and compression (gzip/brotli).

Apache HTTP Server (httpd):

  • Long one of the most popular web servers. Mature with extensive documentation.
  • Traditionally process-based or thread-based (MPMs: prefork, worker, event). Assigning one process or thread per connection can cause performance issues under high load (C10k problem).
  • Highly flexible configuration; strong per-directory config via .htaccess (with potential performance impact).
  • Rich module ecosystem.

Nginx:

  • Built for performance and scalability, emerging as an answer to Apache’s C10k problem.
  • Based on an event-driven, asynchronous, non-blocking architecture. Can efficiently handle thousands of connections with a small number of worker processes—lower memory use and greater stability under high load.
  • Very fast at serving static files.
  • Extremely strong as Reverse Proxy, Load Balancer, and Cache Server; widely used.
  • Different configuration philosophy than Apache; simpler and performance-oriented. No .htaccess support.

Apache Tomcat:

  • Not a classic web server per se; primarily a Java Servlet Container and JSP implementation. It runs Java web applications (Servlets, JSPs).
  • Can also perform basic HTTP server functions (serve static files).
  • Often used together with Nginx or Apache: Nginx/Apache accepts client requests, serves static files itself, and forwards dynamic Java app requests to Tomcat (reverse proxy).
  • Widely used in the Java ecosystem.

Comparing Web Servers

FeatureApache HTTP ServerNginxApache Tomcat
Core ArchitectureProcess/Thread-based (MPMs)Event-driven, AsynchronousThread-based (Java Threads)
Performance (High Load)Medium (C10k issues possible)HighMedium (depends on Java app)
Static File ServiceGoodVery HighMedium (not its main job)
Reverse Proxy/LBPossible (mod_proxy)Very strong and popularPossible, but less common
ConfigurationFlexible, .htaccess supportSimple, performant, no .htaccessXML-based (server.xml, web.xml)
Primary UseHosting, flexible configHigh performance, reverse proxy, LBJava web apps (Servlet/JSP)

⚙️ Which web server to choose...

...depends on project requirements, chosen technologies (especially backend language/framework), and expected load. Often, the combination Nginx as frontend (proxy/LB) and Apache/Tomcat/other application servers as backend is used.

API Economy and Backend as a Service (BaaS)

As applications grow more complex and integration needs increase, APIs have become strategic assets rather than mere technical tools.

API Economy: A New Digital Market

  • Companies expose internal functionality or data to external developers/partners through managed APIs.
  • This enables new business models, accelerates innovation, and creates valuable integrations between applications. Companies like Stripe (payments), Twilio (communications), Google Maps are strong examples. APIs are now products!

BaaS (Backend as a Service):

  • Cloud platforms that provide standardized backend functionality (authentication, databases, file storage, push notifications, cloud functions) as ready-made services for mobile and web apps.
  • Developers can focus more on frontend and business logic instead of building and managing backend infrastructure from scratch.
  • Examples: Firebase (Google), AWS Amplify, Supabase (open-source alternative), Parse, Appwrite.

BaaS: Pros and Cons

  • 👍 Pros:
    • Rapid Development: Faster time-to-market.
    • Reduced Backend Overhead: Less time on server management, scaling, maintenance.
    • Scalability: Platforms often provide automatic scaling.
    • Ready Functionality: Built-in solutions for complex topics like auth and DB.
  • 👎 Cons:
    • Limited Flexibility: You may be constrained by platform capabilities. Custom backend logic can be difficult.
    • Vendor Lock-in: Switching from one BaaS to another can be hard and costly.
    • Cost: Affordable for small projects, but costs can rise with heavy usage and become hard to predict.
    • Less Control: You don’t have full control over infrastructure and data.
Thanks for reading.