The Evolution of Microservices. Adrian Technology Fellow - Battery Ventures June 2016

Similar documents
Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

Serverless Architecture Hochskalierbare Anwendungen ohne Server. Sascha Möllering, Solutions Architect

ARCHITECTING WEB APPLICATIONS FOR THE CLOUD: DESIGN PRINCIPLES AND PRACTICAL GUIDANCE FOR AWS

Cloud Native Architecture 300. Copyright 2014 Pivotal. All rights reserved.

Flip the Switch to Container-based Clouds

How to go serverless with AWS Lambda

Microservices on AWS. Matthias Jung, Solutions Architect AWS

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

FIVE REASONS YOU SHOULD RUN CONTAINERS ON BARE METAL, NOT VMS

Microservices Architekturen aufbauen, aber wie?

Welcome to Docker Birthday # Docker Birthday events (list available at Docker.Party) RSVPs 600 mentors Big thanks to our global partners:

Microservices stress-free and without increased heart-attack risk

STATE OF MODERN APPLICATIONS IN THE CLOUD

SUSE s vision for agile software development and deployment in the Software Defined Datacenter

Service Mesh and Microservices Networking

Microservices at Netflix Scale. First Principles, Tradeoffs, Lessons Learned Ruslan

How Netflix Leverages Multiple Regions to Increase Availability: Isthmus and Active-Active Case Study

BUILDING MICROSERVICES ON AZURE. ~ Vaibhav

Important DevOps Technologies (3+2+3days) for Deployment

Getting Started With Serverless: Key Use Cases & Design Patterns

Zero to Microservices in 5 minutes using Docker Containers. Mathew Lodge Weaveworks

High Availability Distributed (Micro-)services. Clemens Vasters Microsoft

Securing Microservice Interactions in Openstack and Kubernetes

Benefits of Extending your Datacenters with Amazon Web Services

Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation

When (and how) to move applications from VMware to Cisco Metacloud

EASILY DEPLOY AND SCALE KUBERNETES WITH RANCHER

Cloud Native Security. OpenShift Commons Briefing

WHITEPAPER. Embracing Containers & Microservices for future-proof application modernization

Securely Access Services Over AWS PrivateLink. January 2019

Docker Universal Control Plane Deploy and Manage On-Premises, Your Dockerized Distributed Applications

Orchestration Ownage: Exploiting Container-Centric Datacenter Platforms

Title DC Automation: It s a MARVEL!

ISTIO 1.0 INTRODUCTION & OVERVIEW OpenShift Commons Briefing Brian redbeard Harrington Product Manager, Istio

PrepAwayExam. High-efficient Exam Materials are the best high pass-rate Exam Dumps

Microservices. GCPUG Tokyo Kubernetes Engine

Culture and Evolution

Managing your microservices with Kubernetes and Istio. Craig Box

VMware Cloud on AWS. A Closer Look. Frank Denneman Senior Staff Architect Cloud Platform BU

Deep Dive on Microservices and ECS

Using AWS to Build a Large Scale Dockerized Microservices Architecture. Dr. Oliver Wahlen moovel Group GmbH Frankfurt, 30.

Kubernetes made easy with Docker EE. Patrick van der Bleek Sr. Solutions Engineer NEMEA

Managing and Auditing Organizational Migration to the Cloud TELASA SECURITY

Amazon Web Services. Block 402, 4 th Floor, Saptagiri Towers, Above Pantaloons, Begumpet Main Road, Hyderabad Telangana India

Container 2.0. Container: check! But what about persistent data, big data or fast data?!

Architecting for Scale

Defining Security for an AWS EKS deployment

DevOps Course Content

Creating a Hybrid Gateway for API Traffic. Ed Julson API Platform Product Marketing TIBCO Software

Setting up Kubernetes with Day 2 in Mind. Angela Chin, Senior Software Engineer, Pivotal Urvashi Reddy, Senior Software Engineer, Pivotal

DISTRIBUTED SYSTEMS [COMP9243] Lecture 8a: Cloud Computing WHAT IS CLOUD COMPUTING? 2. Slide 3. Slide 1. Why is it called Cloud?

