
At Story Digital, my role as a Software Developer allowed me to harness my expertise in JavaScript and contribute significantly to project deliverables. My technical proficiency in Mongoose ODM became instrumental in optimizing database operations, ensuring robust and scalable applications.
Our team's commitment to continuous learning and functional excellence facilitated the development of secure authentication flows, thanks to my capability with Passport.js. As a dedicated team player, my goal is to drive progress through innovative solutions and a collaborative work ethic.
Software Development Engineer (Backend)
FreelanceNode.js Developer
Getkart Pvt LtdBackend Developer
Story DigitalSoftware Development Engineer (Backend)
Acelemia IT Solutions
Javascript

MongoDB
REST API
NPM

Slack
Jira

NodeJS

VSCode

Postman
And regarding the ORM, I have used normally mongoose with the MongoDB. So and, uh, continuing about my experience, I started with in 2020, and the last organization I was working with, it's called Get Card. It has basically 2 projects. Um, uh, one was in ecommerce type, and second was Exon. My roles and responsibilities was to handle the back and make the, uh, you know, make new functionalities, contribute in them, and adding and optimizing the code and via and and regarding the optimization method, we have, uh, I have contributed towards upgrading the old code that was written on node 12 version, Uh, node 12th version, uh, 10th node 12th version, and we, uh, did upgrade it to the 18th one. So I contributed in that a lot. I also contributed in working with socket that were used in the social media platform. I contributed for the video streaming part that was in it. So that was about the last project that I worked for.
So regarding the sir circuit breaker pattern and the noise application depends and depending upon the external integrations, that's first of all, we have to understand and understand that, uh, what is the circuit breaker pattern. And circuit breaker pattern is that when you have, uh, you get a request and you redirect that request. And after that, there is an implement implementations come, and you, uh, according to that event, you make your own own changes. Means you particularly change these things. And it's like, uh, you can have your payment gateways correctly, and if you can have your payment, um, attached gateway attached in the pattern of circuit breaker. So, generally, what we can have is we can redirect the payment coming from the one. And if the payment has been cleared, then you can have your, uh, events after that. And if the payment has not been cleared, then you can break that particular, and you can send your response or whatever you wanted to do with that request. So that can be one example for of externally the integration. That's, like, when, uh, if your, uh, means application has a payment related thing, and it's like, damn, um, making payments to from any bank or are you you know, any other third party payment gateway. So in that scenario, we have in in that scenario, the circuit breaker patterns helps a lot.
So the most reliable method, basically, we can have is with the zero downtime. Basically, um, what we can have is zero downtime. It's generally, it's not a practical thing. You can you can have a very less downtime, so that is what the ECS can have. But, uh, if your application has been hosted on ECS, I mean, elastic container services on that, so what you're gonna have is you can have the same APIs and everything. You can make a different container, and you can just uh, stop the container which were in which you're in the network in which you're I means that authorized container a network. So what you can have is you just can put a different container on the place of the last, uh, you know, last container service that was running. It's like, uh, you you have a container on staging. You can just, um, go and just put that staging container into the master with the same, uh, APIs and everything and so that, uh, the direct mode is gonna redirect to a different container, and that's it. You can just, uh, you are stopping stopping the load going from 1 container, and you are just redirecting the, uh, load to a different container on a different
Transactional integrity when working with no SQL database in the Node JS application, It's a bit tricky operation, first of all. Uh, you what you have to you have to do is you have to maintain the isolation level in that in Node. Js application, um, when you are working with a NoSQL database. So yes. Um, and, uh, generally, the, uh, means that means the isolation level that I'll generally have is you can, uh, more more we can say isolation is generally eventual, consists that you maintain the, uh, principles that eventually consider consists and see and the durability of your data. So, yes, what you can do is you can allow only 1. It's like you can use Redis, and you can have your red locks out there so you can block the thread while, uh, you're working with it. So in that way, you can
So describing about the, uh, diagnosis memory leaks. So memory leaks is a very important part in Node. Js. Sometimes you have, uh, many operations, like, APIs going out of the memory. So you have multiple multiple third party module, and what you can do is you can, um, you know, just have them and you can see which function is taking how much time, Means how much memory and and acquiring almost, uh, and it and certainly like that. And while calling the API, you can have you can go to link to the console. You can, um, console in the browser, and you can just directly see that which API is taking a lot of memory and everything. You can have the third party modules, uh, which can track your, uh, API's heap consumption. And to conquer those, you can, certainly, you can increase the heap size too. But, uh, first of all, we you have to see about your system design. You have to design about which, uh, object to use, which class is performing, and where you have to let it go. Uh, instead, like, map or a instead of using maps, you can use weak maps wherever possible. So you have to write the board in that way. You have to free up the memory as soon as possible. You know, just, uh, freeing up the memory, uh, if it is, uh, not if freeing up the memory in the case, like, where, um, the data has been used and and there is no particular using, uh, usage of the data again. So what is the best scenario would be that you free up that particular memory?
So regarding the communication protocol, the best way is you have the HTTPS protocol, first of all. You have your proxies, uh, covered in a right way so that, uh, you have pro proxies configured in the right way. So that is one of the method, and you all always use the HTTPS method. Nowadays, if you make a different part of it, then you can use protobufers also in Node. Js, so that makes your communication protocol, uh, very good using tokens and different systems as inside the port particle inside the port. And while while considering the AWS infrastructure, just to, um, you have to take care of the You have to take care of the IP addresses and which ports are open for what particular method. If there is application deployed in a container and it is, you know, it container or or a EC 2 instance. So only for that particular instance, you should have your ports open, and only that particular IP address has to be entertained. No other services. So in that way, you can have your things configured out.
So by looking the code, I feel that it is a singleton pattern in which, uh, only a, uh, ins if there is an only one instance of that particular class has been maintained, And, uh, it is beneficial in the given context, so though as the data doesn't changes down the way. So only so whenever we are providing the data, data is not changing in the way. So data remains the same and whenever we are using that particular data. So it is generally remaining the same. So there are many, uh, you know, applications of this pattern, singleton pattern. So in that in those scenarios where data is really not changing, it's like, uh, either user profile. Like, whenever we are showing a particular user profile, the data remains the same. If the particular if that's been updated also, then we get it, and then also the data remains the same. So I think the artist, the singleton pattern has been used here.
So, basically, as I can understand about the question is, it's like we wanted to change the architecture from monolithic to microservices-based and API-first NodeJS application. So in these kinds of scenarios, we have to, first of all, we have to understand that which particular services are being used the most and least. We have to find the right particular services, then we have to break it down and with the help of either with the serverless, Node serverless architecture means on the Lambda services, what we can do is we can propose that or we can, you know, just launch different instances for that. That is, and we can have a load balancer for that. And after that, when it comes, then we have to disintegrate our database to regarding that which database, which particular collections or which particular tables are most used so that we can have our sharding and different kind of things on that. So the strategy first is like, first of all, we have to show, we have to find it that which APIs are being used the most and which APIs are used, means being the less used. And after that, we bring it down that in what services can be clubbed together so that we can save our resources. It is like payment resources can be in one so that it can be a secure user profile if particular user has been seen profile. So the people generally do not see their profile much, their information of that. So we can have, we can disintegrate them after that, we can have them clubbed together which to, you know, appreciate both of them the most.
So regarding the high availability and disaster recovery for the stateful components, so then a node says application on AWS. First of all, you should on if it is on AWS, first of all, you should have your backup ready. Secondly, if you have to, uh, ensure the high availability, if you're, um, going with the instances, then you have to have your load balance configured so that you have high as soon as your load is high, you can, uh, you go for, uh, you know, launching another instance, and their availability is there. Regarding the disaster recovery, you should, uh, have your ECS configured that if the container goes down 1, then, um, automatically, the another container go goes up and with the same configurations and everything. So that is one of, uh, the thing which I can relate about. Uh, high availability is your load balances. The load balances necessary. Your, uh, load is a load being is balanced. And, uh, if you if it is a microservices based architecture, then for a particular service, then for a different services, it should be, uh, done.
So, basically, uh, strategize would be employed to optimize query performance. So different computing distributed computing service. So the query is mostly is interacting with the database part. So while you where you make the queries, so the database is more employed up there. So first of all, you have to understand about the concept of indexing. So whichever indexing. Secondly, your database designing, employing the asset principles for that here. And so that matters a lot. Secondly, when you have your s eight, uh, principle configured, you have your, um, database as um, basically with the standard principles. Secondly, on the node JS, wherever, um, means getting your system is basically where the low latency areas. It's like if even, you know, if you are setting in India, then maybe a Mumbai region or the Hyderabad region would be better. So that is one of the thing. Secondly, uh, whenever you're writing down the query, so it's best that you write the more effective query. It's, uh, it's best to, uh, optimize that particular solution. So that is one thing.
So new ways to use the gators. You can use the data actions. You can use the bundler. You can, uh, always have your thing configured that particular workflow while, uh, anyone is, you know, deploying the code, the code chat, uh, you know, means the bundle a bundle should be checked through the get actions. So that, uh, allows you that if the code has been added, then the code would run or not, if there is a problem or not. After that, there there should be manual checks also. So