Get Ship Done! Microservices Cloud Development Made Easy Charles Eckel and David Tootill Cisco Systems
Agenda Microservices Architecture Get Ship Done! Microservices in the Cloud Cisco Shipped Introduction and Demo DevNet Cisco s Developer Program
Microservices Architecture
What is 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
Microservices vs Monolithic 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
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/)
Characteristics of a Microservices Architecture Componentization via services Organized around business capabilities Products not projects Smart endpoints and dumb pipes Decentralized governance Decentralized data management Design for failure
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 1. Registrator monitors Docker events Deploy Env. (Staging) (Github repo) Dependency-1 (Marketplace App) MicroService-2 (Github repo) Dependency-2 (Marketplace App) Docker containers Mesos Marathon (MS-infra) HAProxy Consul Template (MS-Infra) Consul (DNS) Registrator (MS-Infra) 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 (Github repo) Dependency-1 (Marketplace App) Project MicroService-2 (Github repo) Dependency-2 (Marketplace App) Release [ Build Tag + Config Snapshot ] (Github repo) (Github repo) (Github Dependency-1 repo) (Marketplace App) Dependency-1 (Marketplace App) Dependency-1 (Marketplace App) Deploy Env. (Prod2) Deploy Env. (Prod1) Deploy Env. (Staging) MicroService-2 (Github repo) MicroService-2 (Github repo) MicroService-2 (Github repo) Dependency-2 (Marketplace App) Dependency-2 (Marketplace App) Dependency-2 (Marketplace App) Docker containers Mesos Marathon (MS-Infra)
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 Build Deploy Run multiple services. Multiple language /technology stack. Run multiple storage backend. SDLC admin control CI flow bottleneck. Flexible/dynamic build slaves. Consistent packaging and version. Increased deployment complexity. Traditional ops to Devops. Distributed systems. Service discovery. Internal load balancing Multiple tech stack.
Shipped 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 Ten Thousand Foot View
Shipped Alpha Release GitHub Build Packs Eclipse Vagrant Docker Compose GitHub Drone Terraform Mesos Consul Consul Elasticsearch GitHub Project Management Developer Tools Source Control Continuous Integration Continuous Deployment Application Orchestration Service Assurance Issue Management Spark Collaboration
Shipped Demo
DevNet: Cisco s Developer Program
Make the internet a platform for innovation for developers Enabling a Robust Developer Ecosystem Engineering Platform APIs SDKs and Tools Developer Support Community Management To Build Compelling and Innovative Apps
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
OpenStack https://developer.cisco.com/ openstack
- Lithium DLUX VTN Coordinator OpenStack Neutron SDNI Wrapper Network Applications Orchestrations & Services AAA AuthN Filter OpenDaylight APIs REST/RESTCONF/NETCONF Base Network Functions OpenFlow Stats Manager OpenFlow Switch Manager OpenFlow Forwarding Rules Mgr L2 Switch Host Tracker Topology Processing Service Function Chaining Reservation Virtual Private Network Virtual Tenant Network Mgr. Unified Secure Channel Mgr Link Aggregation Ctl Protocol Network Services 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 Controller Platform Services/Applications Data Store (Config & Operational) Service Abstraction Layer/Core Messaging (Notifications / RPCs) OpenFlow OVSDB NETCONF LISP BGP PCEP CAPWAP OPFLEX SNMP PCMM/CO SXP USC SNBI HTTP CoAP LACP PS Southbound Interfaces & Protocol Plugins OpenFlow Enabled Devices Open vswitches Additional Virtual & Physical Devices Data Plane Elements (Virtual Switches, Physical Device Interfaces)
Open SDN Controller Cisco s Commercial distribution of OpenDaylight Helium Open SDN Controller Defense4all Precluded OpenDaylight Content VTN Project LISP Flow Mapping SNMP4SDN PacketCable PCMM OpenContrail Plugin L2 Switch OVSDB AD-SAL AAA Group Policy Openflow Plugin SDNi DLUX Controller Common Content Yang Tools Service Function Chaining BGP-LS MD-SAL Basic Clustering Logs Secure Network Bootstrap Infra PCEP Developer Support Metrics OVA Distribution One Click Install Incremental Cisco Value Monitoring Central Mgmt & Admin Plug-in Clustering
Shipped https://developer.cisco.com/sh ipped
Learning Labs https://learninglabs.cisco. com/
Sandbox https://devnets andbox.cisco.c om
Key Takeaways
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/
Questions?
Thank you