VDI, Containers, and Microservices
VMs running in a data center instead of dedicated desktops/laptops
Thin clients (minimal computers) for remote connections to the VMs.
Management heaven
Single point of failure
SOA – Service Oriented Architecture
Then: monolithic (all in one) apps
Now: Virtualized app components designed around business requirements
Inputs and outputs
Sub services
No external state
Independent upgrades
Code independent
Easier interoperability
Communication mesh
Containers – Isolated environments designed to run a set of applications
Docker
Flexible and fast
Development: create and destroy test environments
Packaging and distributing apps
Infrastructure as Code
Less secure out of the box than VMs
Microservices
Split larger, monolithic functionality into individual microservices.
Replace, upgrade components individually
Brings the SOA approach to software development (agile)
No such thing as sub-microservice
Unix philosophy: each piece of software should do one thing and do it well.
Containers: #1 solution for a pure microservices based architecture
SOAP
Microservices (and soa-based solutions) must communicate with each other
Historically, this was ensured by SOAP – Simple Object Access Protocol
SOAP manages sending and receiving data in web apps using XML
Security features: auth, encryptions, async, errors
Risks:
Proving
Coercive parsing
External references
Malware
SQL injection
REST APIs
Used for interaction with services in a programmatic way
Machine to machine communication
SOAP (XML) vs REST APIs (HTTP)
APIs increase attack surface
API keys
REST (Representaiton State Transfer)
Principles:
Uniformity
Decoupling
Statelessness
Cacheabiltiy
Last updated