get ship done! microservices cloud development made easy · microservice-1 microservice-1...

38
Get Ship Done! Microservices Cloud Development Made Easy Charles Eckel and David Tootill Cisco Systems

Upload: others

Post on 25-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Get Ship Done! Microservices Cloud

Development Made Easy Charles Eckel and David Tootill

Cisco Systems

Page 2: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• Microservices Architecture

• Get Ship Done! – Microservices in the Cloud

• Cisco Shipped Introduction and Demo

• DevNet – Cisco’s Developer Program

Agenda

Page 3: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Microservices Architecture

Page 4: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• Complex application developed as a suite of small services

• Services run in their own process

• Communicate with lightweight, language-agnostic APIs

• Build around business capabilities

• Bare minimum of centralized management

• “Fine-grained SOA”

• Goes back to design principles of Unix

What is Microservices Architecture?

Page 5: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• Traditional application usually has three main parts:

• Client-side UI

• Database (usually relational)

• Server-side application

• Server side app is called a monolith

• Natural way to build an application

• Any changes involve building and deploying a new app

• Scales horizontally by running many instances behind a load balancer

Microservices vs Monolithic

Page 6: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Comparison - Monolithic vs Microservice From Martin Fowler (http://martinfowler.com/articles/microservices.html)

Page 7: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Three Dimensions of Scaling From The Art of Scalability (http://theartofscalability.com/)

Page 8: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• Componentization via services

• Organized around business capabilities

• Products not projects

• Smart endpoints and dumb pipes

• Decentralized governance

• Decentralized data management

• Design for failure

Characteristics of a Microservices Architecture

Page 9: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Microservice Advantages

Scalability

Resilience / fault isolation

Individual service deployment

Small code base with well defined boundaries.

Flexibility to choose best languages and technologies

Independent development, build and deployment cycles

Faster features iteration

Less resistance path to adopt newer technology in future

Page 10: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Microservice Disadvantages

Developers need substantial DevOps skills

Significant operations overhead

Remote calls are more expensive than internal process calls

Memory consumption usually increases

Testability challenges

Page 11: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Get Ship Done! Microservice Architecture

in the Cloud

Page 12: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Microservices Infrastructure (MI)

Page 13: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Microservices Infrastructure in the Cloud

Page 14: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Service Discovery and Load Balancer

MicroService-1 MicroService-1 MicroService-1

(Github repo)

MicroService-1 MicroService-1 MicroService-2

(Github repo)

MicroService-1 MicroService-1 Dependency-1 (Marketplace

App)

MicroService-1 MicroService-1 Dependency-2 (Marketplace

App)

Docker containers

Mesos – Marathon (MS-infra)

Deploy Env. (Staging)

(MS-Infra)

(MS-Infra)

Consul Template

HAProxy

Consul (DNS)

Registrator

1. Registrator monitors Docker events

2. Registrator adds docker instances host:port to service-name mapping to consul.

3. Consul exposes information via inbuilt DNS

4. Consult templates watches changes in Consul

5. HAProxy configuration is updated based on changes in consul

6. Namespace naming convention environment.project.service.shipped.com

Page 15: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Deployment Environment Flexibility

MicroService-1 MicroService-1 MicroService-1

(Github repo)

MicroService-1 MicroService-1 MicroService-2

(Github repo)

MicroService-1 MicroService-1 Dependency-1

(Marketplace App)

MicroService-1 MicroService-1

Dependency-2 (Marketplace App)

Deploy Env. (Prod2)

MicroService-1

(Github repo)

MicroService-2

(Github repo)

Dependency-1 (Marketplace App)

Dependency-2 (Marketplace App)

Project

MicroService-1 MicroService-1 MicroService-1

(Github repo)

MicroService-1 MicroService-1 MicroService-2

(Github repo)

MicroService-1 MicroService-1 Dependency-1

(Marketplace App)

MicroService-1 MicroService-1

Dependency-2 (Marketplace App)

Deploy Env. (Prod1)

MicroService-1 MicroService-1 MicroService-1

(Github repo)

MicroService-1 MicroService-1 MicroService-2

(Github repo)

MicroService-1 MicroService-1 Dependency-1

(Marketplace App)

MicroService-1 MicroService-1

Dependency-2 (Marketplace App)

Deploy Env. (Staging)

Docker containers

Mesos – Marathon (MS-Infra)

Release [ Build Tag +

Config Snapshot ]

Page 16: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Not Just Where Cisco is Going – It’s a Movement

Partner with leading DevOps tool producers

Hashicorp, Mesosphere, OpenShift

App and developer centric design

Community projects

Spark and DevNet

Page 17: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Introducing Shipped

Page 18: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Software Defined Developer Challenges

Develop

• Run multiple services.

• Multiple language /technology stack.

• Run multiple storage backend.

Build

• SDLC admin control CI flow bottleneck.

• Flexible/dynamic build slaves.

• Consistent packaging and version.

Deploy

• Increased deployment complexity.

• Traditional ops to Devops.

• Distributed systems.

• Service discovery.

• Internal load balancing

• Multiple tech stack.

Page 19: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• Cloud-native product

• Build, deploy, run

• Compose project by adding microservices

• Bootstrap to developer laptop

• Create GitHub source repositories

• Deploy and run each service in individual VM synced to source repo

• Set up CI build for each service

• Deploy to Cisco cloud

Shipped

Page 20: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Shipped Ten Thousand Foot View

Page 21: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Project

Management Continuous

Integration

Shipped Alpha Release

Source

Control Continuous

Deployment

Application

Orchestration

Developer

Tools Service

Assurance

Consul

Elasticsearch

Issue

Management

Mesos

Consul Terraform

Drone GitHub GitHub

Collaboration

Spark

Build Packs

Eclipse

Vagrant

Docker Compose GitHub

Page 22: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Shipped Demo

Page 23: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

DevNet: Cisco’s Developer Program

Page 24: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Enabling a Robust Developer Ecosystem

Engineering Platform APIs

SDKs and Tools

Developer Support

Community Management

To Build Compelling and Innovative Apps

Make the internet a platform for innovation for developers

Page 25: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

The Secret is Out

• Cisco’s developer program • https://developer.cisco.com

Page 26: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Open Source Dev Center Your Source for Open Source at Cisco

https://developer.cisco.com/opensource

• Contributions to open source

• Use in products/solutions

• Community forums, blogs

• Developer VMs

• Developer Events

• IETF Hackathon

• Newcomer Training for OpenStack

• Building Apps on OpenDaylight

Page 27: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

OpenStack

• Cloud computing platform for public/private clouds

• Abstracts data centers into pools of resources

• Provides management layer for efficient, automated allocation of resources

• Empowers operators, admins, users via self service portals

• Provides APIs to develop cloud-aware applications

Page 28: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• https://developer.cisco.com/openstack

OpenStack

Page 29: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Service Abstraction Layer/Core

Base Network

Functions

- Lithium

OpenFlow Enabled

Devices

DLUX VTN

Coordinator OpenStack

Neutron SDNI

Wrapper

Network Applications

Orchestrations &

Services

Open vSwitches Additional Virtual &

Physical Devices

Data Plane Elements

(Virtual Switches,

Physical Device

Interfaces)

Controller Platform

Services/Applications

OpenFlow Stats Manager

OVSDB NETCONF PCMM/CO

PS SNBI

LISP BGP PCEP SNMP SXP Southbound

Interfaces &

Protocol Plugins

OpenFlow

OpenFlow Switch Manager

USC CAPWAP OPFLEX CoAP HTTP

OpenFlow Forwarding Rules

Mgr

L2 Switch

Host Tracker

Topology Processing

AAA AuthN Filter

OpenDaylight APIs REST/RESTCONF/NETCONF

Data Store (Config & Operational) Messaging (Notifications / RPCs)

LACP

Network Services

Service Function Chaining

Reservation

Virtual Private Network

Virtual Tenant Network Mgr.

Unified Secure Channel Mgr

OVSDB Neutron

Device Discovery, Identification

& Driver Management

LISP Service

DOCSIS Abstraction

SNMP4SDN

Network Abstractions

(Policy/Intent)

ALTO Protocol Manager

Network Intent Composition

Group Based Policy Service

Platform Services

Authentication, Authorization &

Accounting

Neutron Northbound

Persistence

SDN Integration Aggregator

Time Series Data Repository Link Aggregation Ctl Protocol

Page 30: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Open SDN Controller Cisco’s Commercial distribution of OpenDaylight

Common Content

“Helium” Open SDN Controller

Incremental

Cisco

Value

Precluded

OpenDaylight

Content

SDNi

Defense4all

PacketCable

PCMM

VTN Project

OpenContrail

Plugin

SNMP4SDN

LISP Flow

Mapping

AD-SAL

Logs

Metrics

Monitoring

Central Mgmt &

Admin

OVA Distribution

One Click Install

Plug-in Clustering

BGP-LS

Secure Network

Bootstrap Infra

MD-SAL

Developer Support

PCEP

Basic

Clustering

AAA

Group Policy

L2 Switch

Openflow

Plugin

OVSDB

Controller

DLUX

Service Function

Chaining

Yang Tools

Page 32: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

https://learninglabs.cisco.com/

Learning Labs

Page 34: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Key Takeaways

Page 35: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

• Cisco has a developer program - DevNet

• Project Shipped makes building cloud apps easy;

demo https://www.youtube.com/watch?v=V_Ff85o_KmM

• DevNet makes it easy for developers to use Cisco technologies

https://developer.cisco.com/

https://developer.cisco.com/shipped/

Key Takeaways

Page 36: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Questions?

Page 37: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon

Thank you

Page 38: Get Ship Done! Microservices Cloud Development Made Easy · MicroService-1 MicroService-1 Dependency-2 (Marketplace App) Deploy Env. (Staging) Docker containers Mesos – Marathon