Skip to main content
Strategy

From Dial-Up to Data Lakes: The Nature of Digital Business

How infrastructure evolution shaped modern business

Explore the evolution of digital business from dial-up connections to modern data lakes and cloud infrastructure.

From Dial-Up to Data Lakes: The Nature of Digital Business

Dial-up internet made its limitations impossible to forget. Connections were slow, bandwidth was scarce, and transferring a large file could occupy the line long enough that software had to be designed around the network rather than assume the network would cooperate.

Modern digital infrastructure feels very different. Applications can provision servers in minutes, call payment systems through APIs, store enormous datasets cheaply, deploy globally, and consume databases or AI models without operating the underlying infrastructure themselves.

It is tempting to describe that history as a steady removal of technical constraints. In practice, infrastructure evolution has usually done something more interesting: it has moved those constraints somewhere else.

Broadband made bandwidth abundant enough for applications to depend much more heavily on networks, which made accumulated latency and remote failure more important. Cloud removed much of the need to purchase physical capacity in advance, but introduced variable costs, quotas, provider dependencies, and new failure boundaries. Data lakes made storing information relatively easy while making a different question harder: which of all that data can actually be trusted?

Each transition solved a real problem. Each also changed which problems businesses had to understand themselves.

That movement is one of the defining characteristics of digital business. Infrastructure becomes more powerful when an abstraction allows people to stop thinking about part of the underlying system most of the time, but the underlying constraint does not cease to exist simply because it disappears from everyday view.

Dial-Up Made the Constraint Visible

Early networked software had to respect connectivity because users could feel its cost directly.

A large download took time. Repeated network requests were expensive, connections could disappear unexpectedly, and software often had to keep useful state locally because permanent connectivity could not be assumed.

The important lesson is not that dial-up produced better architecture. It is that the network constraint was visible enough that nobody could pretend it was free.

Broadband changed what software could reasonably attempt. Rich images, video, continuously connected applications, and remote services became practical, and digital products could increasingly assume that users would have a persistent connection.

That created enormous business possibilities. It also encouraged applications to cross network boundaries more frequently because each individual call seemed inexpensive.

A modern request might pass through an API gateway, an application service, another service, a database, a cache, and an external provider before anything reaches the user. None of those interactions needs to be particularly slow for their combined latency to become significant.

Dial-up

Network cost

Visible to the application


Modern distributed system

Service

Service

Database

External API

Network cost emerges through composition

Broadband did not eliminate the network as a constraint. It made networked architectures practical enough that latency could become a system-level problem rather than an obvious property of the connection.

The constraint moved.

Abstraction Changed What Businesses Could Afford to Build

That pattern matters because infrastructure evolution changed more than software architecture. It changed the economics of experimentation.

Building an online product once required significant infrastructure decisions before the organization knew whether the product would succeed. Capacity had to be estimated, hardware purchased, networks configured, and environments prepared before customers could create enough demand to justify them.

The cost of being wrong could therefore arrive before the product had produced much evidence.

Cloud infrastructure changed the sequence. A team could provision resources when needed, launch with relatively little physical commitment, and increase capacity if demand appeared.

The business no longer needed the same confidence about future scale before experimenting.

That reduced one kind of risk, but it also made creating systems much easier. Companies could launch more products, retain more environments, run more experiments, and combine more infrastructure without making a major procurement decision each time.

Lower barriers therefore created a second-order effect.

Cheaper experimentation

More software and data

More dependencies

More operational complexity

Digital businesses became easier to start and faster to change. They did not necessarily become easier to operate.

This is the trade that repeats throughout infrastructure history. An abstraction removes enough friction to unlock new activity, and the activity creates a different coordination problem at a larger scale.

Cloud Moved Capacity From Procurement to Consumption

Physical infrastructure made capacity planning tangible.

If a company expected demand to grow, it estimated what it would need, bought hardware, installed it, and hoped the forecast was reasonably accurate. Too much capacity produced visibly idle equipment, while too little could leave the business waiting weeks or months for expansion.

Cloud infrastructure loosened that relationship between prediction and provisioning.

A team can request compute, storage, databases, or other services without purchasing the underlying machines. Some workloads can expand automatically as demand changes, allowing businesses to respond to growth that would once have required much earlier investment.

The physical constraint still exists, however. The customer simply interacts with it through a different boundary.

