profile-pic
Vetted Talent

Parul Setia

Vetted Talent

I am a Software Development Engineer and credited with strong ability to solve complex problems with optimal solutions. I like to enhance my skills by implementing and learning.


I believes in making this world a better place to live not only by extensive use of technology but also through act of kindness.


I have knowledge of microservices architecture and worked on frameworks like Springboot, Hibernate.I have extensively worked on JAVA programming language and have understanding of Threads, Synchronization, Serialization, Collections etc.

  • Role

    Staff Software Engineer (SDE 3)

  • Years of Experience

    8 years

Skillsets

  • Elasticsearch
  • Hashicorp Consul
  • Zookeeper
  • SQS
  • SNS
  • S3
  • Redis
  • Prometheus
  • MySQL
  • Mongo DB
  • Lambda
  • Kubernetes
  • Kong
  • Kinesis
  • Kafka
  • Java - 8 Years
  • ECS
  • EC2
  • Docker
  • AWS
  • SQL
  • Spring Boot
  • JavaScript
  • HTML
  • Spring Boot - 7 Years
  • Python - 1 Years
  • Postgres - 6 Years
  • Data Migration
  • Spring

Vetted For

6Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Staff EngineerAI Screening
  • 62%
    icon-arrow-down
  • Skills assessed :CI/CD, Python, Java, Micro services, Spring Boot, System Design
  • Score: 56/90

Professional Summary

8Years
  • Jan, 2022 - Present3 yr 9 months

    Staff Software Engineer (SDE 3)

    Netomi
  • Aug, 2020 - Jan, 20221 yr 5 months

    Senior Software Development Engineer (E2)

    Airtel Africa Digital Labs
  • Jan, 2020 - Jul, 20222 yr 6 months

    Technology Associate

    MakeMytrip
  • Jul, 2016 - Mar, 20192 yr 8 months

    Software Development Engineer (SDE1)

    Calsoft
  • Mar, 2019 - Jan, 2020 10 months

    Software Development Engineer (SDE1)

    Rocket Softwares
  • Jan, 2020 - Jul, 20222 yr 6 months

    Technology Assosciate

    MakeMytrip

Applications & Tools Known

  • icon-tool

    Springboot

  • icon-tool

    Kafka

  • icon-tool

    Redis

  • icon-tool

    Kubernetes

  • icon-tool

    API Gateway

  • icon-tool

    Prometheus

  • icon-tool

    Postgres

  • icon-tool

    Java

  • icon-tool

    MySQL

  • icon-tool

    HTML

  • icon-tool

    Networking

  • icon-tool

    Elasticsearch

  • icon-tool

    Datadog

  • icon-tool

    Grafana

  • icon-tool

    AWS

  • icon-tool

    EC2

  • icon-tool

    S3

  • icon-tool

    SQS

  • icon-tool

    Lambda

  • icon-tool

    SNS

  • icon-tool

    ECS

  • icon-tool

    Redis

  • icon-tool

    Kong

  • icon-tool

    Prometheus

  • icon-tool

    Docker

  • icon-tool

    Kafka

  • icon-tool

    Zookeeper

  • icon-tool

    Microservices

  • icon-tool

    Keycloak

  • icon-tool

    Angular

  • icon-tool

    Node.js

  • icon-tool

    Spring Boot

  • icon-tool

    Tomcat

  • icon-tool

    Swagger

  • icon-tool

    ECS

  • icon-tool

    Redis

  • icon-tool

    Microservices

Work History

8Years

Staff Software Engineer (SDE 3)

Netomi
Jan, 2022 - Present3 yr 9 months
    Implemented Multitenancy with Postgres RLS: Designed and implemented multi-tenancy using Postgres Row Level Security (RLS) within the application, including writing RLS policies and utilizing triggers. This ensured data isolation for different tenants and improved overall security posture. Additionally, migrated conversation history data from MySQL to Postgres without any downtime. Redesigned and implemented new high-availability, low-latency services for analytics,conversation contextual and feedback management, while splitting a legacy monolithic application into three microservices for improved performance, scalability, maintainability, and code clarity. Led data migration activity of around 500 GB from Cassandra to MySQL without any downtime. This involved application level code change. Designed a reusable Integration Framework in Spring Boot to streamline integrations and testing with various third party ticketing systems. This framework achieved an impressive 80% reduction in integration time, enabling faster development cycles and improved efficiency Application Level monitoring by writing AWS Cloudwatch metrics and datadog monitors and dashboard Reduced on-call tickets by 30% by fixing the root cause of recurring issues. Implemented a Rule-Based Engine with Decision Trees: Developed a system to automate decision-making based on user and system events. This approach facilitates the creation of complex logic flows that are clear, maintainable, and adaptable, enabling efficient rule management.

