This document provides an overview of microservices in the enterprise. It discusses factors driving the rise of microservices like SOA fatigue and the need for faster innovation. Examples of microservice architectures from companies like Netflix, Twitter and Gilt are presented. Key capabilities for building enterprise-ready microservices are described, including service discovery, description, deployment isolation using containers, data/verb partitioning, lightweight middleware, API gateways and observability. Open source technologies that support implementing these capabilities are also outlined. The document concludes that microservices are the future of distributed systems and enterprises should implement solutions from first principles using inspiration from internet companies.
2. About Us
• Emerging technology firm focused on helping enterprises build breakthrough
software solutions
• Building software solutions powered by disruptive enterprise software trends
-Machine learning and data science
-Cyber-security
-Enterprise IOT
-Powered by Cloud and Mobile
• Bringing innovation from startups and academic institutions to the enterprise
• Award winning agencies: Inc 500, American Business Awards, International
Business Awards
3. About This Webinar
• Research that brings together big enterprise software trends, exciting startups and
academic research
• Best practices based on real world implementation experience
• No sales pitches
4. • Microservices overview
• Some inspirational architectures
• Microservices in the enterprise
• Enterprise microservices patterns
• Capabilities
• Technologies
Agenda
6. • SOA fatigue
• Top down has proven to be impractical in the enterprise
• Large monolithic applications can’t evolve fast enough
• Large monolithic applications can’t scale fast enough
• Docker and the container revolution
• Emergence of new and exciting programming platforms (NodeJS, GO, etc)
• Friction between the need for innovation and the constrained enterprise software
development practices
Factors Contributing to the Raise of Microservices
10. Bounded Contexts
• Inspired by domain driven design
• Encapsulates the details of a single business domain
• Self-contained entity for the purpose of software development
• Ability to update a microservices without knowledge of its peers
12. Some Examples
http://www.infoq.com/presentations/Twitter-Timeline-
Scalability http://www.infoq.com/presentations/twitter-
soa http://www.infoq.com/presentations/Zipkin
https://speakerdeck.com/mattheath/scaling-micro-services-in-go-highload-plus-
plus-2014
AWS Re:Invent : Asgard to Zuul
https://www.youtube.com/watch?v=p7ysHhs5hl0 Resiliency at Massive
Scale https://www.youtube.com/watch?v=ZfYJHtVL1_w Microservice
Architecture https://www.youtube.com/watch?v=CriDUYtfrjs
http://www.infoq.com/presentations/scale-gilt
http://www.slideshare.net/mcculloughsean/itier-breaking-up-the-monolith-
philly-ete
13. Foundational Building Blocks of Microservices Architectures
ConfigurationTooling Discovery Routing Observability
Datastores
Operational: Orchestration and Deployment Infrastructure
Development: Languages and Container
14. Netflix OSS Microservices Architecture
Edda
Archaius
Configuration
Asgard
Aminator
Tooling
Eureka
Prana
Discovery
Denominator
Zuul, Netty
Ribbon 2.0
Routing
Hystrix
Pytheus
SALP
Observability
Ephemeral datastores using Dynomite, Memcached, Astyanax, Staash, Priam,Cassandra
Manual Orchestration with Asgard and deployment on AWS or Eucalyptus Java, Groovy,
Scala, Clojure, Python, Node.js with AMI and Docker Containers
19. Challenges for Adopting Microservices in the Enterprise
• Open source technology adoption
• Organizational boundaries
• Strict business processes
• Traditional SOA mindset
• Limited cloud adoption
20. Benefits of Adopting Microservices in the Enterprise
• SOA that works
• Building products instead of projects
• Agility
• Speed to market
• Innovation
• Remove friction for the adoption of new technologies
21. Microservices vs. SOA
• SOA promise == Microservices reality
• Federated innovation vs. Designed by committee
• Small functional services vs. Large business services
• REST and lightweight RPC vs. SOAP and WS-*
• Lightweight middleware vs. ESBs
• Decentralized governance vs. Centralized service repository
• Development agility vs. Control
25. Capabilities
• Removing coupling between microservices and client apps
• Dynamically registering microservices in an enterprise topology
• Allow client applications and other services to dynamically discover microservices and adapt
to changes
• Avoid the centralized registry pattern of traditional SOAs
27. Technologies
• Consul.io ( https://consul.io/ ): DNS-style service discovery and configuration
• Netflix’s Eureka ( https://github.com/Netflix/eureka ): AWS service registry used for
locating services for the purpose of load balancing and failover
• Zookeeper (https://zookeeper.apache.org/ ): Centralized service used for maintaining highly
available configuration information
• Etcd (https://github.com/coreos/etcd ): Distributed key value store optimized for service
discovery
29. Capabilities
• Express features of microservices in a descriptive format that can be understood by client
applications
• Manage microservices metadata
• Simplify the creation of client artifacts
• Manage versions of microservices
31. Technologies
• Swagger (http://swagger.io/ ): Description language and description modeling tooling for
RESTful services
• API Blueprints (https://apiblueprint.org/ ): Description language and description modeling
tooling for Web APIs:
• Apache Thrift IDL (https://thrift.apache.org/ ): Highly scalable, cross language service
development
• Google’s gRPC IDL(http://www.grpc.io/ ): HTTP2 framework for cross platform service
development
33. Capabilities
• Enable internal communication between microservices
• Provide high performance interactions between large number of microservices
• Enable seamless cross language communication between microservices and client
applications
• Facilitate rapid microservices implementations across different languages
35. Technologies
• Apache Thrift (https://thrift.apache.org/ ): Highly scalable, cross language service
development
• Google’s gRPC (http://www.grpc.io/ ): HTTP2 framework for cross platform service
development
• Akka (http://akka.io/ ) : Framework for building highly concurrent, distributed applications
• Twitter’s Finagle(https://twitter.github.io/finagle/ ): RPC framework for JVM services
• Netty(http://netty.io/ ): Asynchronous, even driven framework for client server solutions
41. Capabilities
• Enable a standard model for accessing data via microservices
• Partition microservices at the data source level
• Facilitate the composition of data access microservices
• Allow flexible data access models for client applications
45. Capabilities
• Efficiently partition microservices by use case or function
• Compose microservices to enable more complex use cases
• Facilitate the functional testing of microservices
47. Technologies
• Apache Thrift (https://thrift.apache.org/ ): Highly scalable, cross language service
development
• Google’s gRPC (http://www.grpc.io/ ): HTTP2 framework for cross platform service
development
• Akka (http://akka.io/ ) : Framework for building highly concurrent, distributed applications
• Twitter’s Finagle(https://twitter.github.io/finagle/ ): RPC framework for JVM services
• Netty(http://netty.io/ ): Asynchronous, even driven framework for client server solutions
49. Capabilities
• Extend microservices with simple middleware capabilities such as routing, transformation,
persistent messaging etc
• Provide a standard model to enable the communication between client apps and
microservices
• Expand the message exchange patterns supported by microservices solutions
51. Technologies
• RabbitMQ (https://www.rabbitmq.com/) : Simple messaging infrastructure for applications
• Linkedin’s Kafka(http://kafka.apache.org/ ): Scalable publish-subscribe model for
applications
• ZeroMQ(http://zeromq.org/ ): Embeddable networking and messaging model for
applications
53. Capabilities
• Abstract the communication between client applications and internal microservices
• Compose microservices into client-ready services
• Extend microservices with enterprise ready capabilities
55. Technologies
• Mashape’s Kong (https://getkong.org/ ): Open source management platform for APIs and
microservices
• Apigee(): Market leader in API management
• 3Scale(http://www.3scale.net/ ): API management platform
• Azure API Gateway(https://azure.microsoft.com/en-us/services/api-management/ ): Azure
native service for API and microservices management
• AWS API Gateway(https://aws.amazon.com/api-gateway/ ): AWS native service for API
management
57. Capabilities
• Detect and prevent failures in complex microservices topologies
• Trace request flow across microservices
• Monitor service dependencies real time
62. Summary
• Microservices are the future of enterprise distributed systems
• Enterprise microservices solutions need to be implemented from the ground up
• We can drive inspiration from internet giants
• Foundational blocks of microservices architectures include:
-Discovery
-Description
-Lightweight middleware
-Partition by data source
-Partition by verb
-IPC communication
-API Gateway
-Observability
• Start small, iterate….