Limits appear as regional capacity, service quotas, concurrency limits, database connections, storage performance, API rate limits, or network throughput. The hardware has disappeared from the application team’s view, but finite capacity has not disappeared from the system.

The same movement happened to cost.

An unused physical server was difficult to overlook because the organization had purchased it. Cloud infrastructure can make waste much quieter. An abandoned environment can keep running, logs can accumulate, storage can grow, and cross-region traffic can increase without anyone seeing an idle machine.

Infrastructure therefore became easier to create at the same time that ownership and cost governance became more important.

The old problem was partly deciding how much infrastructure to buy.

The new problem is also knowing what the organization is consuming, why it still exists, who owns it, and whether the value produced justifies a bill that changes with software behaviour.

Elasticity removed part of the procurement constraint. It moved more responsibility into operational and financial visibility.

APIs Turned Implementation Into Dependency

Cloud infrastructure abstracts machines. APIs can abstract entire capabilities.

A product team that needs payments does not have to build a payment network. A team that needs identity, maps, messaging, analytics, search, or an AI capability can often consume it through an interface maintained by somebody else.

This is extraordinary leverage.

A small team can combine capabilities that once required specialist organizations, substantial infrastructure, and years of development. Digital businesses can therefore focus more attention on the parts of a product that differentiate them.

The trade is that implementation complexity becomes dependency.

A payment request might look simple from the application’s perspective:

Application

Payment API

Success / Failure

Behind that interface may sit authentication, fraud systems, databases, queues, banking networks, reconciliation processes, retries, and many other components the application team does not operate.

That hidden complexity is precisely why the API is useful. The team should not need to recreate or understand all of it.

But if the provider slows down, changes its contract, applies a rate limit, or becomes unavailable, the dependency becomes visible again.

The same pattern extends beyond APIs into SaaS and managed infrastructure. A company can consume CRM, identity, support, accounting, databases, queues, analytics, and collaboration tools without owning most of the systems underneath them.

As a result, modern digital businesses are increasingly assembled from systems they do not fully control.

That changes what technical ownership means. Reliability is no longer determined only by the code and infrastructure the company operates itself; it also depends on the boundaries where its systems meet services operated by others.

Cheap Storage Turned Scarcity Into a Trust Problem

Data infrastructure followed a similar path.

When storage was relatively expensive, retaining information required stronger selection. Organizations had practical reasons to decide which records deserved to survive and how they should be structured.

As storage became dramatically cheaper, the decision changed.

Applications could retain logs, events, customer interactions, documents, telemetry, historical records, images, and other datasets at scales that would previously have been impractical. Keeping data became inexpensive enough that organizations could preserve information before knowing exactly how they might use it.

That created genuine value. Historical data could be reprocessed, analysts could investigate questions nobody anticipated when the data was created, and machine-learning systems could draw on information retained for purposes that emerged later.

But once storing the data became easy, another constraint became more important.

Scarce storage

What should we keep?


Cheap storage

What should we trust?

A dataset is not useful merely because it exists.

Someone still needs to know what its fields mean, where it came from, whether it is complete, how fresh it is, who owns it, what changed over time, and whether another dataset represents the same business concept differently.

The scarcity moved from storage capacity toward reliable meaning.

Data Lakes Made That Movement Explicit

Data lakes pushed the storage abstraction further by allowing organizations to retain raw or lightly processed data without first forcing everything into one carefully designed analytical schema.

The benefit was flexibility.

Instead of deciding every future analytical use before ingestion, a company could store information and interpret it later. New questions could be asked of historical data without requiring the original producer to anticipate them.

The traditional boundary often looked roughly like this:

Define structure

Transform and validate

Store

Use

A data lake made another sequence practical:

Ingest

Store

Interpret for use

The second model does not eliminate structure. It changes when and where the structure has to become explicit.

Suppose one producer records a customer identifier as customer_id and another uses customerId. One writes a timestamp as an ISO date while another writes an integer representing epoch time.

Object storage can happily retain both.

The disagreement appears when someone tries to combine them.

The schema therefore still exists in the expectations of applications, transformations, contracts, catalogs, documentation, and consumers. Moving enforcement away from ingestion increases flexibility, but it also means the organization needs another way to preserve meaning.

