top of page
Search

Perhaps universe is not designed by OO

  • Writer: Fumiomi Samejima
    Fumiomi Samejima
  • Jun 2
  • 10 min read

Micro Service Architecture seems like functional programming, i.e., small functions interact among the system.  This seems a bit different from Object Oriented concept, i.e., the system is managed by the hierarchy of the abstractions.  Thought?



✅ 

Microservices vs. Object-Oriented Design — Similarity & Key Differences



🧩 

Yes, Microservices Feel Like Functional Programming


Microservice Architecture

Functional Programming

System split into small, independent services

Program split into small, pure functions

Services interact via APIs (usually stateless)

Functions interact by passing data (no side effects ideally)

Each service has a single, focused responsibility

Each function ideally does one thing (single responsibility)

Emphasis on immutability (data passed, not modified in-place)

Immutability is a core concept (pure functions, no side-effects)

Scaling individual services

Composing individual functions



🧠 

But Microservices are NOT Just Functional Programming


Functional Programming

Microservices

Runs in one process/memory space

Distributed across servers/networks

Focus is internal code structure

Focus is on system-level architecture

Side effects are controlled

Side effects (I/O, DB, networking) are the main job

Statelessness is ideal

Statelessness is ideal, but persistence is necessary (DBs, queues, etc.)


  • In functional programming, we’re trying to control complexity inside a single codebase.

  • In microservices, we’re trying to control complexity across a distributed system.



🏛️ 

How Is This Different from Object-Oriented Programming (OOP)?


Single system with abstractions like classes and inheritance

Multiple systems, each handling one business function

Abstraction is via class hierarchies

Abstraction is via service boundaries (APIs)

Focus on encapsulating state and behavior together

Focus on decoupling state (databases) and behavior (APIs) across services

Strong inter-object relationships (inheritance, aggregation)

Weak inter-service relationships (message-passing, API calls)

Tight cohesion internally

Loose coupling externally


In OOP, you have:


  • Hierarchies and relationships between objects.

  • Objects are bundled: data + behavior.



In Microservices, you have:


  • Bounded contexts (service boundaries).

  • Each service is more like a fully independent program.

  • No “inheritance” across services — they’re decoupled by design.





🎯 

Big Picture



  • Microservices aim for system-level scalability:


    • Small units (services) you can deploy independently, scale separately.


  • OOP aims for code-level manageability:


    • Managing complexity inside a monolith.




💡 Insight:
Microservices are distributed system engineering.
Functional programming is code-level purity.
OOP is structure for code manageability.



🔥 

Modern Systems Often Combine These



  • Inside a microservice, you might use OOP or Functional Programming.

  • At the system level, you use Microservice Architecture to scale.



Example:

Each microservice written in Java Spring Boot (OOP) or Node.js (functional style),
but services interact like small independent functional units at the system level.


Is there a concept like Object Oriented Microservice Architecture?




✅ 

Is There Something Like “Object-Oriented Microservice Architecture”?


Short answer:

Not really, not formally.


Why?

Because:


  • Microservice Architecture (MSA) is fundamentally about system design — breaking a large app into independent deployable units.

  • Object-Oriented Programming (OOP) is about software design within a codebase — organizing logic and data into objects with relationships.



They are different layers of architecture:


Layer

Focus

OOP

Organizing code inside a single application (classes, objects, inheritance, polymorphism).

MSA

Organizing systems into independent services with clear boundaries (APIs, databases).






🚫 

Why OOP Doesn’t Scale Directly to MSA



  • OOP creates hierarchies and tight relationships (inheritance, aggregation).

  • MSA breaks apart tight relationships — services should be loosely coupled and highly cohesive.

  • Microservices talk through APIs — not method calls or inheritance trees.



OOP’s goals (abstraction, encapsulation) are still useful inside each service,

but between services, tight coupling (like inheritance) is anti-pattern.




🧩 

But: There is a Related Concept — DDD



✅ What does connect the two worlds is Domain-Driven Design (DDD):


➔ DDD promotes modeling a system’s complexity using bounded contexts and aggregates.


  • Each bounded context maps very naturally to a microservice.

  • Each aggregate inside a bounded context is often implemented using OOP internally.


DDD Concept

Microservice Mapping

Bounded Context

Microservice Boundary

Aggregate Root

Major Entity (Modeled in OOP)

Entity/Value Object

Class (OOP)

Repository Pattern

Data access in the service (OOP/Layered Architecture)




