Skip to main content

Designing Microservices Platforms with NATS [Book] Released

 

Just released!

It is a great and humble feeling to release my very first book “Designing Microservices Platforms with NATS” on 19th November 2021 (first edition).

Cover Image of Designing Microservices Platforms with NATS

You can read it through AmazonBarnes and NobelPackt, and other distributors worldwide.

Why another microservices book?

I hear you! Why there are so many books about microservices? Is that so complicated? Why do people use it?

Those were some of the questions I had when reading about microservices in the wild (internet). The more I read through, the more I realized that there is something missing. That missing piece was the first principle and the simplicity when building microservices.

That is why I thought of writing a book on microservices that people can understand and start building applications with microservices without falling into the trap of ultra complexity. This book focuses on building applications first and includes all the necessary details on scalability, security, observability with practical examples written mostly in the Go programming language.

If you want to bootstrap your microservices journey with a quick rundown of the concepts, history, and practical examples this is a book for you.

If you want to learn about how messaging technologies are utilized in a microservices architecture to scale to a global scale without adding the complexity of a service mesh, this is a book for you.

If you want to learn NATS and understand how it is used in practical application development, this book provides you with a comprehensive guide to learn NATS concepts with examples.

If you want to learn enterprise software architecture by focusing on microservices, this book provides you insights into how microservices are integrated with enterprise software tools such as integration platforms.

If you don’t know anything about microservices or NATS but are eager to learn these technologies as a newbie, I’m sure this book will provide an introduction to these technologies with enough hands-on exercises

Where did it all start?

My appetite for writing started a long way back in school but it really got going ever since I started working at WSO2 which is an open-source, open culture organization that encourages people to share their knowledge. I have been writing about enterprise software, API management, Integration, and Microservices for most of the last 5 years and had the idea of putting it all together in a better form factor for some time.

The idea of this book came from Harshal Gundetty from Packt publishing where he saw one of the articles I wrote on DZone. It triggered the idea of writing a book on Microservices. At the same time, I realized that the world of microservices architecture is going through a transition period where the idea of a service mesh is going through major rework and more, and organizations are adopting the microservices architecture without properly evaluating the challenges it presents. That provided me the motivation to spend time writing a book on microservices focusing on inter-service communication using NATS.

What is unique about this book?

This is the first book (at the time of publishing) that combines the microservices architecture with NATS messaging technology. It provides a fresh perspective on building real-world applications with microservices architecture using NATS as the inter-service communication layer. It provides an alternative approach to build microservices with service mesh without losing any of the functional aspects such as security, observability, and scalability.

This book follows an approach where it provides diagrams and code examples to explain the concepts in detail so that the reader can understand the concepts well. It also uses a pragmatic approach to microservices designing and building by using one single Hospital OPD (Outpatient Department) application throughout the book to explain the concepts.

Getting the best out of this book

This book is not a theory-only book. It provides a considerable amount of example commands and source code to practice the concepts while reading it. You can find most of the source code that is developed within the book in the link below.

Make sure you have the above code repository forked while reading the book and the examples should run on any operating system including Windows, Linux, and Mac OS.

Engage with Us

If you have any comments or feedback on the book and its content, you can share that as a review through the book purchasing platforms or by creating a GitHub issue if it is related to the source code. You can also connect with me via LinkedIn or Medium and I will make sure that you get the explanations that are required related to the book.

Thank you!

This book will not become a reality if I didn’t have the support and guidance from the Packt team. Thank you Harshal, Ruvika, Vaishali, Deeksha, and the team for guiding me through the journey.

I would also like to thank technical reviewers of the book Isuru Udana and Justice Nefe for correcting my mistakes and providing great suggestions to improve the quality of the book.

Finally, to my family for providing me with the environment to write a book on a subject such as microservices which is not the simplest.

Comments

Popular posts from this blog

Understanding Threads created in WSO2 ESB

WSO2 ESB is an asynchronous high performing messaging engine which uses Java NIO technology for its internal implementations. You can find more information about the implementation details about the WSO2 ESB’s high performing http transport known as Pass-Through Transport (PTT) from the links given below. [1] http://soatutorials.blogspot.com/2015/05/understanding-wso2-esb-pass-through.html [2] http://wso2.com/library/articles/2013/12/demystifying-wso2-esb-pass-through-transport-part-i/ From this tutorial, I am going to discuss about various threads created when you start the ESB and start processing requests with that. This would help you to troubleshoot critical ESB server issues with the usage of a thread dump. You can monitor the threads created by using a monitoring tool like Jconsole or java mission control (java 1.7.40 upwards). Given below is a list of important threads and their stack traces from an active ESB server.  PassThroughHTTPSSender ( 1 Thread )

WSO2 ESB tuning performance with threads

I have written several blog posts explaining the internal behavior of the ESB and the threads created inside ESB. With this post, I am talking about the effect of threads in the WSO2 ESB and how to tune up threads for optimal performance. You can refer [1] and [2] to understand the threads created within the ESB. [1] http://soatutorials.blogspot.com/2015/05/understanding-threads-created-in-wso2.html [2] http://wso2.com/library/articles/2012/03/importance-performance-wso2-esb-handles-nonobvious/ Within this blog post, I am discussing about the "worker threads" which are used for processing the data within the WSO2 ESB. There are 2 types of worker threads created when you start sending the requests to the server 1) Server Worker/Client Worker Threads 2) Mediator Worker (Synapse-Worker) Threads Server Worker/Client Worker Threads These set of threads will be used to process all the requests/responses coming to the ESB server. ServerWorker Threads will be used to pr

How to configure timeouts in WSO2 ESB to get rid of client timeout errors

WSO2 ESB has defined some configuration parameters which controls the timeout of a particular request which is going out of ESB. In a particular  scneario, your client sends a request to ESB, and then ESB sends a request to another endpoint to serve the request. CLIENT->WSO2 ESB->BACKEND The reason for clients getting timeout is that ESB timeout is larger than client's timeout. This can be solved by either increasing the timeout at client side or by decreasing the timeout in ESB side. In any of the case, you can control the timeout in ESB using the below properties. 1) Global timeout defined in synapse.properties (ESB_HOME\repository\conf\) file. This will decide the maximum time that a callback is waiting in the ESB for a response for a particular request. If ESB does not get any response from Back End, it will drop the message and clears out the call back. This is a global level parameter which affects all the endpoints configured in ESB. synapse.global_timeout_inte