This is how a data lake becomes a data swamp. The problem is not simply that too much data has accumulated; it is that the organization can no longer distinguish trustworthy, owned, understood data from everything else.

Storage solved preservation. It did not solve interpretation.

Distribution Moves Guarantees Into Coordination

The same pattern appears when applications become distributed.

A single application and database can provide a relatively visible transactional boundary. Splitting the system into independent services can give teams greater ownership, separate deployment cycles, and the ability to scale components differently.

Those are meaningful capabilities.

The cost appears when a business operation crosses the new boundaries.

Imagine an order that needs to be created, paid for, and reserved from inventory. Inside one transaction, the system may be able to commit those changes together.

Across independent services, reality can look different:

Order created       ✓

Payment accepted    ✓

Inventory reserved  ✗

The infrastructure has not made the business operation impossible. It has changed the problem from a local transaction into a workflow.

Should the payment be refunded? Should inventory be retried? Should the order remain pending, or should a person intervene?

A technical boundary becomes business behaviour.

Temporary inconsistency creates the same issue. Two parts of a distributed system may disagree for a period before their state converges, which can be entirely acceptable for some information and dangerous for other information.

The useful question is not whether eventual consistency is good or bad. It is how long a particular piece of data may disagree, which decisions can occur during that period, and what happens when the expected convergence does not occur.

Distribution buys independence. It also creates coordination.

Once again, complexity has moved rather than disappeared.

More Abstraction Makes Causality Harder to See

As these layers accumulate, another problem emerges: the system becomes difficult to inspect from any one place.

A user experiences a slow request. The request might have passed through a content delivery network, gateway, several services, a managed database, a queue, and an external API before the response returned.

Each component can look healthy in isolation while their interaction produces the failure.

This is why observability became increasingly important as digital infrastructure became more distributed and managed.

The organization needs to reconstruct behaviour across boundaries it may not directly control.

A useful trace can show that most of a request completed quickly while one database interaction consumed 900 milliseconds. That does not automatically explain why the database was slow, but it narrows the problem from an entire distributed system to the part that deserves investigation.

Modern operational maturity therefore requires more than collecting metrics.

The business needs enough correlation to connect a failure to the relevant application version, region, dependency, customer segment, feature flag, or provider. The more infrastructure becomes invisible during normal operation, the more important it becomes to recover that context when something goes wrong.

Abstraction reduces the amount of the system developers must think about every day. Observability helps them discover which hidden part they need to think about now.

Leverage Also Increases Blast Radius

Abstractions become valuable because many systems can depend on them.

One identity platform can authenticate an entire company. A shared API can prevent twenty teams from implementing the same capability, while one managed database service can remove a large amount of duplicated operational work.

That concentration creates leverage.

It can also enlarge failure.

Shared capability

 ┌─────┼─────┐
 ↓     ↓     ↓
 A     B     C

If the shared capability fails, several otherwise independent systems may fail with it.

This is why the success of an abstraction eventually changes the question from whether it works to how its failure is contained.

Can callers time out rather than wait indefinitely? Can they degrade gracefully? Are retries controlled, or will they amplify the incident? Is there cached information that remains useful? Does one overloaded dependency propagate failure throughout the rest of the system?

A shared service does not become dangerous merely because it is shared. The danger appears when the organization receives the leverage of centralization without designing the corresponding failure boundaries.

The same applies to external providers. A dependency can be an excellent trade when the capability it supplies would be expensive or difficult to reproduce internally, but the business still needs to understand what happens when that boundary stops behaving normally.

Abstractions Leak When Their Hidden Constraint Matters

A good abstraction lets users ignore most of its implementation most of the time.

Eventually, however, some property underneath the interface becomes relevant.

A managed database exposes storage or connection limits when demand grows. A cloud service exposes a quota during a traffic spike, while an API exposes its rate limits when request volume increases. A data lake exposes file layout or schema inconsistency when analytical performance and trust begin to matter.

This is sometimes described as abstraction leakage.

It is not necessarily evidence that the abstraction failed.

The abstraction may have delivered years of useful leverage before the hidden property became important. The mistake is assuming that because the team did not need to understand the underlying constraint yesterday, it can never matter tomorrow.

That does not imply that organizations should own their entire technology stack.

Running every database, queue, storage engine, orchestration platform, and network service internally simply replaces provider dependency with a large operational burden. Avoiding abstraction can create far more complexity than accepting it.