So the modern architecture flow looks like:


Microservices (bounded contexts) 

└── Internally OOP (entities, services, repositories)


Thus, you model the internal domain using OOP, but compose systems using MSA.





🏛️ 

If you tried to imagine “Object-Oriented Microservice Architecture”



You might think:

OOP Concept

Microservices Parallel (if we try)

Class

Service

Object Instance

Running Service Instance (Container)

Method Call

API Call (HTTP/gRPC)

Inheritance

Composition or API Dependency (not direct inheritance!)

Encapsulation

Service owns its own data and logic (data hiding)


But again, MSA avoids tight inheritance-like coupling.

Services are not supposed to inherit each other or be tightly dependent.





🎯 

Key Point



Microservices aren’t object-oriented at the system level.

They use OOP inside, but compose the system like a loosely coupled network — closer to functional programming ideas at the system level.

MSA = System Architecture

OOP = Code Architecture


They coexist, but they’re not the same.




⚡ 

In one line:



📝 OOP builds services; Microservices build systems.

Is that mean system itself can't be architected as object oriented way?



✅ 

Can an Entire System Be Architected in an Object-Oriented Way?



Short answer:

No, not fully — and it’s a good thing.





🏛️ 

Why Systems Are Not Object-Oriented



When you move from code to system scale (distributed systems),

the principles of OOP start to break down at the system level:


OOP Concept

System Reality

Objects communicate via method calls (in-memory)

Services communicate over networks (HTTP/gRPC/AMQP), slower and lossy

Tight object graphs (inheritance, composition)

Need loose, resilient service connections (APIs)

Synchronous calls (method chaining)

Asynchronous, message-driven needed for resilience

Polymorphism via inheritance/interfaces

Different services can evolve independently — versioning problems if tightly coupled

Single memory/process space

Multiple processes, machines, regions



 Object-Oriented Design assumes:


  • Low-latency, reliable method calls,

  • Shared memory,

  • Easy tight coupling via pointers, references, method dispatch.



🌍 Distributed Systems (Microservices) require:


  • Loose coupling, network resilience,

  • Failure isolation,

  • Asynchrony,

  • Independent scalability.



Thus, OOP doesn’t scale well across the network.





🔥 

This Is Why…



  • Objects are good at structuring code.

  • Services are good at structuring systems.



They are solving different problems.


📝 OOP is good for internal software architecture.
MSA (Microservices) is good for distributed system architecture.



🧠 

However: Some OOP Principles do Scale to Systems



Even though you can’t build a whole system the way you’d build an OOP program,

some OOP principles survive and inspire system architecture:


OOP Principle

Microservice Equivalent

Encapsulation

Services own their own data and logic (no shared DB)

Single Responsibility Principle (SRP)

Each service has a focused business capability

Interface segregation

API Contracts per service are minimal and specific

Dependency Inversion

Service calls other services via well-defined interfaces (APIs)



So it’s not OOP, but it’s inspired by OOP principles at a higher level.




🎯 

Final Answer



You can’t architect an entire system in a purely object-oriented way —
Distributed systems require different principles (loose coupling, resilience, scalability) that OOP isn’t designed for.

Instead:


  • Use OOP for designing the internals of services (classes, objects).

  • Use MSA / Distributed Systems principles for designing the system.





If so, how system can retain the core basic principle value as a whole?  In OO, the core value can be framed by the higher abstructive layer, I think.


💡 Fantastic insight. You’re touching one of the hardest, deepest challenges in modern architecture.





✅ 

In Object-Oriented Systems



In OOP, the core value of a system (its purpose, logic, policy)

can be framed and enforced by:


  • 🎯 Abstract base classes

  • 🎯 Interfaces

  • 🎯 Design Patterns (Factory, Strategy, Visitor…)

  • 🎯 Dependency Injection (DI)



These form a hierarchical abstraction:


  • At the top → abstract idea (“what” to do)

  • At the bottom → concrete classes (“how” to do it)



Thus:


OOP controls complexity through hierarchical abstractions.

And within one process, one codebase, this works beautifully.




🧩 

In Distributed Systems (Microservices)?



You lose hierarchy:


  • No “top” object controlling all services.

  • No “global interface” that all services must inherit.

  • No shared memory, no shared type system.



Each microservice is autonomous.


🎯 So how do you preserve system-wide “core values”?


Through architectural contracts instead of code inheritance.


OOP (in-process)

Microservices (distributed)

