profile-pic

Samsul Hoque Choudhury

With over 12 years of experience in various roles, I have developed a versatile skill set that enables me to excel in a wide range of responsibilities. Throughout my career, I have honed my abilities in leadership, communication, problem-solving, and project management. My experience has equipped me with the expertise needed to navigate complex challenges, drive strategic initiatives, and deliver results that exceed expectations. I am passionate about continuous learning and growth, and I am committed to leveraging my skills to make a positive impact in any role I undertake.
  • Role

    Senior Software Engineer

  • Years of Experience

    12.6 years

  • Professional Portfolio

    View here

Skillsets

  • react
  • Load Testing
  • Microservices
  • modular monolith
  • MongoDB
  • MySQL
  • Nodejs
  • OpenAPI
  • PostgreSQL
  • Postman
  • pytest
  • Python
  • RabbitMQ
  • Lambda
  • Redis
  • Restful APIs
  • S3
  • Serverless
  • SNS
  • SQL
  • SQS
  • Swagger
  • TypeScript
  • Vuejs
  • XUnit
  • Entity Framework
  • Angular
  • API Gateway
  • ASP.NET
  • AWS
  • AWS DynamoDB
  • Bitbucket Pipelines
  • C#
  • CI/CD
  • CloudWatch
  • Dapper
  • Djangorest
  • Docker
  • .NET Core
  • Event-Driven Design
  • EventBridge
  • Expressjs
  • FastAPI
  • Flask
  • Git
  • GitHub Actions
  • Integration Testing
  • Java
  • JavaScript
  • Jira

Professional Summary

12.6Years
  • Feb, 2025 - Present1 yr 5 months

    Senior Software Engineer

    Unient India
  • Mar, 2024 - Feb, 2025 11 months

    Senior Software Engineer (Backend)

    Blue Blaze Earth
  • Mar, 2021 - Mar, 20243 yr

    Senior Software Engineer

    rithmXO
  • Jun, 2013 - Jun, 20141 yr

    PHP Web Developer

    Aleoy Software
  • Jun, 2014 - Oct, 20173 yr 4 months

    Senior Full Stack Developer

    Innosolv Consultancy Services
  • Nov, 2017 - Mar, 20213 yr 4 months

    Technical Lead

    Microexcel
  • Sep, 2011 - May, 20131 yr 8 months

    Faculty (Dept Of IT)

    R.K. Degree College

Applications & Tools Known

  • icon-tool

    Visual Studio Code

  • icon-tool

    WampServer

  • icon-tool

    Jira

  • icon-tool

    Postman

  • icon-tool

    Git

  • icon-tool

    Docker

  • icon-tool

    Jenkins

  • icon-tool

    Redis

  • icon-tool

    .NET Framework

  • icon-tool

    FlaskAPI

  • icon-tool

    ExpressJS

  • icon-tool

    MySQL

  • icon-tool

    MSSQL

  • icon-tool

    MongoDB

  • icon-tool

    DynamoDB

  • icon-tool

    PostgreSQL

  • icon-tool

    Redis

  • icon-tool

    GraphQL

  • icon-tool

    Docker Swarm

  • icon-tool

    SVN

  • icon-tool

    ReactJS

Work History

12.6Years

Senior Software Engineer

Unient India
Feb, 2025 - Present1 yr 5 months
    Led the modernization of a logistics platform by refactoring a legacy .NET monolith into a cloud-ready, modular system using C#, .NET 6/8, and Python (Flask), enabling a more scalable and maintainable architecture. Implemented event-driven microservices with serverless patterns, improving API response times by 40% and enabling asynchronous processing for port operations. Delivered SaaS features as part of a product modernization project on AWS using CI/CD pipelines and Docker. Designed PostgreSQL and MySQL schemas and optimized complex queries using indexes, materialized views, and stored procedures, improving data retrieval performance by 25%. Migrated and engineered legacy services to RESTful APIs, replacing SOAP and enabling seamless third-party integrations across the logistics ecosystem. Designed and deployed RESTful APIs and business logic integrating with third-party platforms and legacy infrastructure. Created and documented OpenAPI-compliant (OAS3) API specifications for external and internal service integration. Collaborated with cross-functional teams to gather API requirements and deliver cloud-native backend solutions under tight deadlines. Integrated observability through AWS CloudWatch, DataDog, and custom log parsers in Python, reducing incident response time by 35%. Applied SOLID principles and introduced domain-driven design and clean architecture practices, leading to higher code maintainability and reusability. Adhered to secure coding practices and actively participated in vulnerability reviews and security patching cycles.

