
IT Analyst
Tata Consultancy ServicesSoftware Engineer - I (FullStack)
P.S. Intelegencia AnalyticsData Eng, Mgmt and Governance Sr Analyst
Accenture SolutionsAssociate Consultant (FullStack)
IRT Digital Analytics SolutionsAssociate Software Engineer (FullStack)
Sofbang TechnologiesSoftware Developer (FullStack)
Lynkit SolutionsREST API

GraphQL

HTML

JSON

MySQL

Oracle 12C

DynamoDb

Redis

Windows XP

Windows 7

Windows 10

Linux
.png)
Docker

VMs

ExpressJS

Bootstrap

Git

Mocha

Chai

GCP
Azure

AWS
NPM

Teams

GCP

AWS
Figma

Slack

GraphQL Playground

GitLab

Google Cloud

GCP
I am working as a Node.js developer at the backend in Accenture. I've been associated with Accenture almost 2 years, and I hold an experience of 6 years. I've worked on different domains such as health, insurance, education, and finance. I've also worked with almost all cloud technologies, including GCP, AWS, and Azure. I've worked with both types of databases, such as NoSQL and RDBMS. I also have experience with third-party integrations, APIs, and SDKs, and I've worked with various cloud services. I want to integrate with different data sources, such as Redis and Memcached.
So there were times in the past where we had to roll up some APIs, which you can say we develop and design based on frameworks like Express. I also have exposure with GraphQL as well. So I have been working on developing these RESTful APIs. We also worked on securing the APIs using middleware, securing the payload, and receiving a specific payload. We also put validations in place using GUI frameworks and multiple frameworks as middleware.
So, yes, I worked on all types of databases, including SQL and NoSQL. In SQL, I have mostly worked on MySQL, PostgreSQL, and Oracle DB. Most of the time, I worked on NoSQL databases, including MongoDB, DynamoDB, and Cassandra. This is what I've worked on with different databases. I've also developed health-based applications on MongoDB using CSFLE, which is client-side field-level encryption, to encrypt our database entries and store them encrypted, and to retrieve them decrypted.
So if we talk about handling the front end and the back end architecture level of the application, it's like I worked on both of the parts, specifically talking about the back end. We divide an application into model, view, and controller, three different parts of the application. And similarly, we have divided the front end as well into three different parts, that is model, view, and controller. So that is the best way and approach so that going further, we can expand our modules, and we can work very easily in teams, we can collaborate with them. So that's the way the standardization protocol works.
So in my past, I got a problem how to decrypt the records and store them in NoSQL databases that we were using as MongoDB. So we opted for MongoDB Enterprise. At that time, version 10 was already prevailing, which had recently been launched. And they didn't have the official documentation on how to implement client-side field-level encryption. So that was the biggest challenge to protect our data entries into MongoDB Enterprise using CSFLE, where there were no docs available. That was the biggest challenge: how to store the data encrypted and get the data decrypted using the CSFLE of MongoDB 10.0 and above versions. That was actually deployed by Health Applications. And that application is currently running.
So if you talk about the React JS project, like, we can divide our application into user different life cycle hooks. And, we can divide our application into model view and controller similarly. So that's the best approach how we can divide our whole UI application, which we work in React JS. That's all.
Most of the time, the challenges which a full stack developer faces are of API integration. This is the first primary problem. And primarily, the secondary one is how to design the architecture of the project. This is actually the primary one. The second is how to integrate the APIs basically. The third would be how to make our application safe and secure, both on the back end as well as the front end, where to store those constants, which are deliberately stored in constant.js. Instead, you can use key management services, something like secret management services. So, these are the basic three problems.
So the approach would be all four problems which you have listed earlier, like, we need to define a specific architecture that is based on the model view controller approach so that the application is divided, segregated, and categorized where the model is situated, the controller should be there, and the views should be there. This will be the basic architectural issue that can be resolved very easily. Furthermore, how our application will be secured, how the data will be coming from the client to the server. We also put some validations based on middleware. We also put authentication based on middleware so that our controller is not called all the times recursively. Most of the functionality, if required, is catered to on the middleware level. This is the second part. We can even implement worker threads to make our application much faster and have better performance. This is on the performance aspect.
So the methodology I have implemented in the Node.js application most of the time is using worker threads to improve performance. What happens is that worker threads talk to the OS resources directly. Let's say you have a quad-core CPU, which means 4 cores. So it can divide your whole application into 4 different threads. If there's a request coming to the server, thread number 1 will handle that request at one time, and 3 threads will be free. If a 2nd request comes, the 2nd thread will handle it. Similarly, a number of threads like t to n will handle requests till n number of requests. Right? So this way, the performance of the application improves, and it becomes more effective. Additionally, there are methodologies like implementing authentication as a middleware and implementing validation as a middleware. Another approach is securing your payload instead of sending plain JavaScript objects. You can use base 64 or base 32 formats to convert them and send them, so that no plain passwords are sent from a client to server. So these are the basic approaches I have done. It could be improved. The security part could be improved by using encryption at both ends, with private and public keys, to access and send data from client to server.
So in agile development methodologies, the best part is you come to know after each small deliverable of the chunk whether that was delivered in the right direction. Was the requirement met or not? This is the best part which I have experienced in my past of agile. And agile is, you know, in every iteration, you get feedback so that you can improve. This is the best part of agile. You get instant feedbacks and you implement those feedbacks. And at the end, when your delivery is ready or deliverable is ready, that is the product which is actually getting delivered, will never face any issues related to the requirements or the business logics which were to be implemented and weren't implemented. So this is the beauty of agile development that's what I think.