Main issues with microservices and solving one of them: runtimes (WebLogic with Multi Tenancy, Docker Swarm / Kubernetes, Oracle Application Container Cloud Service ACCS, Oracle Container Cloud Service OCCS)
small services • each running in its own process / owns it‘s data • communicating with lightweight mechanisms (Definition: M. Fowler / J. Lewis) https://martinfowler.com/articles/microservices.html
Java, Python, Ruby code + JSON file: start command Deploy Java EE module, JMS, JDBC, XA. + db and storage Deploy (stack of) Docker containers Language container as service WebLogic as Service Docker container as Service Oracle Container CS Java CS Application Container CS
• Java: Upload compiled zipped Java classes + JSON file with start command • Now also Java EE • Easy to deploy and operate • Lightweight: deployments run in containers Polyglot, easy to use microservices runtime
• WebLogic Partitions: – share same JVM… – Dependancy on admin server • Standalone Multi-server topologies could serve as microservices runtime – Full Java EE -> heavy infrastructure / footprint – Licensing munz & more #29 WLS a.war b.war a.war WLS P1 P2 a.war WLS WLS b.war a.war Multi module deployment WebLogic Partitions Multi-server topology Not really a microservices runtime
filesystem – IP is ephemeral – Uses Labels • Replication Controller -> Replica Set – Manages PODs (restarts replicas based on labels) • Services – Proxy for pod – Permanent IP munz & more #32
but this has changed • Is easier to understand and to operate • Covers a lot of what K8s does, but K8s is the trend • Only secure mode – automatic TLS certs • Is built-in and tightly linked to Docker API munz & more #38 Docker Swarm & K8s: flexible microservices RT, but bring operational complexity
away complexity of Kubernetes or Docker Swarm – Neither based on Swarm nor Kubernetes • Uses service concept like in Swarm • Integrates with Docker Hub, Wercker, Developer CS • Allows deployment of stacks • PaaS: Very easy to use (e.g. docker run …) munz & more #41 Docker based microservices runtime. Easier to operate than Swarm or Kubernetes.
passed to function context: runtime context callback: optional return (or null) Auto scaling, True pay per invocation Stateless, and Event based. Vendor lock-in?
FaaS Docker Polyglot No Yes Yes Yes Yes Yes Size infrastructure L/XL S S S S XS Complexity L S M XL S XS Elasticity auto easy scale scale scale easy scale auto Stateless No (Yes) Yes Yes Yes Yes Event based No No No No No Yes