Evolve the Monolith to Microservices with Java and Node

Book description

Microservices is an architectural style in which large, complex software applications are composed of one or more smaller services. Each of these microservices focuses on completing one task that represents a small business capability. These microservices can be developed in any programming language.

This IBM® Redbooks® publication shows how to break out a traditional Java EE application into separate microservices and provides a set of code projects that illustrate the various steps along the way. These code projects use the IBM WebSphere® Application Server Liberty, IBM API Connect™, IBM Bluemix®, and other Open Source Frameworks in the microservices ecosystem. The sample projects highlight the evolution of monoliths to microservices with Java and Node.

Table of contents

  1. 0783442119Front cover
  2. Notices
    1. Trademarks
  3. Preface
    1. Authors
    2. Now you can become a published author, too!
    3. Comments welcome
    4. Stay connected to IBM Redbooks
  4. Chapter 1. Overview of microservices
    1. 1.1 What is the microservices architecture
      1. 1.1.1 Small and focused around business domain
      2. 1.1.2 Technology neutral
      3. 1.1.3 Loosely coupled
      4. 1.1.4 Highly observable
      5. 1.1.5 Automation
      6. 1.1.6 Bounded context
    2. 1.2 Reasons for adopting the microservices architecture
      1. 1.2.1 Challenges with existing monolithic applications
      2. 1.2.2 Microservices for various stakeholders
      3. 1.2.3 Timing with availability of cloud era and other tooling
    3. 1.3 Transformation from a monolith to microservices
      1. 1.3.1 Fictional Company A business problem
      2. 1.3.2 Adopting microservices for an evolutionary architecture
  5. Chapter 2. Evolution strategies
    1. 2.1 Microservices: An evolutionary architecture by nature
    2. 2.2 Evolutionary practices and patterns
      1. 2.2.1 Continuous integration, continuous delivery
      2. 2.2.2 Strangler application
      3. 2.2.3 Evolutionary database refactoring and deployment
    3. 2.3 Evolutionary architecture in practice
      1. 2.3.1 Gradually transforming to a catalog service
      2. 2.3.2 Strangling the customer and order components
      3. 2.3.3 Evolutionarily transforming the user interface to a UI microservice
  6. Chapter 3. Identifying candidates within the monolith
    1. 3.1 Identifying candidates
    2. 3.2 Considerations for moving to microservices
    3. 3.3 Decomposing monolith application into microservices
      1. 3.3.1 Designing microservices
      2. 3.3.2 Choosing the implementation stack
      3. 3.3.3 Sizing the microservices
    4. 3.4 Refactoring
      1. 3.4.1 A reason to refactor to microservices
      2. 3.4.2 Strategies for moving to microservices
      3. 3.4.3 How to refactor Java EE to microservices
    5. 3.5 Identifying and creating a new architecture example
      1. 3.5.1 Architecture: As is
      2. 3.5.2 Architecture: To be
  7. Chapter 4. Enterprise data access patterns
    1. 4.1 Distributed data management
    2. 4.2 New challenges
      1. 4.2.1 Data consistency
      2. 4.2.2 Communication between microservices
    3. 4.3 Integration with the monolith application
      1. 4.3.1 Modifying the monolith application
    4. 4.4 Which database technology to use
      1. 4.4.1 Relational databases
      2. 4.4.2 NoSQL databases
    5. 4.5 Practical example: Creating the new microservices
      1. 4.5.1 New microservice catalog search
      2. 4.5.2 Evolution of the account data model
  8. Chapter 5. Security and governance
    1. 5.1 Security in microservice architecture
      1. 5.1.1 Authentication and authorization
      2. 5.1.2 Service-to-service authentication and authorization
      3. 5.1.3 Data security
      4. 5.1.4 Defence in depth
    2. 5.2 Governance in microservice architecture
    3. 5.3 The case study
      1. 5.3.1 Integrating and securing the monolith system
    4. 5.4 Summary
  9. Chapter 6. Performance
    1. 6.1 Common problems
    2. 6.2 Antipatterns to avoid
      1. 6.2.1 N+1 service call pattern
      2. 6.2.2 Excessive service calls
      3. 6.2.3 Garrulous services
      4. 6.2.4 Lack of caching
    3. 6.3 Lead practices to improve performance
      1. 6.3.1 Let the service own its operational data
      2. 6.3.2 Avoid chatty security enforcement
      3. 6.3.3 Leverage messaging and REST
      4. 6.3.4 Fail fast and gracefully
  10. Chapter 7. DevOps and automation
    1. 7.1 Deployment automation
      1. 7.1.1 Development
      2. 7.1.2 Build
      3. 7.1.3 Test
      4. 7.1.4 Deploy
    2. 7.2 Monitoring
      1. 7.2.1 Collecting data
      2. 7.2.2 Dashboard
      3. 7.2.3 Error handling
    3. 7.3 Performance
      1. 7.3.1 Automatic scalability
      2. 7.3.2 Service discovery
      3. 7.3.3 Load balancing
  11. Appendix A. Additional material
    1. Locating the Web material
    2. Cloning the GitHub repository
    3. Social networks JSON data model example
  12. Related publications
    1. Other publications
    2. Online resources
    3. Help from IBM
  13. Back cover

Product information

  • Title: Evolve the Monolith to Microservices with Java and Node
  • Author(s): Sandro De Santis, Luis Florez, Duy V Nguyen, Eduardo Rosa
  • Release date: December 2016
  • Publisher(s): IBM Redbooks
  • ISBN: 0783442119