Senior Software Engineer (Backend)

Blue Blaze Earth
Mar, 2024 - Feb, 2025 11 months
    Led backend initiatives using Node.js (ExpressJS) to build performant microservices supporting sustainability analytics. Contributed to transitioning backend components from Python/.NET to Node.js for performance-critical modules. Improved backend performance by 35% by migrating critical components to .NET Core and optimizing service orchestration. Delivered backend APIs using Node.js and FastAPI, orchestrating integrations with external APIs to ingest and normalize sustainability data. Containerized services using Docker, streamlining development, testing, and deployment across environments. Implemented event-driven workflows using AWS Lambda and EventBridge, supporting real-time processing and decoupled service interactions. Built and deployed RESTful APIs and asynchronous queues to deliver sustainability insights and carbon tracking tools for enterprise clients. Maintained a clean and well-documented codebase, applying best practices in modularization, testing, and fault tolerance. Tuned PostgreSQL queries and schema designs to optimize performance in high-volume data environments. Collaborated on frontend integration using React, ensuring clean API contracts and supporting seamless UI workflows without owning full-stack responsibilities. Participated in backend incident handling and resolution, applying structured testing and root cause analysis before raising PRs. Designed optimized PostgreSQL schemas for handling complex geospatial and carbon footprint data. Conducted internal API design reviews and ensured secure, performant endpoints for internal and partner-facing systems.

Senior Software Engineer

rithmXO
Mar, 2021 - Mar, 20243 yr
    Led backend architecture discussions and implementation for a greenfield microservices project using C#.NET, Node.js and TypeScript hosted on AWS. Built backend services using Node.js and TypeScript for a multi-tenant SaaS platform; ensured extensibility and multi-region support. Built custom internal tools and client-specific applications, accelerating delivery of bespoke solutions. Wrote unit and integration tests, ensuring stable and bug-free deployments. Designed scalable MySQL schemas and implemented query optimization for latency-sensitive endpoints. Participated in frontend integration using Angular, ensuring smooth interaction between the UI and backend APIs without being involved in extensive UI logic. Performed code reviews and mentored junior developers, improving team efficiency and knowledge sharing. Led a team of 5 engineers, set engineering best practices, and facilitated sprint planning. Drove backend code quality through debugging, and detailed documentation processes. Acted as the go-to person for architectural decisions and backend design discussions. Interfaced with stakeholders to gather requirements and ensure product alignment with business needs. Ensured compatibility with North American timezone coordination by operating in distributed agile teams across regions. Created and maintained modular backend services with RESTful API endpoints using Flask and SQLAlchemy. Optimized database operations for PostgreSQL with custom indexing and performance profiling techniques. Collaborated in security audits and incorporated threat mitigation practices during service design and deployment. Created monitoring tools using Java and upgraded previous tools versions and did code refactoring.

Technical Lead

Microexcel
Nov, 2017 - Mar, 20213 yr 4 months
    Owned architecture and low-level design for healthcare-focused custom software projects from the ground up. Led legacy-to-modern application migration, including full-stack redesign and data migration. Developed RESTful APIs and backend services adhering to SOLID principles and design patterns. Integrated SAP APIs with CRM systems, automating key support operations. Built and integrated frontend applications using Angular and VueJS frontends with backend APIs to deliver responsive, modular user interfaces tailored for healthcare workflows. Built internal business tools to streamline workflows and data reporting. Mentored junior developers and conducted regular code reviews for continuous codebase improvement.

Senior Full Stack Developer

Innosolv Consultancy Services
Jun, 2014 - Oct, 20173 yr 4 months
    Owned architecture and low-level design for healthcare-focused custom software projects from the ground up. Led legacy-to-modern application migration, including full-stack redesign and data migration. Developed RESTful APIs and backend services adhering to SOLID principles and design patterns. Integrated SAP APIs with CRM systems, automating key support operations. Built internal business tools to streamline workflows and data reporting. Mentored junior developers and conducted regular code reviews for continuous codebase improvement.

PHP Web Developer