Senior Software Development Engineer (E2)

Airtel Africa Digital Labs
Aug, 2020 - Jan, 20221 yr 5 months
    Led the design and development of a comprehensive Developer Portal, a one-stop shop for Payments API access and experimentation, facilitating API integration and onboarding,enabling Airtel Money to acquire 150+ partners to date. Responsibilities included HLD modifications, LLD design (ER diagrams, Sequence Diagrams, DB Diagrams) Architected and Built User Service from scratch, providing the core backend functionality and data storage for all user interactions.This included: SAML SSO Module with LDAP Integration: Implemented a SAML-based Single Sign-On (SSO) module for seamless organization user access and Integrated LDAP for centralized user management. Multi-Factor Authentication (MFA): Designed and implemented an OAuth-based authentication module with OTP support (Google Authenticator) for enhanced security. Scalable Login System: Developed a flexible login system supporting three methods: User ID/Password (OAuth), OTP, and Shadow Login - where a call center representative can login on behalf of a customer(OAuth + SAML). Spearheaded the development of an initial UI for the Developer Portal, fostering rapid learning and implementation of new technologies within a tight timeframe. Delivered several ad-hoc features across various services, including IP Whitelisting and a Redis-based scheduler, demonstrating adaptability and problem-solving skills Continuous Improvement: Actively contributed to Proof-of-Concepts and implementations (Hashicorp Consul, Consul Replicate, Keycloak) and spearheaded the development of a central configuration management system using Consul and Spring Cloud Config. Wrote Queries on Grafana and Prometheus for application level monitoring. Regularly conducted code reviews and mentored junior developers, fostering a culture of quality code and collaboration within the team.

Technology Associate

MakeMytrip
Jan, 2020 - Jul, 20222 yr 6 months
    Optimized Hotel Data Processing: Implemented innovative filtering strategies in the Offline Tie-Breaking Service, achieving a 25% reduction in processing time. This significantly improved data ingestion efficiency. Enhanced Video Search (COVID-19): Designed and implemented an Online Tie-Breaking Strategy for videos on HotStore, enabling efficient tagging and search for COVID-19 related content. Executed various ad-hoc features in Node.js and Java, including adding hotel and room filters, and an Admin Portal priority feature. Demonstrated strong adaptability and ability to deliver on diverse requirements.

Technology Assosciate

MakeMytrip
Jan, 2020 - Jul, 20222 yr 6 months
    Optimized Hotel Data Processing: Implemented innovative filtering strategies in the Offline Tie-Breaking Service, achieving a 25% reduction in processing time. This significantly improved data ingestion efficiency. Enhanced Video Search (COVID-19): Designed and implemented an Online Tie-Breaking Strategy for videos on HotStore, enabling efficient tagging and search for COVID-19 related content. Executed various ad-hoc features in Node.js and Java, including adding hotel and room filters, and an Admin Portal priority feature. Demonstrated strong adaptability and ability to deliver on diverse requirements.

Software Development Engineer (SDE1)

Rocket Softwares
Mar, 2019 - Jan, 2020 10 months
    Enhanced User Experience: Designed and implemented Vanity URL and RESTful Compliance features based on client requirements, improving user experience and streamlining data access. Improved Server Reliability: Implemented Graceful Shutdown for the Jetty REST server and MVIS Connection Manager, ensuring a smooth application shutdown process based on user-defined timers. Drove best engineering practices by promoting static code analysis, Code Reviews & CI/CD Automation. Promoting unit testing and code coverage checks: Increased unit test coverage to 65%, leading to fewer bugs and higher code quality.

Software Development Engineer (SDE1)

Calsoft
Jul, 2016 - Mar, 20192 yr 8 months
    Veritas Resiliency Platform : Designed and implemented APIs to display comprehensive network information across cloud and VCenter Data Centers (on-premises and remote). This improved network monitoring and troubleshooting capabilities. Developed a reusable validation framework, reducing development time and ensuring data integrity across various services. VeloCloud & VCenter Expertise: Collaborated in an 8-member team to create a VCenter plugin for VeloCloud clients. Additionally, single-handedly implemented the Service Manager Service(microservice), managed the installer, and provided installation and support for ESXi servers and VCenter Server. OpenDayLight (SDN-NFV) Contributions: Actively participated in the OpenDayLight open-source project. Gained deep understanding of its components and implemented a northbound application for OpenFlow switch configuration. Successfully delivered a proof-of-concept (POC) for a southbound plugin and service function chaining using Docker containers and OpenFlow switches.

