microservices: from theory to · pdf filesunil joshi valerie lampkin ... viii microservices...

170
Redbooks Front cover Microservices from Theory to Practice Creating Applications in IBM Bluemix Using the Microservices Approach Shahir Daya Nguyen Van Duy Kameswara Eati Carlos M Ferreira Dejan Glozic Vasfi Gucer Manav Gupta Sunil Joshi Valerie Lampkin Marcelo Martins Shishir Narain Ramratan Vennam

Upload: trinhnhi

Post on 06-Feb-2018

223 views

Category:

Documents


4 download

TRANSCRIPT

  • Redbooks

    Front cover

    Microservices from Theory to PracticeCreating Applications in IBM Bluemix Using the Microservices Approach

    Shahir Daya

    Nguyen Van Duy

    Kameswara Eati

    Carlos M Ferreira

    Dejan Glozic

    Vasfi Gucer

    Manav Gupta

    Sunil Joshi

    Valerie Lampkin

    Marcelo Martins

    Shishir Narain

    Ramratan Vennam

  • International Technical Support Organization

    Microservices from Theory to Practice: Creating Applications in IBM Bluemix Using the Microservices Approach

    August 2015

    SG24-8275-00

  • Copyright International Business Machines Corporation 2015. All rights reserved.Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP ScheduleContract with IBM Corp.

    First Edition (August 2015)

    This edition applies to IBM Bluemix Version 1.0.

    Note: Before using this information and the product it supports, read the information in Notices on page vii.

  • Contents

    Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viiTrademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

    IBM Redbooks promotions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

    Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiAuthors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiNow you can become a published author, too . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvComments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvStay connected to IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi

    Part 1. Introducing the microservices architectural style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Chapter 1. Motivations for microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1 What are microservices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.1.1 Small and focused . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1.2 Loosely coupled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1.3 Language-neutral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1.4 Bounded context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1.5 Comparing microservices and monolithic architectures . . . . . . . . . . . . . . . . . . . . . 6

    1.2 Benefits from microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.1 Enterprise solutions context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.2 Challenges with monolithic architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.3 Developer perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.4 Tester perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.5 Business owner perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.6 Service management perspective. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.3 What to avoid with microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3.1 Dont start with microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.2 Dont even think about microservices without DevOps. . . . . . . . . . . . . . . . . . . . . 111.3.3 Dont manage your own infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.4 Dont create too many microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3.5 Dont forget to keep an eye on the potential latency issue . . . . . . . . . . . . . . . . . . 12

    1.4 How is this different than service-oriented architecture?. . . . . . . . . . . . . . . . . . . . . . . . 121.5 Case studies and most common architectural patterns . . . . . . . . . . . . . . . . . . . . . . . . 14

    1.5.1 An e-commerce discount site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.5.2 Financial services company . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.5.3 Large brick-and-mortar retailer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    1.6 Example scenarios using microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.6.1 Cloud Trader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.6.2 Online Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.6.3 Acme Air . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    Chapter 2. Elements of a microservices architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 192.1 Characteristics of microservices architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    2.1.1 Business-oriented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.1.2 Design for failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.1.3 Decentralized data management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1.4 Discoverability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    Copyright IBM Corp. 2015. All rights reserved. iii

  • 2.1.5 Inter-service communication design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.1.6 Dealing with complexity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.1.7 Evolutionary design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    2.2 Designing microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.2.1 Use design thinking to scope and identify microservices . . . . . . . . . . . . . . . . . . . 292.2.2 Choosing the implementation stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.2.3 Sizing the microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    2.3 REST API and messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.3.1 REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.3.2 Messaging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.3.3 REST and messaging together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    2.4 The future of microservices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    Chapter 3. Microservices and DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.1 Why you should use DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    3.1.1 Defining DevOps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.1.2 DevOps is a prerequisite to successfully adopting microservices. . . . . . . . . . . . . 403.1.3 Organizing teams to support microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.1.4 Organize a DevOps team to support other microservices teams . . . . . . . . . . . . . 41

    3.2 DevOps capabilities for microservices architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.2.1 Continuous business planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.2.2 Continuous integration and collaborative development . . . . . . . . . . . . . . . . . . . . 443.2.3 Continuous testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.2.4 Continuous release and deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.2.5 Continuous monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.2.6 Continuous customer feedback and optimization . . . . . . . . . . . . . . . . . . . . . . . . . 47

    3.3 Microservices governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.3.1 Centralized versus decentralized governance . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.3.2 Enterprise transformation for microservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    3.4 DevOps capabilities: Testing strategies for microservices . . . . . . . . . . . . . . . . . . . . . .