4. APPLICATION ARCHITECTURE
SPAGHETTI CODE (PROCEDURAL)
▸ Quick and dirty
▸ Logic and display mixed together
▸ Monolithic app design
▸ No separation
▸ Difficult to extend/scale
5. APPLICATION ARCHITECTURE
OBJECT ORIENTED CODE (OO) -- WITH MEATBALLS
▸ Logic organized better
▸ Service-oriented
▸ Monolithic app design
▸ Some separation
▸ Difficult to scale
6. APPLICATION ARCHITECTURE
MODEL VIEW CONTROLLER (MVC)
▸ Separates layers of concerns
▸ Helps enforce OO
▸ Specialized team members
▸ Layers are still tightly coupled
8. APPLICATION ARCHITECTURE
ONCE YOUR APP GROWS...
▸ Complex real-life apps
▸ Large “surface area”
▸ So...much...code...
▸ No one understands it all
▸ Too big for one plate
24. THE NEW PARADIGM: ORCHESTRATION
▸ Less is more
▸ Applications as
collections of
independent parts
▸ Incremental upgrades
and versioning in lieu
of massive release
cycles
25. THE NEW PARADIGM: ORCHESTRATION
▸ Hardware
Independence
▸ Platform
independence
▸ Disposable instances:
scale on-demand,
teardown when
demand decreases
26. AN APPROACH TO DEVELOPING A SINGLE
APPLICATION AS A SUITE OF SMALL SERVICES,
EACH RUNNING IN ITS OWN PROCESS AND
COMMUNICATING WITH LIGHTWEIGHT
MECHANISMS.
Martin Fowler
MICROSERVICES:
27. ▸ Make legacy code updates less
intimidating
▸ Fewer resources required to
maintain fault tolerance
▸ Versionable & maintainable
▸ Short release cycles
▸ Monolithic apps can be evolved
piece by piece
MICROSERVICES:
36. CONTAINERIZATION
▸ Reduces Time-consuming dev-
ops tasks via automation
▸ Allows for hardware and engine
Independence
▸ Health checks and rolling
updates allow for zero-
downtime deployments
▸ Built-in emergency procedures
and configuration settings
provide better application fault
tolerance
37. CONTAINERIZATION
▸ Portable between
platforms, machines, data
centers, and geographic
regions
▸ Built-in security and
isolation
▸ Transients vs Singletons -
spin up more when
needed, tear down when
demand is reduced