The useful level of understanding sits between those extremes.

A team does not need to know how to build every layer underneath a managed database. It does need to understand enough about durability, recovery, scaling, limits, and cost to operate the service safely and recognize when its assumptions no longer hold.

The goal is not complete knowledge of the stack.

It is knowing where the boundary is.

Infrastructure Should Earn Its Complexity

This history also explains why adopting a newer abstraction is not automatically progress.

A monolithic application may be entirely appropriate for a small team. Batch processing may be better than streaming when an hourly result is sufficient, while one relational database may remain the simplest and most reliable solution long after more specialized technologies become available.

Modern infrastructure offers choices, not obligations.

A useful evaluation begins with the existing constraint.

What prevents the workload from meeting its requirements today? What capability would a new abstraction unlock, and what responsibility would move somewhere else as a result?

If a service is being split into microservices, the organization should be able to explain what valuable independence the split creates. If a batch pipeline is becoming streaming infrastructure, lower latency should matter enough to justify continuous processing, replay, state management, and a different operating model.

The same reasoning applies to cloud, serverless platforms, data lakes, edge infrastructure, and managed services.

An abstraction earns its place when the capability it unlocks is worth the new dependency and operating model it introduces.

That principle matters because distributed-system costs often arrive immediately while their benefits appear only under particular conditions. Building for a future scale that may never arrive can leave a business paying today’s complexity for tomorrow’s hypothetical problem.

Architecture does not need to predict every future state. It needs to leave enough room for evidence to justify the next change.

The Nature of Digital Business Is Increasingly the Management of Boundaries

A modern company can operate with remarkably little direct ownership of the infrastructure that makes the business possible.

Customers interact with an application, but the application may depend on cloud infrastructure, identity providers, payment APIs, managed databases, SaaS platforms, analytics systems, content delivery networks, and external AI services.

Most customers never see those dependencies.

Most employees do not either.

That invisibility is a feature. It allows a small organization to assemble capabilities that once required enormous capital and specialized teams.

But it changes the nature of the business underneath.

Customer experience

Product

Applications

Platforms + APIs + data

Infrastructure

Each layer gives the organization leverage by allowing it to rely on something below.

The resulting system is therefore defined partly by boundaries: between application and provider, producer and consumer, service and service, cache and authoritative state, infrastructure declaration and running environment, or stored data and the meaning consumers assign to it.

Those boundaries determine where responsibility moves.

Digital businesses become resilient not by eliminating dependencies, but by understanding the important ones well enough to know their contracts, limits, failure modes, and recovery paths.

From Dial-Up to Data Lakes

The progression from dial-up to data lakes is not a story about computing gradually becoming unconstrained.

It is a story about constraints becoming less visible as abstractions become more powerful.

Dial-up forced applications to confront the network directly. Broadband made richer distributed applications practical and allowed network cost to reappear as accumulated latency and dependency.

Cloud removed much of the delay between wanting infrastructure and receiving it. Capacity then became something consumed through quotas, service boundaries, and variable costs rather than something visible primarily as physical hardware.

APIs and managed services allowed businesses to consume sophisticated capabilities without implementing them. The cost was a larger dependency network whose behaviour mattered most when a provider slowed down, changed, or failed.

Cheap storage and data lakes made it possible to preserve enormous amounts of information before knowing exactly how it would be used. The scarcity moved from bytes toward meaning, ownership, quality, and trust.

Distributed architectures gave systems and teams more independence while turning local transactions into coordination problems. Observability grew in importance because the causes of failures could no longer be understood by inspecting one machine or one process.

None of these transitions argues against abstraction.

Abstraction is one of the main reasons modern digital businesses have so much leverage. It allows organizations to focus less attention on solved infrastructure problems and more attention on customers, products, and the capabilities that distinguish the business.

The mistake is confusing hidden complexity with eliminated complexity.

Every important abstraction therefore deserves a few practical questions. What constraint does it remove, what new capability does that unlock, and where does the responsibility move? When the abstraction stops behaving normally, the organization also needs to know what becomes visible again and whether it has enough understanding to respond.

Infrastructure evolution is not a march toward simplicity.

It is a continuing decision about which parts of complexity a business needs to manage directly, which parts it can place behind an abstraction, and which hidden constraints it must still be prepared to confront when they matter again.