Abstract base classes

API Contracts (OpenAPI, gRPC proto, GraphQL schema)

Interfaces

API Gateway Routing Policies

Design Patterns (inside code)

Architectural Patterns (e.g., Event Sourcing, CQRS)

Dependency Injection

Service Mesh / API Management

Class Hierarchies

Service Taxonomies (Service Catalogs)

Liskov Substitution

API Versioning & Backward Compatibility





🛡️ 

How Systems Retain Core Values in Microservices




You frame system-wide principles through:



1. 

API Contracts



  • Every service must expose its functionality through a contract (OpenAPI/Swagger, Protobufs for gRPC).

  • Changes must be backward compatible.

  • Contracts act like interfaces.




2. 

Domain-Driven Design (DDD)



  • Bounded Contexts define the boundary of meaning.

  • Ubiquitous Language shared across services.

  • The “core” is captured by domain models, not by code hierarchy.



🔥 Domain Core → shared understanding, not shared code.


3. 

Governance via Conventions



  • API Guidelines (RESTful, versioning, error handling)

  • Security policies (OAuth2, JWT, etc.)

  • Common Observability (logs, metrics, traces)

  • Deployment standards (containerization, service mesh)



The core principles are enforced by governance not by inheritance.



4. 

Shared Libraries (Carefully!)



  • Sometimes, teams use shared SDKs for:


    • Authentication logic

    • Logging frameworks

    • Data schemas


  • But too much sharing leads to tight coupling — to be avoided.




5. 

Service Mesh / Policies



  • Things like Istio, AWS App Mesh, Linkerd can enforce:


    • Security (mutual TLS)

    • Rate limiting

    • Retry and circuit breaker policies


  • This is like putting system-wide behaviors under a transparent layer — not inside the services.





🧠 

Big Insight



In OOP:
➔ Core principles are enforced by class hierarchy.

In Microservices:
➔ Core principles are enforced by contracts, domain design, policies, governance.

We move from hierarchical abstraction to horizontal contracts.


  • Code-level control → Service-level collaboration.

  • Inheritance → Interface contracts (not shared memory, but shared agreements).





🚩 

If You Try to Enforce Hierarchies in Microservices…



  • It leads to tight coupling.

  • Upgrades become painful.

  • Independent deployment breaks.

  • You essentially rebuild a distributed monolith — the exact thing microservices try to avoid.





🎯 

Summary



In microservice architecture,
core principles are retained by architectural contracts, domain boundaries, and strict governance — not by code hierarchy.


Suppose: System can't be managed by itself.


There’s no single person who said exactly:
“A system can’t manage itself”
but deep thinkers in math, physics, systems theory, cybernetics, and philosophy
all argue variations of that idea:

  • Gödel (math, logic)

  • Wiener (cybernetics)

  • Bertalanffy (systems theory)

  • Drucker (management theory)



It’s a universal truth in complex systems:


Systems require external input, governance, or higher-order feedback to survive and remain coherent.

Field

Key Thinkers

Idea

Cybernetics

Norbert Wiener

A system needs feedback loops to regulate itself. Pure autonomy is unstable.

Gödel’s Incompleteness Theorems

Kurt Gödel

No system can fully explain or prove itself from within itself (in mathematics).

Systems Theory

Ludwig von Bertalanffy

Systems must interact with their environment — closed systems degrade (entropy).

Philosophy

Plato, Aristotle, Hegel

Systems require an “unmoved mover” or external cause to exist and maintain order.

Management Theory

Peter Drucker

Organizations require governance — systems of people can’t self-govern without structure and external evaluation.

Second Law of Thermodynamics

Physics

Closed systems move toward disorder without external input (entropy increase).



If Earth Is Managed by the Solar System, What Manages the Solar System?


Scale

Entity

Earth

Part of the Solar System

Solar System

Part of the Milky Way Galaxy

Milky Way Galaxy

Part of the Local Group (a cluster of galaxies)

Local Group

Inside the Observable Universe




What Manages the Solar System?



Gravity is the key force that organizes and “manages” the Solar System.


  • The Sun has an immense mass.

  • The gravitational pull of the Sun keeps planets (like Earth), asteroids, and comets in orbit around it.

  • The Sun is the center of the Solar System, and gravity is the “manager” — the force keeping the whole system coherent.



The Solar System is governed by gravity.
Manager = Gravity
Center = The Sun


🌌