Stop Cyber Threats With Adaptive Micro-Segmentation. Jeff Francis Regional Systems Engineer

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

AWS 101. Patrick Pierson, IonChannel

AWS Integration Guide

Fidor Solutions Software Defined Everything and Breaking up the Monolith. marc grimme

Deep Dive into Cloud Native Open Source with NetflixOSS

YOUR APPLICATION S JOURNEY TO THE CLOUD. What s the best way to get cloud native capabilities for your existing applications?

MQ High Availability and Disaster Recovery Implementation scenarios

AWS Solutions Architect Associate (SAA-C01) Sample Exam Questions

Elastic Efficient Execution of Varied Containers. Sharma Podila Nov 7th 2016, QCon San Francisco

MICROSERVICES I PRAKTIKEN från tröga monoliter till en arkitektur för kortare ledtider, högre skalbarhet och ökad feltolerans

Cloud Computing design patterns blueprints

VMWARE PIVOTAL CONTAINER SERVICE

Containers or Serverless? Mike Gillespie Solutions Architect, AWS Solutions Architecture

Microservices. Chaos Kontrolle mit Kubernetes. Robert Kubis - Developer Advocate,

Think Small to Scale Big

Elastic Load Balancing

Docker CaaS. Sandor Klein VP EMEA

Serverless The Future of the Cloud?!

Scaling DreamFactory

Think Small: API Architecture For The Enterprise

Logging, Monitoring, and Alerting

Cloud I - Introduction

270 Total Nodes. 15 Nodes Down 2018 CONTAINER ADOPTION SURVEY. Clusters Running. AWS: us-east-1a 23 nodes. AWS: us-west-1a 62 nodes

Container in Production : Openshift 구축사례로 이해하는 PaaS. Jongjin Lim Specialist Solution Architect, AppDev

Microservices Implementations not only with Java. Eberhard Wolff Fellow

Knative: Building serverless platforms on top of Kubernetes

Cloud Security Strategy - Adapt to Changes with Security Automation -

AGILE RELIABILITY WITH RED HAT IN THE CLOUDS YOUR SOFTWARE LIFECYCLE SPEEDUP RECIPE. Lutz Lange - Senior Solution Architect Red Hat

Red Hat OpenShift Roadmap Q4 CY16 and H1 CY17 Releases. Lutz Lange Solution

Amazon Web Services 101 April 17 th, 2014 Joel Williams Solutions Architect. Amazon.com, Inc. and its affiliates. All rights reserved.

Reactive Microservices Architecture on AWS

Merging Enterprise Applications with Docker* Container Technology

Kubernetes The Path to Cloud Native

Designing Fault-Tolerant Applications

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard Fellow

Cisco CloudCenter Solution with Cisco ACI: Common Use Cases

Docker and Oracle Everything You Wanted To Know

The importance of monitoring containers

Service Mesh with Istio on Kubernetes. Dmitry Burlea Software FlixCharter

Mid-Atlantic CIO Forum

MOBILE APP FOR ACME INC. by Sean Hull - Cloud Solutions Architect -

Securing Microservices Containerized Security in AWS

Aspirin as a Service: Using the Cloud to Cure Security Headaches

5 reasons why choosing Apache Cassandra is planning for a multi-cloud future

Build application-centric data centers to meet modern business user needs

The Road to Istio: How IBM, Google and Lyft Joined Forces to Simplify Microservices

Cisco Tetration Analytics Demo. Ing. Guenter Herold Area Manager Datacenter Cisco Austria GmbH

Fujitsu digital. Business Value of the Oracle Cloud HYBRID IT. Human Centric Innovation Co-creation for Success 2018 FUJITSU

Transcription:

The Evolution of Microservices Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures June 2016

What does @adrianco do? Presentations at Conferences Maintain Relationship with Cloud Vendors Technology Due Diligence on Deals Presentations at Companies @adrianco Technical Advice for Portfolio Companies Program Committee for Conferences Tinkering with Technologies Networking with Interesting People Previously: Netflix, ebay, Sun Microsystems, CCL, TCU London BSc Applied Physics

