
Experienced Application Developer with a demonstrated history of working in the information technology and services industry. Skilled in Java, Spring, Hibernate,Spring Boot, Microservice ,Rest API , Weblogic, Spring reactive, AWS,Azure Devops,GIT, Angular,Java script,Plsql
Technical Analyst
COFORGESpecialist Software Engineer
LTIMINDTREEAssociate Application Developer
ORACLE FINANCIAL SERVICES SOFTWARESystem Engineer
TATA CONSULTANCY SERVICES
Java

PL/SQL

Microservices

Spring Boot

JPA

Angular

Azure DevOps
.png)
Jenkins

HTML5

Kubernetes

AWS

Kafka

Azure Cosmos DB
.png)
Docker

AWS

Weblogic
Hi. This is Shreyam Paul. So I'm basically from West Bengal, Kolkata. So, I have experience of around 7 years right now, and apart from that in Java technology, I have experience of around 7 years. In terms of tech stack, other technologies like Ring board microservices, I have experience of around 5 plus years. And regarding DevOps, cloud technologies like AWS and Azure, I have experience of around more than 1.5 years. Also, I have experience in tough technologies around 2 years right now. And right now, I'm working with Cocoa as a Java backend developer. And, yes, I'm working with Copart, and my client is Walmart. So I'm working directly with the client right now. And, basically, I'm working with them on their post-pandemic projects.
Okay, so you have to tell your discuss. Okay? Like, if you talk about discussing that, I can say in a typical saga design pattern, basically. So the coordination is crucial to manage the distributed transaction with a central coordinator. And this is because if we talk about each microservice managing its own database, the transaction needs to be broken down into smaller and isolated steps that can be rolled back independently if needed. So there are two types of saga design pattern. Like, we have choreography. Each microservice is responsible for specific events. Of course, there's no central orchestrator. So each service is responsible for knowing which events to act on or which events to ignore for the next step in sequence. This works well for simpler workflows. There's another thing in Saga and Fireflies which is orchestration. And so a central orchestrator is responsible for initiating or managing each step of the transaction. So the orchestration basically invokes each microservice in the correct sequence and handles all compensating transactions. So in orchestration, the central orchestrator is responsible for managing all compensating transactions, and in case of choreography, each microservice is responsible for its own actions.
If we talk about that, in case of maintaining code quality, first of all, I have to do a code review. So, implementing the code review process is essential. If doing the code review helps catch bugs or knowledge sharing at first, all those things will happen. Then, coding standards and guidelines should be in place. There should be coding standards and guidelines. And we have some automated testing. We can write automated test cases or functional integration test cases, which will help us achieve high-level code quality. We also have to set up the CICD pipeline, which basically ensures that every change is automatically tested and deployed. We can also do some static code analysis, like SonarQube, Code Climate, or Jetbrains. We can also use pair programming to encourage two developers to work together, so they can get real-time feedback and faster problem-solving. We also have to encourage team members to refactor code. Once that happens, during free time, we can help reduce technical debt to improve maintainability. All those things should be in place. And we should set quality goals, like establishing quality metrics, such as a code coverage target of 80%. Bug rates should also be tracked.
So you have to create a Docker file for a dev application. Okay. Output detection is like in Maven, you can do that. Yes, first of all, in Maven, what we can do is creating the Docker file for a Java application with Maven. It will involve some key steps. First of all, you have to build the Maven project, then you have to write the Docker file. Every Docker file for an application should be written with all the required target information. Then we have to expand on the Dockerfile step. The first stage, the build stage, happens. The second stage, the run stage, happens. Right? What will happen from all those steps, which will be there. Then build and run the Docker image. Suppose you have to build the Docker image by using Docker build, then run your application on a Docker container with Docker run my Java app. So first, build the image, then run the image. Then you will have to test the application. These are the basic steps.
So I have to manage. How can I manage this? Yeah. Like, we can use a Kubernetes cluster kind of like such kind of API keys. whatever we have to create a like in case of Kubernetes FortiGRID, like a config dot yml or secret yml we can create. Okay. So Kubernetes has those kinds of secret objects that are specifically stored or managed the sensitive data. So how can we use it? Like, either we can create a YAML file, or we can go directly to the format, like do those things. Right? Like, we can directly use a YAML file. Right? API version, you have to select, then what is the kind all those things will be there. Like, we have a kind of the secret or kind will be config. So in config, you have to give config, but in secret, you have to give secret. And then we have to provide under that data. We have to provide all those things such as username. And after doing that, like we have to create the secret file and we have to apply that in Kubernetes format, like kubectl apply -f then YAML file. So in this way, I guess, we can use all those things.
Okay, let's first choose, but first of all, what will be the tool for CICD? Like, we can use Jenkins or we can use GitLab CICD, or we can directly use GitLab, GitHub Actions, or any other tools. Then we have to design the pipeline for the microservices. Right? And then, we have to create, like, automate the build and test all those things. We have to containerize the microservices. Those kind of things, we have to use all those things and implement the deployment strategy. We use Kubernetes or any other, that is also fine. And we also automate that, yes, you can give me some kind of gate. Also, you can do monitoring or logging. Those also, you can do.
So here's how we can use to. Okay. What could be that change now is class loader. It's not the concept of sales message, sales logic. This is not the file. Okay. Basically, I guess it is validating the first principle, single responsibility principle. Like, according to the single responsibility principle, that class should have only one reason to change, meaning it should have only one responsibility. But this logger class is responsible for two different log mechanisms, like logging to console or logging to file. So to add if you want to add to the single responsibility principle, we should separate the responsibility by creating different classes for each logging responsibility, like one for a console logger and one for a file logger. And so this would make each class responsible for one type of logging, allowing them to modify independently. So I think this is the way we can do as per my understanding, like getting an abstract class and also.
So private synchronized plus, single data, single channel plus. So they are here, they are using double check locking if I'm not wrong. The code is basically using double check locking. So I think the main issue should be the instance should be volatile, I guess. Like, the static singleton instance, that should be volatile if I'm not wrong. So volatile, it will if we declare the instance as volatile, it will prevent the instance from being partially constructed and ensure the visibility of changes is posted. The given thing is of course, the given thing should be there.
Finally speaking. I'm not sure about that. I'm not sure, but I don't know about this.
Resilient transaction management, we can use, like, it should be there. We can use a direct transaction annotation and manage all those string boot. This is a string boot annotation and a transactional. And also, you can use a strategy or a propagation level, in which, using the annotation, we can do that.
I'm not aware about this, so it's better not to answer this question. Thank you. Have a nice day.