Aleoy Software
Jun, 2013 - Jun, 20141 yr
    Developed product features post-training in web frameworks and AWS environments. Wrote unit tests with PHPUnit and integration tests using Selenium. Handled deployment of features to EC2 via FileZilla. Created documentation to support maintainability and team onboarding.

Faculty (Dept Of IT)

R.K. Degree College
Sep, 2011 - May, 20131 yr 8 months
    Taught BCA and MCA students, conducting lectures, labs, and project mentorship. Facilitated curriculum development and organized technical seminars to foster innovation. Guided final semester projects and served as exam invigilator, maintaining academic integrity.

Testimonial

rithmXO

Andrés Sánchez

I have worked with Sammsul in the recent past and I can only recommend him as the great developer, leader and colleague he is. He was always supportive and helpful, bringing new useful ideas to the team but being also open to embrace new ones from other co-workers.

March 27, 2024, Andrs worked with Sammsul Hoque on the same team

rithmXO

Dave Watson

I have had the pleasure of working with Sam for 5 years now. We have worked together on applications of varying sizes and complexity. Sam is full of great ideas and not afraid to share them. Sam is driven and always willing to take on the hard tasks. When given a task, Sam can be trusted to get the job done in a timely manner. On top of being a hard worker, Sam has been an excellent mentor to me and to the other members of the team. I would recommend Sam to anyone looking for a trustworthy, hardworking individual.

March 21, 2024, Dave was senior to Sammsul Hoque

rithmXO

Jeff Stockett

I have had the pleasure of working with Sam on mutliple projects at multiple companies. I have always been impressed with Sam's problem solving skills. He is someone who is not afraid to jump in and make things happen. I've seen him come up with elegant and efficient solutions in a number of languages and technologies. I've seen him solve problems and build features across the full stack. Whether it's front end, API, data layer, you name it, he has the skills to get the features across the finish line. It's been an honor to work with Sam and I hope I have the opportunity to work with him again in future endeavors.

March 19, 2024, Jeff managed Sammsul Hoque directly

Major Projects

12Projects

Kompass 2.0

Innosolv Consultancy Services Pvt. Ltd.
    An online portal used internally by client to manage their process of candidate verification.

Logistics

Innosolv Consultancy Services Pvt. Ltd.
    An online portal where the client manages the business operations and can also track the packages/fleets to ensure that their business runs smoothly.

Impact Index

Innosolv Consultancy Services Pvt Ltd
    An online portal that generates reports to be used by Analysts for various data analysis. It is designed to calculate metrics for players performance in the game of Cricket.

Aleoy

Aleoy Software Pvt. Ltd.
    Developed for real estate agencies to showcase properties and services, this project included a module for scraping content from other real estate websites. I designed tables, relations, and implemented MVC structure, writing test scripts. Regular code refactoring preceded merging and deployment to the UAT server, ensuring robust functionality.

Global Trip Manager

Microexcel Inc
    An online portal used by client to cater services for customers who opt for chartered flights in the Middle East and Europe.

BlueBlaze.Earth

BlueBlaze.Earth
    A SaaS platform which provides methods for sourcing ESG data, calculating emissions, managing emissions targets, connecting to carbon offset markets, producing corporate and regulatory reports, offering ESG insights for investments, performing risk modeling, and ensuring compliance with regulatory obligations.

1-STOP

    Provides suite of online SaaS products for the shipping industry which handles booking, tracking, invoicing, billing, and other commercial operations for the clients.

ORION(Freeus)

    A SaaS platform which provides dealers with tools to manage customer devices, view key metrics, and access marketing materials, thereby supporting business operations and enhancing customer service.

iDINE

    A POS application which is widely used in restaurants in major cities to take bookings, reservations, restaurant management, inventory and personnel management.

rithmXO

    A SaaS platform to enhance business operations. Their expertise includes M&A services for seamless transitions, IT infrastructure design, fractional CTO services for strategic leadership, integration solutions to automate processes, and collaboration services to improve communication.

Rithm

RithmXO Software
Jan, 2021 - Mar, 20243 yr 2 months

    Project Details-

    As a leading SaaS product, revolutionizes business orchestration with its microservices architecture, optimizing operations and project management efficiency for organizations.

    Responsibilities:

    • I participated in creating the system design for the product.
    • Wrote code for the backend services which was implemented using event-driven microservices architecture.
    • Did code review for other developers
    • Created two internal tools for automating the process of the company's evaluation.
    • Tech Stack - C#, .NET, ExpressJS, MySQL, MSSQL, MongoDB, Docker, AWS, ReactJS, Event Store, Microservices (Event Driven)