Agenda Why now? Microservice Architectures What s Missing? Migration and Simulation What s Next?

Key Goals of the CIO? Align IT with the business Develop products faster Try not to get breached

Security Blanket Failure Insecure applications hidden behind firewalls make you feel safe until the breach happens http://peanuts.wikia.com/wiki/linus'_security_blanket

Web scale vs. Enterprise

Webscale Freedom and responsibility High trust

Enterprise Bureaucracy and blame Low trust

How can everyone get speed, low cost, and better usability?

Mixed methods: Disaggregation into microservices helps!

Example Monolith: User Monolithic application Complex mix of queries Monolithic kitchen sink database Sign Up Payment Method Login Personal Data Home Page Reports Because one part of the monolithic application and database holds sensitive data all of it is subject to the most rigorous policies @adrianco

Microservices version: Segregated team owns secure data sources and infrequent updates Microservices separation of concerns Isolated single purpose connections Optimized datastores Sign Up Payment Method User Login Personal Data Home Page Reports Segregated team owns rapid improvement of most common use cases Because each microservice can conform to the appropriate policy, demands for agility can be separated from requirements for security @adrianco

In Search of Segmentation Ops Dev Datacenters AD/LDAP Roles VLAN Networks Hypervisor IPtables Docker Links AWS Accounts IAM Roles VPC Security Groups Calico Policy Docker Net/Weave @adrianco

Hierarchical Segmentation AWS Account - Manage across multiple accounts VPC Z - Manage a small number of large network spaces Homepage Team Security Group Reports Team Security Group A B B C D C D E E F F An AWS oriented example @adrianco containers and links

You build it, you run it. Werner Vogels 2006

Developer responsibilities: Faster, cheaper, safer

Speeding Up The Platform Datacenter Snowflakes Deploy in months Live for years

Speeding Up The Platform Datacenter Snowflakes Deploy in months Live for years Virtualized and Cloud Deploy in minutes Live for weeks

Speeding Up The Platform Datacenter Snowflakes Deploy in months Live for years Virtualized and Cloud Deploy in minutes Live for weeks Container Deployments Deploy in seconds Live for minutes/hours

Speeding Up The Platform Datacenter Snowflakes Deploy in months Live for years Virtualized and Cloud Deploy in minutes Live for weeks Container Deployments Deploy in seconds Live for minutes/hours Lambda Deployments Deploy in milliseconds Live for seconds

Speeding Up The Platform Datacenter Snowflakes Deploy in months Live for years Virtualized and Cloud Deploy in minutes Live for weeks Container Deployments Deploy in seconds Live for minutes/hours Lambda Deployments Deploy in milliseconds Live for seconds AWS Lambda is leading exploration of serverless architectures in 2016

What Happened? Rate of change increased Cost and size and risk of change reduced

Microservices

A Microservice Definition Loosely coupled service oriented architecture with bounded contexts

If every service has to be updated at the same time it s not loosely coupled A Microservice Definition Loosely coupled service oriented architecture with bounded contexts

If every service has to be updated at the same time it s not loosely coupled A Microservice Definition Loosely coupled service oriented architecture with bounded contexts If you have to know too much about surrounding services you don t have a bounded context. See the Domain Driven Design book by Eric Evans.

Microservice Architectures Configuration Tooling Discovery Routing Observability Datastores Operational: Orchestration and Deployment Infrastructure Development: Languages and Container Policy: Architectural and Security Compliance

Next Generation Applications Fill in the gaps, rapidly evolving ecosystem choices Lambda Docker Spinnaker Archaius LaunchDarkly Habitat Etcd Eureka Consul Compose Linkerd Weave Zipkin Prometheus Hystrix Tooling Configuration Discovery Routing Observability Datastores: Orchestrated, Distributed Ephemeral e.g. Cassandra, or DBaaS e.g. DynamoDB Operational: Mesos, Kubernetes, Swarm, Nomad for private clouds. ECS, Mesos, GKS for public Development: components interfaces languages e.g. Docker Hub, Artifactory, Datawire Quark, Go, Rust Policy: Security compliance e.g. Docker Content Trust. Architecture compliance e.g. Cloud Foundry