Achievements

  • Led data migration of 500 GB from Cassandra to MySQL without downtime.
  • Redesigned and implemented new services for analytics and feedback managers.
  • Improved system performance by splitting a large legacy monolithic application into microservices.
  • Developed monitoring metrics and dashboards, and minimized missed tickets during outages.
  • Migrated Elasticsearch to AWS OpenSearch service.
  • Reduced on-call tickets by 30% by addressing recurring issues.
  • Developed Developer Portal at Airtel, onboarded over 100 partners.
  • Implemented Online TieBreaking Strategy and various ad-hoc functionalities at MakeMyTrip.
  • Implemented Multitenancy with Postgres RLS, ensuring data isolation and security.
  • Led data migration of 500 GB from Cassandra to MySQL without any downtime.
  • Reduced on-call tickets by 30% by fixing the root cause of recurring issues.
  • Developed a SAML-based Single Sign-On (SSO) module with LDAP Integration.
  • Second Rank in Intra College Coding Competition which was conducted on HackerEarth
  • Member of Google Developers Group, Chitkara University : As a part of GDG , organised and participated in various technical events.

Major Projects

1Projects

Veritas Resiliency Platform

Jul, 2016 - Mar, 20192 yr 8 months
    Designed and implemented APIs to display comprehensive network information across cloud and VCenter Data Centers, created a reusable validation framework.

Education

  • B.Tech (Computer Science Engineering)

    Chitkara University
  • B.E. in Computer Science and Engineering

    Chitkara University (2016)
  • B.E. in Computer Science and Engineering

    Chitkara University, Punjab (2016)

Certifications

  • Second rank in intra college coding competition which was conducted on hackerearth

  • Member of google developers group, chitkara university

  • Aws specialization courses on udemy

AI-interview Questions & Answers

Hi. So I have basically 8 years of experience currently working into, uh, throughout my career, I've worked on the back end side of things, like, mainly into Java server side. Currently, I'm working with a company called Netomi. It's sent to AI chat domain. Uh, so here I'm working with a team called platform and infra team. Uh, so, basically, what we have built is, like, we built some kind of a orchestrator to orchestrate the state of request. The tech stack I'm working on is, uh, basically, um, Java, Springboard, Kafka, Redis, AWS. Um, in AWS, it is, uh, AWS, SNS, s 3, uh, SQS, ECS, uh, Kafka, CloudWatch, EC 2, IoT. Yeah. These are the main service of the AWS which I work with. Like, the major interest area which I like to work is mainly on microservices and distributed system. Yeah. So this is basically about me. So I currently live in. And, uh, so I have been working, uh, have been living there for past 3, three and a half years. And, yes, I am very excited about the opportunity. Thank you.

I mean, Narrate an instance where you had to leverage both Java and Python to solve. Yeah. So there was a requirement. Though the functionality was the functionality of a feature was being done in Java. But to make it backward compatible feature with the uh, so so mainly, like, there were 2, uh, multiple versions of a feature, like version 1, version 2, and version 3. To make version 2 compatible with version 1 and version 3 compatible with version 2, We needed to have some kind of a database changes database table changes. Uh, so for that, like, what we did, we got some kind of a Python script. So that script, basically, what it does, it it used to make a connection with our database, and then it will change the certain rows in particular DB. And then it will update the rows, and it the only thing the script functionality, which was written in the Python, was to make a connection with DB and update your rows and make it compatible with your version 2, uh, where earlier the it was only compatible with version 1. So that is the experience.

Can you describe how you apply solid principle in a Java based microservice to improve maintainability? So, yeah, so in day to day life as well as whenever there is a new feature requirement, there is active development of features, which is, um, which is required. So to make that feature, uh, the development is more extensible, so we try to use it as far as much as, uh, solid principles and design veterans into it. So how we did it, like, first of all, if it we are dealing with some kind of models, we all the operations related to our models or all the operation related to the model service, uh, they are into one class only. Then the next principle, it suggests, like the first principle was a single responsibility feature. The next is, like, open for modify open for, like, extension and close for modification. So I implemented something called as a strategy pattern where there were different kind of a strategy. So if I want to add a new strategy, I need to only extend only a class and add that strategy would be added and only add one of the possible strategy onto my factory class, which will initiate that particular strategy. Uh, and then, uh, you can you are not allowed to modify your existing any strategy. You can uh, only extend it. So this scope principle is applied where, like, there was a requirement where, um, I, um, so there was a requirement. There was, like, one interface, and then there was a class, uh, parent class. It had, like, multiple methods into it. There was another class of the same type, but it only extended only one type of a class. It did it didn't, uh, in the interface. Like, it was, like, 3 or 4 methods, but only one method the, uh, the child is lost of type to lead it to support. So in this case, like, uh, one approach is, like, to throw implement all the methods and throw kind of a null response. But here, we didn't throw, like, a null response because, um, so, like, what we did we do is, like, rather than throwing a null, we pass some kind of, uh, either custom object or pass some kind of optional response. Or, um, then wherever possible, we also created some kind of interface to support that functionality so that I should not return null as a output. Then, uh, apart from other, like, interface segregation is, like, I try to make all the methods, uh, as a interface first and then the class which is implementing that those method can implement that particular interface. Uh, so this was a brief about interface segregation, about dependency injection. Normally, we are using a spring boot application. So we are auto wiring our dependency at several places in a form of, uh, in the form of a constructor based injection. So this is how dependency injection is being supported.