1-Click Cure

Microexcel Inc.
Dec, 2017 - May, 20191 yr 5 months

    Project Details:

    The web app unifies patients and doctors, enabling patient registration, family member addition, and document uploads.

    Patients request consultations online/offline, search for doctors via name, specialty, or location, and make online payments.

    Prescriptions are stored in patient profiles. Doctors manage consultation requests and access previous prescriptions, utilizing patient intake forms.

    Responsibilities:

    • Participated in creating the architecture for the application.
    • Wrote both frontend and backend code for the application.
    • Interacted with clients to take their requirements and delivered them the application in phased manner by deploying the application in their cloud space.
    • Tech Stack: C#, .NET 4.5, AWS, VueJS

Education

  • Masters degree, Computer Science

    Assam University, Silchar (2011)
  • Bachelors degree, Computer Science

    Assam University, Silchar (2009)

Interests

  • Travelling
  • Reading
  • Photography
  • Cooking
  • AI-interview Questions & Answers

    Samsula Chaudhry. I have done my graduation and post-graduation in computer science. And after that, I did teaching for almost 2 years in a college where I should teach graduate and post-graduate students. After that, I came to Bangalore. I look at it here, and then I started working with a start-up, which I do real estate. And I got my initial days of training into web development, testing, AWS infrastructure, and all those necessary elements that are required for development. So I worked there for 1 year. The company got closed, unfortunately, and then I moved to a consultancy where I was working on product as well as projects. And then I had the opportunity to work on different kinds of projects, which helped me gain more technical skills to learn about different technologies, like.NET and all. I was working with PHP, then I also learned.NET. And then towards the end, I started learning Node.js using Express. So that was a thing. And then I started working with Microsoft. And since 2017, I've been working at Microsoft. And since then, I've been working remotely. After that, whatever companies I've joined, I've been working remotely with them. So I used to collaborate with teams who are based out of the United States or the UK, and they're in different places. So I used to collaborate with them. Initially, I used to work in their time zone. And then later on, I started working in my time zone so they could collaborate better. But during all this process, I also learned a couple of more technologies using Python and all. So gradually, I started focusing my shift towards back-end mostly because I want to expand my knowledge and my expertise more towards back-end than front-end. But it doesn't mean that I'm not interested in front-end or working with them. I'm familiar with Angular. Last time I worked with Angular 6, and then I worked with Vue. And then recently, I've worked with React. Just 6 months back, I worked on React. I've used MySQL, MSSQL, MongoDB with my current project. I'm working with AWS DynamoDB as well and PostgreSQL. Apart from that, I have experience in microservices architecture, in serverless architecture as well. I've participated in different kinds of client interactions also along with designing the application from scratch. That also experience I have, especially with SaaS products. So with my previous experience with my previous employer, I've built a whole SaaS product along with 7 different engineers from scratch. The whole architecture was laid out, and there were a couple of iterations to evolve the whole thing. And then we built the whole thing with.NET and then a couple of modules in Python as well. Right now, my main motivation is to be with a company where I can stay for a very long time, be a part of the team where I can be for a very long time, and grow with them personally as well as professionally. So that's the main motivation behind it. Apart from that, I have an interest in learning new things, and I'm learning AI, ML, and blockchain. So that will also add more skill sets to my profile, and I may help in a better way, proposing better solutions in the future. Thank you.

    I have not exactly worked on the Genkis' automation process, but one thing I can tell you is that if there's any kind of project, whether it's in TypeScript, Python, or.NET, it doesn't matter. First of all, we have to create a Docker container, which will encapsulate the whole project and all its dependencies. So we will create a Docker image. We'll create a Docker image, and that will encapsulate the whole project, including its dependencies, into one single place. And then we will create all the dependencies, like databases and internal networking and other stuff, volumes and all, into that Docker Compose file. And once these changes are deployed into CICD, we can create a CICD pipeline, which would pull the latest changes, implement this Docker container, run the tests, and validate everything. Once it's validated, then we are going to publish it using Jenkins to the respective servers. Jenkins can help act as a mediator to see what has changed, if any actions have been triggered or not. So Jenkins takes care of all these things. So, basically, I rely on the CICD workflow pipelines, and Jenkins acts as a mediator or orchestrates to take all these charges and make metrics. I can do things manually on the Jenkins application, but I don't remember exactly how to automate that using a step or something like that. Thank you.

    So there are a couple of dimensions that need to be covered when you're talking about security, any restful APIs, not only about Proteus. First of all, we have to understand that any restful API is going to access some kind of resource in the back end. It could be data files or it could be talking to any cloud resources over there. So we had to be very specific about what that particular API is meant for and what versioning we are going to follow so that in future, we can implement all the security measures for all the different versions over there. Apart from that, we have to make sure it should be always communicated over any kind of secure layer like SSL and all. So that gives more security if you are communicating with the restful APIs or HTTPS rather than HTTP. For development purposes, fine. But for manual production, HTTPS is the core thing that you should be doing first. And then there should be authentication and authorization. The authentication can be done in any way. You can use both. You will go for JWT authentication. There are numerous ways that can be done over there. And then we can have that put in over there into some API gateway or double load balances where you can implement that one. Then we can add the authorization process based on the role-based access, whether the particular call is being made or not. And then we can also implement some rate limiting and rate throttling as well. Otherwise, there'll be bottleneck. There'll be charts of videos over there. So we should avoid that by implementing the rate limiting or rate throttling. So that also gives them more added security over there. And whatever data we are fetching, we should not be open to returning every data. We should be very specific to what access we are giving to the resource we are accessing, or what intent, and what are the different filters, and what kind of data we are trying to fetch from there. So all these things make the data as well as the restful API more secure, that we are not exposing anything unnecessary to the outside world. And, also, we need to implement the cost policy, because it's also very important. If you know very particularly that this particular API is going to be accessed from certain domain, then we should be incorporating that into our cost policy in the back end. And anything that is not done from that identified resource from the front end or any other source, that should not be entertained. So these are a couple of things that we can do to make sure that the APIs are very secure and they are working smoothly whenever we are trying to interact with them from any either mobile application or from the front end application. Thank you.

    When you're talking about sessions, there are different things we can do. One is we can use cookies. Cookies can be stored over there. Cookies can tell us about what the sessions are all about. Then we can use JWT. In JWT, when we're implementing, we can have refresh tokens. Apart from access tokens, we can have refresh tokens. So access tokens allow you to access that resource at that particular API, with certain limitations between which you can access that particular resource. So refresh tokens are also used by the front end to see whether the session can be there or not. And if that particular timeline is over, it again costs a new fresh access token, and the back end will renew that whole access token once again for the next interval of time. And this different token is stored in the database in the back end, or you can store it in Redis or any other caching mechanism also to make it much faster. Based on that whole behavior, we can store if since we are storing it somewhere, we always have the option to kick out that session from that particular storage either from Redis or database, whatever is your preference. And that really helps us. But the main thing is there are certain constraints out there which we need to always keep in mind. Since we are storing it somewhere either in Redis, it's much faster. But again, if there is one Redis instance where every session is being stored, then that becomes a bottleneck. And if there are multiple instances, then that improves the whole performance. But then there is some kind of turnaround time, which becomes very slow, which may reduce it to certain microseconds. That would be a difficult issue. So it depends on what is the size of the project and what kind of interaction we're talking about, how much traffic will get, and how frequently the sessions will be in change, how will they be managed, how long they will persist. All these are various factors that are used to keep in mind while designing the sessions for a particular application. In my previous project, as well as my recent project, we are using a single instance which keeps track of all the sessions, all the JWT sessions over there. So we have a key-value pair. The key is basically the refresh token, and the value is the access token. So and we have this in such a way that whenever there is a refresh token that gets expired, it again goes back to the back end. It requests this process, which updates the refresh token and access token and sends back the access token and updates the cache also. And next time onwards, you keep checking from the cache rather than coming to the back end. Thank you.

    Okay, so this is a very, you know, the name is hotfixes. Well, the issue is also with hotfix. So, basically, we create individual tasks for each of the features as well as, you know, for the bugs and fixes that we are doing over there. So, ideally, the practice that I follow is to have the fee to first mention the environment, in-depth UAT or production, then hyphen and then the ticket number over there, and then hyphen, and then I give a description for that one. So that helps us to, you know, do the things parallelly as well as since there are different tickets allotted to different issues. Even if there's a parallel feature going on, that will have a separate ticket for that one in Jira. And then for the hotfix also, this over there. So, whenever it's a hotfix over there, it's in a rich production environment, and we mark it and also mentioned that in the tag and also in Git when we create a pull request, there are certain labels over there, which give us the priority. So, whoever is the reviewer of that branch, he will know based on the level that this is on high priority. And based on that, they will review. Even I do the code review. Sometimes I do peer review as well. So, based on the level, I check first what's the priority. If it's a high priority, and that goes into the review first. If it's a normal priority or if it's a low priority, then I take it accordingly. So, usually, that's the whole structure: the environment name, the ticket name, and the branch name. If there's a hot fix, then that is marked towards the end with the capitalized saying that it's a fix or a bug or a hot fix over there. Thank you.

    Okay. So when we're talking about tight deadlines, we have to first be very sure that what a tight deadline means, whether it's a day or hours over there. Sometimes it's days. So, basically, what we do is practice test-driven development. So, what happens with test-driven development is that related to the feature or the bug that we're fixing, I write the test first. So that covers the main aspect of the whole feature over there. Then, based on what changes I made, what refactoring I did, whatever the new methods I might have created, I add a few more tests. Those are secondary testing elements over there. I know that reduces the coverage of the code if it goes into production without those tests, but I think that can always be improvised. However, the tests written in the context of the feature are non-negotiable. So, that's why I write the test first in test-driven development. And then I write the feature according to the tests that I have written. Since my tests cover all the aspects of the scenarios of the requirement, there's no loophole, and there's no mistake over there. That also gives me an advantage, even though the deadline isn't near, then I'm not missing on the crucial aspects of that whole development, that the feature and its functionalities and their respective tests are already there. The refactoring, after the refactoring, I might have created a few more functions. And if that misses out in order to meet my deadline, that's absolutely okay because I feel that can be taken up in the next release or the next cycle as well. I can make a note of it, and I can do it later, but that's not going to be a very important one in terms of the feature that I'm developing. Always the priorities related to the feature functionality and its testing over there are met in the first place. So, there's nothing like that can go wrong in that one. And definitely, code coverage is always there. So, I keep on checking my code coverage every 15 days to make sure that it is somewhere around 75 to 78, 80%, depending on what the standard that the whole team is following. My personal standard is that it should always be 80% or less. If it goes beyond that one, that is something that we have already missed, and that needs to be addressed in the retrospective meeting. Thank you.

    It clearly shows that we are first fetching all the users, and then we are trying to find in that collection. So instead of doing that, we can do something like find by ID and pass the specific ID to return that exact data that you're looking for instead of searching the whole dataset once again. What has been written. So, first of all, the line where we are doing await user dot find is giving us all the data. I don't know how many calls will be there, 100,000, 10000. And record all the reports. So let's start from the database. And then once it's there, then we are like trying to go find method over there, which will again iterate to all the list over in the dataset that has been returned in the previous line. So these two will become the bottleneck. So the best way is to index is to create an index to the ID field. If it's not there, then they should be created. And since it is created over there, if it's already there, then if you're doing the find by ID and we pass the ID over there, then if you return that specific record that we are in you know, having that we're interested in, basically. And definitely, it is the whole turnaround time as well as this bottleneck will also go away.

    So what can you see over here? Like, you know, this will capture just a general exception. If something goes wrong by touching the resource, then that will catch the whole thing. But we are not checking what the response code is from that particular API, which is very much important. We should always console or we should always return data if the status code is acceptable. It was 200, 201, 202, whatever it is, we decide at the time of designing the API contract or how the whole functionality is going to be. And then if there's something else, like 400 and then, 500, could be anything. Anything other than 200 should give a proper error message. And then if you want to handle it in such a way that it should always go to the catch part, then if you encounter a status code other than 200, you can always throw that and the catch will receive it over there. So, yeah, I think that should handle everything over there. And, yeah, I think they should be.

    Now I'm not very sure about cloud native Node JS application. I've never handled that kind of thing, but just trying to understand the whole problem is that there are hundreds of failure scenarios. So this comes to when we are talking about how we design the whole system over there. So if I take it from that perspective, not taking it in terms of specific cloud printing, just an application. I'm just giving you a rough idea based on my understanding: all the failure scenarios are already listed when we design the whole system so that we know how to deal with them. Maybe that's a failure with data consistency. Maybe it's a failure of data availability. We can create replicas. We can create multiple instances. We can scale them all the time. So that's already in place. In terms of unpredictable failure scenarios, we're talking about availability. We should always make sure that there are more than one instances running of whatever application we're talking about. If it's going to be only a single instance, then whenever there's a high network traffic or high load, that prediction may not address that one. So there's one more thing that can happen. We can always scale horizontally. At least have at least three instances when there's a scenario. There's a possibility that our applications will be hosted in such an environment and we're exposing it to high traffic. So in that case, we can be ready, be cautious about the whole scenario, and have a few more resources already running. And that can be done by Kubernetes and load balancer with AWS and all those. So I think these are the general measures that can be used for handling general scenarios. Apart from that, all the predictable scenarios mean we are already aware of the exceptions and other errors that might happen, and that can break the solution and take it down. So that should be done in a very graceful way. I'm not saying they should take it down in a graceful way. I'm saying that they should handle the errors and exceptions gracefully rather than exiting the whole application. So that should never happen. In terms of predictable and unpredictable scenarios, something goes wrong, so there should be one more instance that's running, and that should always make sure that the application is available. Now in both scenarios, one of the key aspects is that we should have logs. Without logs, we cannot tell what went wrong. Even if we have already listed every scenario and error and everything, and even if it fails, logs are the go-to place where we can go and check what went wrong and how we can mitigate that immediately. So that can be done in many ways. There are different levels of logging and different types of logging. So that's up to how we design the system and what kind of measures we are taking to ensure this logging is happening without failure. So, yeah, that's how I would like to handle this whole problem scenario.

    So when you're talking about middleware, we are trying to basically delegate a couple of redundant tasks or some things that are done by other processes separately. And once that is done correctly, we are actually trying to give access to the back-end resource to any particular API and the microservice. So, basically, what middleware can really help us is part of authentication, authorization, which I've already explained in previous questions. So all the middleware stuff, authentication, authorization, security, caching can go into the middleware level where the general things and the redundant things can be handled. That does not have to be very specific to any particular service or any particular resource in the back end. So these are general elements that have to happen at every interaction. So that's why we always keep implementing one or two in the middleware and all the error handling, all the different scenarios, like what one or two will respond from over there because we are trying to integrate a couple of other third-party elements over there. Like, it could be Google. It could be LinkedIn. It could be Facebook. It could be anything. So they have their own signature. They have their own request-response cycle over there. They have their own status code. They have their own response methods. The response structure, not method, they have their own response structure over there. So based on the integration that we're doing, we can do all these things into middleware. That also ensures that tomorrow if you're able to change anything or you want to introduce or remove anything, that will be done in that one single place rather than going into all other services or microservices or whatever back-end resources we have to or whatever servers we are running in the back end. So they will remain unaffected, and all the security-level things are being handled in the middleware. So the changes pertaining to that will always remain at one place. So one change, one place, and that reduces the complexity of being in the middleware. And that also ensures that whatever changes are being done are being followed by all other services, they are following the same thing that will go through that part. Thank you.

    How do you see the security server? Payment system integrations. I have no practical knowledge of payment system integrations over there. I have done integrations with ERP APIs, specifically SAP APIs. So I can tell you in terms of that. I'm not sure how much that is applicable in terms of payment integration because payments are a totally different domain. But based on my experience with integrating with SAP APIs, the thing is that we have to first understand the documentation, go through that and see what the request and response architecture is, what contracts they have given, what are the limitations they have given in terms of request patterns and the response structure over there. And based on that, we can define our own APIs, because we cannot go beyond the scope of their API design that they have given. Whatever they're exposing will keep us within that boundary only. So based on the documentation and understanding and what they have designed already and what was in place, we can write our own APIs according to that. We can have our own level of security, which is obviously very much feasible. But then you have to also adhere to and comply with the security measures that the third party has given. I believe these are common lendees that we can follow in terms of any third-party integration, be it payment, be it SAP, or be it some other application. I think that also applies here as well. Now, payment integration can have a few more things because there are moderate transactions involved and a couple of very fast transactions involved over there. So that can go to different levels over there. So again, you have to check the whole application, how it works. Based on that, I can go through that and maybe in the near future, I can give you a better answer for this one. Thank you.