Get Ship Done! Microservices Cloud
Development Made Easy Charles Eckel and David Tootill
Cisco Systems
• Microservices Architecture
• Get Ship Done! – Microservices in the Cloud
• Cisco Shipped Introduction and Demo
• DevNet – Cisco’s Developer Program
Agenda
Microservices Architecture
• 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?
• 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
Comparison - Monolithic vs Microservice From Martin Fowler (http://martinfowler.com/articles/microservices.html)
Three Dimensions of Scaling From The Art of Scalability (http://theartofscalability.com/)
• 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
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
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
Get Ship Done! Microservice Architecture
in the Cloud
Microservices Infrastructure (MI)
Microservices Infrastructure in the Cloud
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
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 ]
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
Introducing Shipped
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.
• 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
Shipped Ten Thousand Foot View
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
Shipped Demo
DevNet: Cisco’s Developer Program
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
The Secret is Out
• Cisco’s developer program • https://developer.cisco.com
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
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
• https://developer.cisco.com/openstack
OpenStack
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
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
https://developer.cisco.com/shipped
Shipped
https://learninglabs.cisco.com/
Learning Labs
https://devnetsandbox.cisco.com
Sandbox
Key Takeaways
• 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
Questions?
Thank you