the startup
🚀
architecture
Â
startup
is a
state-of-mind
it’s when
people join your company
and are still making the explicit decision to
forgo stability
in exchange for
the promise of
tremendous growth
and the
excitement of making immediate impact.

in a startup
- business requirements are dynamicÂ
- emerging technologies give an edge over the competitionÂ
- mixed bag of young and experienced people
- innovations and experiments are vital
- uncertainties in direction and financial resources
architectural attempts
monoliths
- one runtime entry point for everything
- boundaries are from thin to non-existent
+ early people contribute in a tremendous pace
+ early features are rolling out on daily basis
- hacks are prone to leak
- new technologies are often incompatible
microservices
- multiple runtime entry points
- boundaries are strong but too fine-grained
+ implementation details are highly encapsulated
+ cherry-pick best fit technology for each task
- interfaces are prone to be premature abstractions
- runtime dependencies are even more complex
what worse?
a monolith in its transition to microservices
what are the needs
- short release cycles
- disposable business requirements
- isolated hacks
- short time-to-contribution
- technological playground
Hypothesis
If we can provide an architecture that
-
low coupling:
allows every owner can spin up or discard a component independently, and -
high cohesive:
maintain a universal communication mechanism among components
Then release and feedback cycles can be shorten while every projects can go full speed without blocking each other.
Solution
one of them
what if every team can work in an isolated island?
What is an Island?
- Single responsibility piece of software
- Must have a human interactive UI
- May not have any knowledge about other islands*
- Island's owners decide how it is built
- Start/stop on its own
What is in an Island?

How do data get updated?

How about other islands?

zooming out

Self-contained Services
By tungv
Self-contained Services
- 293