Posts

REACTO - A Functional Reactive Microservices Framework

What’s new in Spring 5? This is the most anticipated ask for any Spring aspirant and to be honest why it shouldn’t be, because Spring is such a awesome framework that we always ask more from it. This time too Spring came with a bunch of interesting and cool features. Java 8 is now an inevitable part of Spring 5 and so here the magic begins. Out of all the features that Spring 5 provides that most interesting ONES seems to me are: 1) Spring is now FUNCTIONAL – Functions are now First Class Citizens and they can passed anywhere. This is where Lambdas comes in. 2) Spring is now REACTIVE – Spring now supports Reactive Extensions (Rx) and it supports the Reactive Manifesto, the concepts on which the Reactive Programming is based. This post is not about the features that Spring 5 embeds. In this post we are going to discuss about a Microservice framework known as REACTO. The main aspect that distinguishes this framework from others is that its Fully FUNCTIONAL and REACTIVE...

Elastic Search with Spring PART II

1) Index creation or deletion: For Nested Type (Index name is Book) and Parent - Child Relationship (Index name is ParChild) @RequestMapping(value="/addIndex",method = RequestMethod.POST) def addBookIndex(@RequestParam(name = "indexName")String indexName){ logger.info "****** Adding Book Index: $indexName in ELASTIC DB......" def result = elasticsearchTemplate.createIndex(indexName) logger.info "****** Result is: $result " result } @RequestMapping(value="/deleteIndex",method = RequestMethod.POST) def deleteBookIndex(@RequestParam(name = "indexName")String indexName){ logger.info "****** Deleting Book Index: $indexName in ELASTIC DB......" def result = elasticsearchTemplate.deleteIndex(indexName) logger.info "****** Result is: $result " result } 2) Creating Mapping Type Whenever we save a doc...

Elastic Search with Spring

Image
ElasticSearch quite a familiar term. The first question that comes in our mind is: 1) What ElasticSearch is? & 2) Why should we use it? So to answer the first question, I would like to describe ElasticSearch as a wrapper over Apache Lucene (Apache Lucene is a high performance, text search engine library written in Java). So, ElasticSearch in its core is a distributed full-text search engine which is incredibly easy to scale (because of its well designed anatomy), returns results at a lightning speed (because of its analyzers which tokenize the texts and creates a reverse indexing just like the indexing of a book, a variety of analyzers are available), schema free in nature and supports JSON. The best part about elastic search which I experienced is all its functionalities are being exposed as REST services. ElasticSearch is a distributed NO SQL database where every input to it goes in JSON format and it has its very own way of storing data in data file...

Spring Security Oauth2 with JWT

Learning OAuth2 security protocol has always been one of my prime objectives. After integrating JWT token with Spring Security, I thought of giving a try with learning OAuth2 with Spring Security, as Spring Security provides implementation for OAuth2. To know the basics of OAuth2 I followed this. This article along with Aaron Parecki's blog really helped me in getting the concept behind this security protocol. Let's revise the components involved here: •Resource Owner •Client •Resource Server •Authorization Server and the grant types are: •Authorization Code •Implicit •Resource Owner Password Credentials •Client Credentials We have implemented both the Resource and Authorization server at the same endpoint for the sake of simplicity, however we can implement them separately too. And out of the four grant types I have been successful in experimenting with the last two only. I will try to share those experience here. I have selected JWT as...

Security with JWT Token (Spring Security)

Spring Security has always been one of my favourites which I explore often, since the time of xml configuration. This time I tried to implement Security with JWT token using Spring Security module (Java config) and I must say the java config has changed much since the time of XML configuration. Let’s chalk out the high level flow first: 1) User at first will fetch the JWT token from the URL: http://localhost:8080/SpringToken/auth by passing the user id and password in json format in the request body. We will make this URL “permit all” in Spring Security so that Spring does not enforce any authentication or authorization rule for this URL and anonymous authentication is implemented with AnonymousAuthenticationToken. This URL invokes a Handler method which generates JWT token sets it in the Security Context holder and returns it to the client. 2) The client while making subsequent request to access resources need to set the token in the request header named X-Aut...

Centalized Log Analysis & Processing

Image
Logging is always being considered as a fundametal and inherent part of any application, irrespective of the language and platform chosen. By the question arises that "Why Logs are very important???" Beacause I think it is the logs that help us get the real time impression of our application behaviour, i.e the user stimulus, the system responding to it, all the data that are being acted upon etc. In a word the I can say not only the Lifecycle of the application but the human interactions too gets recorded while logging. So Logging is basically the process of recording application actions and state. The stream of events that gets captured while logging becomes a very important source of application's current state and the state to which it needs to be evolved. Today Logging becomes the source of data analytics and data mines are emerging out from it which is helps us to make the application behave in a more intelligent manner. But for all these to happen, we...

Spring Cloud - The Final FALLBACK

Image
Yes, the POST name The Final FALLBACK is absolutely inline with what we will discuss here. We are talking about HYSTRIX-THE CIRCUIT BREAKER , which provides the FALLBACK functionality in Microservices architecture. The Code can be accessed at GITHUB Hystrix - The Circuit Breaker: The fallback mechanism is one of the most prominent and important partner in a microservice landscape and it can be implemented with Hystrix in Spring Ecosystem. The vivid documentation can well be found at the official Site. Here is the basic implementation of Circuit Breaker with Hystrix. Our architectural landscape is almost similar to the following: The incoming request first arrives at the “GATEKEEPER”(ZUUL has also got RIBBON) , which routes it to the Feign Client, which is both “HYSTRIX” and “RIBBON” enabled. The “RIBBON” does the Load Balancing work smartly, and which we can see in action, if more than one instance of the service (here AUTH-SERVICE) is being deployed. Now, ...