What About the Milky Way Galaxy?




  • The Milky Way is also bound together by gravity.

  • At the center of the Milky Way, there is a supermassive black hole (called Sagittarius A*).

  • The Solar System orbits the center of the Milky Way, and it takes about 200 million years for one orbit.



Gravity once again is the organizing force at this larger scale.



🔭

What About the Universe as a Whole?



On the largest scales:


  • Gravity binds galaxies and galaxy clusters together.

  • Dark Matter — invisible mass — helps galaxies hold together more strongly than gravity alone would suggest.

  • Dark Energy is accelerating the expansion of the universe.



Thus:


The universe is governed by a complex balance of gravity, dark matter, dark energy, and the fundamental laws of physics.



Summary Table

Scale

Governing Force

Earth

Gravity from the Sun and the Moon (tidal forces)

Solar System

The Sun’s gravitational pull

Milky Way Galaxy

Gravity + Central Supermassive Black Hole

Universe

Gravity + Dark Matter + Dark Energy + Physical Laws






🧠

Philosophical Perspective



From a purely scientific view, we say:


  • The universe is governed by natural laws (like gravity, relativity, quantum mechanics).



But from a philosophical or theological point of view, you could also say:



  • “The Logos” (the rational principle behind the universe — ancient Greek philosophy).

  • “The divine order.”

  • “Providence” (in religious terms).





🎯

In a Simple Line:



The Solar System is managed by gravity,
and the larger structures — galaxies and the universe —
are governed by even broader natural laws.



Does the Universe Have “Objects”?



If we think in Object-Oriented (OO) terms:


  • An object is something with:


    • State (data, properties)

    • Behavior (methods, actions)

    • Identity (it can be uniquely distinguished)




Now, look at the Universe:

OO Concept

Universe Parallel

Object

Stars, planets, galaxies (things with properties)

State

Mass, velocity, position, temperature

Behavior

Orbits, gravitational pull, radiation emission

Identity

Each celestial body is uniquely located in space-time


So at first glance — yes, the universe is full of “objects” in the physical sense:


  • Earth has properties (mass, rotation).

  • Earth behaves (orbits Sun, spins).

  • Earth has identity (it’s distinct from Mars).



In fact:


Physics sees the universe as a system of objects interacting under laws (like gravity, electromagnetism).



🚫

But the Universe Is Not Object-Oriented in a Deeper Sense



In Object-Oriented Design (OOD):


  • Objects are built intentionally with design goals.

  • There are hierarchies (inheritance, composition).

  • Objects communicate by method calls in a controlled environment (software system).



In contrast, in the universe:


  • There is no hierarchy — galaxies aren’t “superclasses” of stars.

  • There is no intentional design (at least in physics).

  • No methods — only natural laws like gravity, quantum mechanics.

  • No encapsulation — gravitational fields permeate everything.





🧠

Deep Insight



The Universe has “objects” (things with properties and behavior), but it’s not Object-Oriented by design.

It’s law-driven, not object-designed.


  • Objects emerge from initial conditions + natural laws.

  • No programmer is writing classes for “Galaxy” or “Electron” — they emerge from quantum fields and gravitational equations.



You could say:


The Universe is more like a functional, event-driven system
laws and interactions without hard encapsulation or hierarchies.



🎯

Summary



| | Object-Oriented Software | Universe |

|—|—|

| Design | Intentional, structured | Emergent, law-driven |

| Objects | Created with clear boundaries | Formed by physical laws (gravity, electromagnetism) |

| Hierarchy | Clear inheritance or composition | No hierarchy — just scale |

| Communication | Method calls | Interactions through forces, fields |

| Encapsulation | Objects hide their internal state | Forces (like gravity) are universal, not hidden |




🌌

Big Picture



The universe contains “objects” but it is not object-oriented.
It’s more like a law-based, emergent system — closer to a gigantic functional program or physics-driven simulation.


Would you like me to explore:


  • How the laws of physics resemble functional programming more than OOP?

  • Or how philosophers and physicists think about “design” and “order” in the cosmos?



🌠 This can get very interesting if you want to go deeper!



 
 
 

Recent Posts

See All
Data Center In Space

Do anybody have an idea or plan to design the data center in a way of distributed computing? In other words, microservice like...

 
 
 

Comments


Post: Blog2_Post

Subscribe Form

Thanks for submitting!

  • Facebook
  • Twitter
  • LinkedIn

©2020 by Sammy. Proudly created with Wix.com

bottom of page