What could go wrong?

Timeouts and Retries Bad config: Every service defaults to 2 second timeout, two retries Edge Service Good Service Good Service @adrianco

Timeouts and Retries Bad config: Every service defaults to 2 second timeout, two retries Edge Service Good Service Good Service @adrianco

Timeouts and Retries Bad config: Every service defaults to 2 second timeout, two retries Edge Service Good Service Good Service If anything breaks, everything upstream stops responding Edge Service not responding Overloaded service not responding Failed Service @adrianco

Timeouts and Retries Bad config: Every service defaults to 2 second timeout, two retries Edge Service Good Service Good Service If anything breaks, everything upstream stops responding Edge Service not responding Overloaded service not responding Retries add unproductive work Failed Service @adrianco

Timeouts and Retries Budgeted timeout, one retry Edge Service Good Service Failed Service @adrianco

Timeouts and Retries Budgeted timeout, one retry Edge Service 3s Fast fail response after 2s Good Service 1s 1s Failed Service Upstream timeout must always be longer than total downstream timeout * retries delay No unproductive work while fast failing @adrianco

Timeouts and Retries Budgeted timeout, failover retry Edge Service Good Service Failed Service Good Service For replicated services with multiple instances never retry against a failed instance No extra retries or unproductive work @adrianco

Timeouts and Retries Budgeted timeout, failover retry Edge Service 3s Successful response delayed 1s Good Service 1s Failed Service Good Service For replicated services with multiple instances never retry against a failed instance No extra retries or unproductive work @adrianco

Cloud Native Monitoring and Microservices

Interesting architectures have a lot of microservices! Flow visualization is a big challenge. See http://www.slideshare.net/lappleapple/gilt-from-monolith-ruby-app-to-micro-service-scala-service-architecture

Simulated Microservices ELB Load Balancer Zuul API Proxy Karyon Business Logic Staash Data Access Layer Priam Cassandra Datastore Denominator DNS Endpoint Three Availability Zones Model and visualize microservices Simulate interesting architectures Generate large scale configurations Eventually stress test real tools Code: github.com/adrianco/spigo Simulate Protocol Interactions in Go Visualize with D3 See for yourself: http://simianviz.surge.sh Follow @simianviz for updates

Definition of an architecture Header includes chaos monkey victim See for yourself: http://simianviz.surge.sh/lamp { } "arch": "lamp", "description":"simple LAMP stack", "version": "arch-0.0", "victim": "webserver", "services": [ { "name": "rds-mysql", "package": "store", "count": 2, "regions": 1, "dependencies": [] }, { "name": "memcache", "package": "store", "count": 1, "regions": 1, "dependencies": [] }, { "name": "webserver", "package": "monolith", "count": 18, "regions": 1, "dependencies": ["memcache", "rds-mysql"] }, { "name": "webserver-elb", "package": "elb", "count": 0, "regions": 1, "dependencies": ["webserver"] }, { "name": "www", "package": "denominator", "count": 0, "regions": 0, "dependencies": ["webserver-elb"] } ] New tier name Tier package Node count 0 = non Regional List of tier dependencies