So what we did is, like, we use a sidecar based pattern design pattern for this. So there was a utility, like, there was a masking based utility. The the the utility feature was to mask the logs mask the logs according to your user user information. Like, for example, the user mobile number or email has had to be masked. So what it is, we created some kind of a sidecar, uh, a utility, uh, and then the internal communication would take place via gRPC. And then Python and, uh, your Java code was bundled into one kind of, uh, package and then was deployed.

Why Python tools and frameworks would you employ for monitoring and logging the frameworks? Would you employ for monitoring and logging the health of a micro? So how we did it now was always to expose some kind of a health checkpoint, and the load balancer, like, pings to that health checkpoint, and then we can know the health of our microservice. Yeah.

In a centralized logging approach for microservice that aggregates login of searchability. Uh, so this can be done via your sidecar pattern. Um, so, basically, so there could be, like, different kinds of, um, um, so there could be a sidecar which is responsible for logging purpose. Uh, like, if you want to create a centralized logging approach, so what we can do is, like, this, uh, Sidecar will push these logs in a sync way to, uh, centralized app, which will then receive, um, in a sync way and then log it. To search the log, like, we can have some kind of a search inverted search based engine such as Elastic, um, where your logs could be indexed based on your service. And moreover, you can enable your text based semantic spec searches.

Sam, in the following Java code, it is intended to lazily initialize an instance of a service. Can you explain what is wrong with this code and what could happen in multiple threads for a quick test ticket service instance? So I think in this instance, the your your so there should be a synchronized block, uh, and then there should be a double lock kind of a check to support, uh, this this is this basically is a singleton pattern where you are lazily initializing your object. So what we can happen add is, like, add one more kind of null check and then add, um, a synchronized block here.

Review the block of a Java code for the restful channel support. They should have might arise from the exception handling as how this could be potentially compromised the web service reports. Yes. When the exception occurs. Okay. So, um, here, like, what you we are doing is, like, we whenever your exception is thrown by your service layer, it will be catching on your controller layer and then internal server is being returned. Okay. It's called the issue that might arise from the exception handling and suggest how this could be potentially compromised to your service robustness and exception. So, basically, we don't know here at which point the exception has occurred, uh, and we are only returning, um, you are we are only catching the exception and returning internal server error. But we are not logging any exception and all, logging any stack trace and all. Uh, so we will not be able to catch our exception, like, what occurred and all. And, also, like, yeah, I think the re one thing is sure, like, we could have recorded like, we could have logged this exception. Yeah. Also, like, there could be, like, different kind of a run time exception which would occur. Then at this is our run time exception. What you are trying is, like, an internal server error. Okay. Yeah. Possibly, like, what I think should there there should be log statement which by which we can know, like, uh, what is the exception.

Device a matter to ensure consistent data across multiple microservice handling persistent data. Device a method to ensure that consistent data across multiple microservices handling, uh, persistent data. 1 is, like, uh, to ensure a consistent data. Like, one thing is, like, use a way, uh, something like as a distributed transactions for it. For example, your saga or, uh, choreography method, which is used. The other is, like so whenever we, um, one of the transaction like, one of thing fails, like, there is a rollback on every step. So this rollback will make sure, like, you are having your consistent data, and your transaction will either get complete or there will be a rollback for, uh, this. So at the end of the distributed transaction, your transaction would be consistent state. The other way is having some kind of a 2 phase commit scenario. So with 2 phase commit scenario is, like, a little difficult to implement and your if your 2 phase commit scenario fails, then your data will be in an inconsistent state. So the better thing is, like, having some kind of a soccer veteran or sync way, which where if your application also failed, um, the data gets stored, which has to be all bad or it has to do transaction in your Kafka. And, eventually, when your application comes up, like, your either your old back or your transition can continue from there. Yeah. Thank you.