Tony Pujals
Sr. Developer Advocate
AWS Container Services
Docker,
Microservices, &
the Service Mesh
● Developer Advocate @AWS
○ Container Services [ ECS | EKS | Fargate ]
● Docker Captain & Certified Docker Associate
○ Organizer/presenter for Docker Mountain View meetup
○ Currently authoring a Docker course for UC Davis /
Coursera
● Go and Node.js programmer
○ Generally fanatical about containers, microservices,
cloud computing
● Live in Mountain View, California
About me
@tonypujals
v
of object / actor / component / service
abstraction & innovation for effective, reliable
message passing
Over 50 years
Simula
● Objects
● Message passing
● Inspires Smalltalk
1960s
Smalltalk
● Everything is an object!
● Objects only communicate
through messages
1970s
C++
● Popularizes object-oriented
programming
Erlang
● Everything is an Actor!
● Distributed processes
● Asynchronous message
passing
● Let it crash!
1980s
Distributed object
models
● DCOM
● CORBA
● Java RMI
1990s
Service Oriented Architecture
(SOA)
● Simple Object Access
Protocol (SOAP)
● Over Web standards
REST APIs
● URI-based resources ("objects")
● Standard HTTP methods for
messages
2000s
The essence of Object Oriented Programming (OOP)
● Has been a significant, fundamental programming abstraction for half
a century
● Involves invoking some function or procedure through (some form of)
message passing to an object
Objects and Messages
Technique for sending a message to an object (actor, process)
● synchronously or asynchronously
● directly or indirectly
● and relying on the process and supporting infrastructure to route
and deliver the message to invoke target code
Message Passing
Paraphrased from Wikipedia: https://en.wikipedia.org/wiki/Message_passing
An enduring theme for the past fifty or so years has
been innovation around ways to program the
operation of a system through objects and
messages, while keeping communication details
out of application code.
The point of all this is that as programmers we want
to focus on the objects of our problem space and
the information they communicate through
messages.
But we don't want to have to write the code (or be
tied to a specific language, library, or runtime) to
manage low level communication details,
communication policies, visibility, and resiliency of
the application.
● Characterizes an architectural style meant to contrast monolithic
architecture
○ Physical units of deployment are partitioned along functional
boundaries
○ Each unit focused on a smaller, logically related problem space
● Independent application components provide flexibility for separate
○ development & evolution
○ deployment
○ scale
Microservices
Independent application components
The ability to package and repeatedly deploy our
microservices anywhere and have confidence that
they will work as expected in every environment as
when we developed and tested them is a natural fit
for container technology.
● Are well-suited as the fundamental object in distributed systems1
● Provide isolation boundaries
○ the way objects protect privacy of internals through encapsulation
● OOP popularized building applications from collections of modular
software components
○ Docker provides an industry-standard, repeatable mechanism for
packaging and distributing these components (and all of their
dependencies) in a universal binary format
● Containers make large-scale microservice adoption pragmatic
Containers
1 "Design patterns for container-based distributed systems," Brendan Burns and David Oppenheimer,
Google, 2016. Brendan Burns is a co-founder of the Kubernetes project.
https://www.usenix.org/system/files/conference/hotcloud16/hotcloud16_burns.pdf
Abstracting the node
How do I run and manage all my containerized services across a
fleet of machines?
● Automated provisioning of containers
● Scheduling of workloads to appropriate compute resources
● Service discovery so services can find and communicate with each
other
● Load balancing
Orchestration
Abstracting the infrastructure
● When I need end-to-end visibility and insight to troubleshoot?
● When I need to enforce various types of policies?
● When I need to shift traffic for updates?
microservices + Docker + Kubernetes
What happens when I deploy larger applications...
● Challenges remain
○ Traffic management
○ Service identity and security
○ Policy enforcement
○ Telemetry
● Dedicated, configurable infrastructure layer for service-to-service
communication management
● Moves burden of managing highly dynamic service environment and
complex topology out of application code
● Think of it as a really smart network layer
Service Mesh
Intelligent runtime for distributed applications
https://istio.io/
Istio
An open platform to connect, manage, and secure microservices
Demo
https://github.com/subfuzion/istio-test-drive
So, is 2018 indeed the "Year of the Service Mesh"? I
think it's still too early to call it.
For the benefits you can get today if you're using
Kubernetes, you should definitely consider gaining
exposure now.
We don't have any 1.0 service mesh implementations
yet. Although quite promising, Istio made pretty big
changes as it evolved to 0.8 two weeks ago.
There needs to be a bit more stability and education
before we see a huge groundswell of adoption.
We still have half a year remaining to see major cloud
provider support in terms of seamless integration
into managed environments and deep mixer support
into their rich observability facilities.
The future for service mesh looks quite promising.
Stay tuned, and for the real benefits you can get
today, particularly if you're using Kubernetes,
definitely consider gaining exposure now.
Repo for the demo
https://github.com/subfuzion/istio-test-drive
Share your thoughts -- chat with me!
Twitter (open to private DMs)
https://twitter.com/tonypujals (@tonypujals)
Email
pujals@amazon.com
Thank You
@tonypujals