Running Spigo -a architecture lamp -j graph json/lamp.json -d run for 2 seconds $./spigo -a lamp -j -d 2 2016/01/26 23:04:05 Loading architecture from json_arch/lamp_arch.json 2016/01/26 23:04:05 lamp.edda: starting 2016/01/26 23:04:05 Architecture: lamp Simple LAMP stack 2016/01/26 23:04:05 architecture: scaling to 100% 2016/01/26 23:04:05 lamp.us-east-1.zoneb.eureka01...eureka.eureka: starting 2016/01/26 23:04:05 lamp.us-east-1.zonea.eureka00...eureka.eureka: starting 2016/01/26 23:04:05 lamp.us-east-1.zonec.eureka02...eureka.eureka: starting 2016/01/26 23:04:05 Starting: {rds-mysql store 1 2 []} 2016/01/26 23:04:05 Starting: {memcache store 1 1 []} 2016/01/26 23:04:05 Starting: {webserver monolith 1 18 [memcache rds-mysql]} 2016/01/26 23:04:05 Starting: {webserver-elb elb 1 0 [webserver]} 2016/01/26 23:04:05 Starting: {www denominator 0 0 [webserver-elb]} 2016/01/26 23:04:05 lamp.*.*.www00...www.denominator activity rate 10ms 2016/01/26 23:04:06 chaosmonkey delete: lamp.us-east-1.zonec.webserver02...webserver.monolith 2016/01/26 23:04:07 asgard: Shutdown 2016/01/26 23:04:07 lamp.us-east-1.zoneb.eureka01...eureka.eureka: closing 2016/01/26 23:04:07 lamp.us-east-1.zonea.eureka00...eureka.eureka: closing 2016/01/26 23:04:07 lamp.us-east-1.zonec.eureka02...eureka.eureka: closing 2016/01/26 23:04:07 spigo: complete 2016/01/26 23:04:07 lamp.edda: closing

Open Zipkin A common format for trace annotations A Java tool for visualizing traces Standardization effort to fold in other formats Driven by Adrian Cole (currently at Pivotal) Extended to load Spigo generated trace files

Trace for one Spigo Flow

Migrating to Microservices See for yourself: http://simianviz.surge.sh/migration Next step Controls node placement distance Select models Endpoint ELB PHP MySQL MySQL

Migrating to Microservices See for yourself: http://simianviz.surge.sh/migration Step 1 - Add Memcache Step 2 - Add Web Proxy Service

Migrating to Microservices See for yourself: http://simianviz.surge.sh/migration Step 3 - Add Data Access Layer Step 4 - Add Microservices node.js Data Access memcache per zone

Migrating to Microservices See for yourself: http://simianviz.surge.sh/migration Step 5 - Add Cassandra Step 6 - Remove MySQL MySQL 12 node cross zone Cassandra cluster

Migrating to Microservices See for yourself: http://simianviz.surge.sh/migration Step 7 - Add Second Region Step 8 - Connect Cassandra Regions Endpoint with location routed DNS

Migrating to Microservices See for yourself: http://simianviz.surge.sh/migration Step 9 - Add Third Region Endpoint with location routed DNS

Simple Architecture Principles Symmetry Invariants Stable assertions No special cases @adrianco

What s Next?

Serverless

Serverless Architectures AWS Lambda getting some early wins Google Cloud Functions, Azure Functions alpha launched IBM OpenWhisk - open sourced Startup activity: iron.io, serverless.com, apex.run toolkit

Serverless Architecture API Gateway DynamoDB Kinesis S3 @adrianco

Serverless Architecture API Gateway DynamoDB Kinesis S3 @adrianco

Serverless Architecture API Gateway DynamoDB Kinesis S3 @adrianco

AWS Lambda Reference Arch http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html

Serverless Programming Model Event driven functions Role based permissions Whitelisted API based security Good for simple single threaded code

Serverless Cost Efficiencies 100% useful work, no agents, overheads 100% utilization, no charge between requests No need to size capacity for peak traffic Anecdotal costs ~1% of conventional system Ideal for low traffic, Corp IT, spiky workloads

Serverless Work in Progress Tooling for ease of use Multi-region HA/DR patterns Debugging and testing frameworks Monitoring, end to end tracing

DIY Serverless Operating Challenges Startup latency Execution overhead Charging model Capacity planning

Learn More

We see the world as increasingly more complex and chaotic because we use inadequate concepts to explain it. When we understand something, we no longer see it as chaotic or complex. Jamshid Gharajedaghi - 2011 Systems Thinking: Managing Chaos and Complexity: A Platform for Designing Business Architecture @adrianco

Q&A Adrian Cockcroft @adrianco http://slideshare.com/adriancockcroft Technology Fellow - Battery Ventures See www.battery.com for a list of portfolio investments

Enterprise IT Compute Big Data Operations & Management Networking Storage Security Palo Alto Networks Visit http://www.battery.com/our-companies/ for a full list of all portfolio companies in which all Battery Funds have invested.