Building Next Generation Applications and Microservices

  • Published on
    20-Jan-2017

  • View
    34

  • Download
    1

Transcript

  • Building Next Gen Applications and Microservices

    Manuel Silveyra

    @manuel_silveyra

    May 25, 2016

  • IBM Swift Package Catalog

    2

    https://swiftpkgs.ng.bluemix.net/

  • Progression to Microservices

    3

    Continuous Integration

    Agile

    Heavyweight development

    Continuous Deployment

    DevOps

    Microservices

  • 1. From Heavyweight Development to Agile

    4

    A consolidation of ideas from Extreme Programming, Scrum,

    Lean, etc.

    Tried to remove the overhead and risk of large scale software

    development by having:

    Smaller work increments

    Frequent iterations

    Rapid prototyping

    Continuous Integration

    Agile

    Heavyweight development

    Continuous Deployment

    DevOps

    Microservices

  • 2. From Agile to Continuous Integration (CI)

    5

    Sought to combine software components as early in the

    lifecycle as possible in order to minimize the impact of

    code integration issues.

    Virtualization and automated testing removed

    technological barriers to CI.

    The adoption of Agile led to a growth in CI, which was a

    common practice in Extreme Programming.

    Continuous Integration

    Agile

    Heavyweight development

    Continuous Deployment

    DevOps

    Microservices

  • 3. From CI to Continuous Delivery (CD)

    6

    CD defines a deployment pipeline to bring changes to production as

    quickly as possible.

    Is an instantiation of Scrums potentially shippable product

    increment.

    Continuous Integration

    Agile

    Heavyweight development

    Continuous Deployment

    DevOps

    Microservices

  • 4. From CD to DevOps

    7

    In most organizations development and operations were separate.

    Organizations where operations and development were together were more successful at establishing CD practices.

    Engineering approaches were taken to problems that were previously dealt with procedurally.

    This led to:

    Higher automation in day to day tasks

    Greater stability and resilience

    Continuous Integration

    Agile

    Heavyweight development

    Continuous Deployment

    DevOps

    Microservices

  • 5. From DevOps to Microservices

    8

    The architectural phase where large monolithic applications are broken down into discrete, business focused services.

    This led to:

    Higher development parallelization

    Greater scalability and utilization

    Continuous Integration

    Agile

    Heavyweight development

    Continuous Deployment

    DevOps

    Microservices

  • Microservice Outcomes

    Increase Speed

    Reduce Cost

    Improve Resilience

    Enable Visibility

    9

  • Microservice Keys to Success

    10

    Organization

    MethodologyTechnology

  • Organizational Success

    Are teams aligned to business or technology?

    How are responsibilities divided between

    teams?

    At what level of organization are

    development and operations divided?

    DevOps or Development and Operations?

    What are team sizes and skills?

    Dependencies and cross-team

    communications?

    Power distribution between teams?

    11

    Organization

    MethodologyTechnology

  • Methodological Success

    Product or projects?

    Agile or waterfall?

    Who controls business requirements?

    Fear of change, or continuous delivery?

    Degree of automation in deployment and

    operations?

    12

    Organization

    MethodologyTechnology

  • Technological Success

    Cloud provisioning?

    Virtualization? Containerization?

    Application integration approach?

    Security and identity management?

    Operational middleware?

    Language? Databases?

    Legacy technologies?

    13

    Organization

    MethodologyTechnology

  • Microservice Exercise

    14

  • Microservice Technologies

    Containers

    Encapsulate services and are accessible by IP/port combination

    Service Discovery

    Provides a way to know when services have been added/removed and where

    they are located

    Service Orchestration

    Manages service topologies

    Ensures availability and utilization

    API gateway

    Security

    Routing

    15

  • High Level View

    Connect to services through HTTP

    Services communicate through

    event bus

    Services can be written in

    whatever language is best for the

    task and skills available

    Each service stores data

    independently

    16

  • Containerized Deployment

    Services can scale independently

    according to load without

    affecting the others

    Services connect to external data

    stores (databases, BLOB stores,

    etc.)

    Containers, service discovery, API

    gateway

    Efficient/single point of failure

    17

  • Optimized Containerized Deployment

    Groups of services can be

    collocated on physical systems

    Containers, service discovery,

    service orchestration, API

    gateway

    Efficient/highly available

    18

  • Microservice Principles

    Do One Thing Well

    Build Afresh

    Expect Output to Become Input

    Dont Insist on Interactive Input

    Try Early

    Dont Hesitate to Throw it Away

    Toolmaking

    19

  • 20

  • Microservice Platform

    Shared Capabilities

    Hardware services

    Code management, testing, and

    deployment

    Data stores

    Service orchestration

    Security and identity

    Architectural policy

    Local Capabilities

    General tooling

    Runtime configuration

    Service discovery

    Request routing

    System observability

    21