Docker, Microservices, and the Service Mesh

  • 1.
    Tony Pujals Sr. DeveloperAdvocate AWS Container Services Docker, Microservices, & the Service Mesh
  • 2.
    ● Developer Advocate@AWS ○ Container Services [ ECS | EKS | Fargate ] ● Docker Captain & Certified Docker Associate ○ Organizer/presenter for Docker Mountain View meetup ○ Currently authoring a Docker course for UC Davis / Coursera ● Go and Node.js programmer ○ Generally fanatical about containers, microservices, cloud computing ● Live in Mountain View, California About me @tonypujals
  • 3.
    v of object /actor / component / service abstraction & innovation for effective, reliable message passing Over 50 years
  • 4.
    Simula ● Objects ● Messagepassing ● Inspires Smalltalk 1960s
  • 5.
    Smalltalk ● Everything isan object! ● Objects only communicate through messages 1970s
  • 6.
    C++ ● Popularizes object-oriented programming Erlang ●Everything is an Actor! ● Distributed processes ● Asynchronous message passing ● Let it crash! 1980s
  • 7.
  • 8.
    Service Oriented Architecture (SOA) ●Simple Object Access Protocol (SOAP) ● Over Web standards REST APIs ● URI-based resources ("objects") ● Standard HTTP methods for messages 2000s
  • 9.
    The essence ofObject Oriented Programming (OOP) ● Has been a significant, fundamental programming abstraction for half a century ● Involves invoking some function or procedure through (some form of) message passing to an object Objects and Messages
  • 10.
    Technique for sendinga message to an object (actor, process) ● synchronously or asynchronously ● directly or indirectly ● and relying on the process and supporting infrastructure to route and deliver the message to invoke target code Message Passing Paraphrased from Wikipedia: https://en.wikipedia.org/wiki/Message_passing
  • 11.
    An enduring themefor the past fifty or so years has been innovation around ways to program the operation of a system through objects and messages, while keeping communication details out of application code.
  • 12.
    The point ofall this is that as programmers we want to focus on the objects of our problem space and the information they communicate through messages.
  • 13.
    But we don'twant to have to write the code (or be tied to a specific language, library, or runtime) to manage low level communication details, communication policies, visibility, and resiliency of the application.
  • 14.
    ● Characterizes anarchitectural style meant to contrast monolithic architecture ○ Physical units of deployment are partitioned along functional boundaries ○ Each unit focused on a smaller, logically related problem space ● Independent application components provide flexibility for separate ○ development & evolution ○ deployment ○ scale Microservices Independent application components
  • 15.
    The ability topackage and repeatedly deploy our microservices anywhere and have confidence that they will work as expected in every environment as when we developed and tested them is a natural fit for container technology.
  • 16.
    ● Are well-suitedas the fundamental object in distributed systems1 ● Provide isolation boundaries ○ the way objects protect privacy of internals through encapsulation ● OOP popularized building applications from collections of modular software components ○ Docker provides an industry-standard, repeatable mechanism for packaging and distributing these components (and all of their dependencies) in a universal binary format ● Containers make large-scale microservice adoption pragmatic Containers 1 "Design patterns for container-based distributed systems," Brendan Burns and David Oppenheimer, Google, 2016. Brendan Burns is a co-founder of the Kubernetes project. https://www.usenix.org/system/files/conference/hotcloud16/hotcloud16_burns.pdf Abstracting the node
  • 17.
    How do Irun and manage all my containerized services across a fleet of machines? ● Automated provisioning of containers ● Scheduling of workloads to appropriate compute resources ● Service discovery so services can find and communicate with each other ● Load balancing Orchestration Abstracting the infrastructure
  • 18.
    ● When Ineed end-to-end visibility and insight to troubleshoot? ● When I need to enforce various types of policies? ● When I need to shift traffic for updates? microservices + Docker + Kubernetes What happens when I deploy larger applications... ● Challenges remain ○ Traffic management ○ Service identity and security ○ Policy enforcement ○ Telemetry
  • 19.
    ● Dedicated, configurableinfrastructure layer for service-to-service communication management ● Moves burden of managing highly dynamic service environment and complex topology out of application code ● Think of it as a really smart network layer Service Mesh Intelligent runtime for distributed applications
  • 20.
    https://istio.io/ Istio An open platformto connect, manage, and secure microservices
  • 21.
  • 22.
    So, is 2018indeed the "Year of the Service Mesh"? I think it's still too early to call it.
  • 23.
    For the benefitsyou can get today if you're using Kubernetes, you should definitely consider gaining exposure now.
  • 24.
    We don't haveany 1.0 service mesh implementations yet. Although quite promising, Istio made pretty big changes as it evolved to 0.8 two weeks ago.
  • 25.
    There needs tobe a bit more stability and education before we see a huge groundswell of adoption.
  • 26.
    We still havehalf a year remaining to see major cloud provider support in terms of seamless integration into managed environments and deep mixer support into their rich observability facilities.
  • 27.
    The future forservice mesh looks quite promising. Stay tuned, and for the real benefits you can get today, particularly if you're using Kubernetes, definitely consider gaining exposure now.
  • 28.
    Repo for thedemo https://github.com/subfuzion/istio-test-drive Share your thoughts -- chat with me! Twitter (open to private DMs) https://twitter.com/tonypujals (@tonypujals) Email pujals@amazon.com Thank You @tonypujals