Microservices is an emerging software and web services design paradigm that is quite useful towards applications in building software as a service (SaaS) micro applications like streaming services (like Netflix), for example. Practical Microservices uses Java and web service design integration patterns and approach that allows you to build self-contained small or micro applications or software as a service modules. In this book, the author first covers modeling services which include coupling and decomposition. Then, he covers integration patterns like classic Enterprise Service Bus (ESB) style integrations, then compares/contrasts REST versus SOAP versus RCP versus others. Of course, he also helps you document these integration patterns.
The book next dives into distributed system elements like the network, messaging using Hessian, transactions, service discovery, Apache Zookeeper, latency and fault tolerance, configuration management, caching, routing, load balancing, Jini/JavaSpaces, and more. Next, the book covers continuous integration including releasability of individual pieces or micro applications or services, the pipeline concept, the Jenkins pipeline, deployment considerations, Docker and more. Then, the author goes into monitoring, with healthchecks, dropwizard metrics, Kibana + logstash, debugging tips and more. Next, we finalize the microservice applications by testing with end to end strategy tests, resilience with Chaos Monkey and Simian Army, stubby4j, integration tests, black box options, and more. Then, the application is secured using https plus basic auth, certificate based approach, Oauth and Spring.
After reading and using this book, you come away with an end-to-end Java-based microservice application case study and source code that you may be able to re-use as a template for you to be productive in your own projects.
What you'll learn
- What are the various fundamentals and scenarios of Microservices, the reasons for these services, challenges and how to work with SOAs
- How to architect for microservices
- How to test microservices and microservices-based systems
- How to do operations and continuous delivery of microservices
- How to work with examples
- What are nanoservices
- How to work with take-away case study and maybe apply it to your own projects
Who is this book for
This book is for experienced Java and web services programmers and web developers.