Name: Sam B
Email ID: ***********@*****.***
Professional Summary:
Proficient Java Developer adept at creating and maintaining high-performance Java applications with over seven years of experience. Skilled in Java EE technologies, Spring Framework and ORM frameworks.
Experienced in working with Integrated Development Environments (IDEs). Able to leverage the full suite of features provided by these IDEs for efficient code editing, debugging, version control integration and project management.
Hands-on experience developing RESTful APIs using Java. Involving designing and implementing API endpoints following the REST architectural principles, including resource identification, representation, statelessness, and uniform interface constraints.
Knowledge in Software Development Life Cycle (SDLC) which outlines the process for building software, from planning and requirements gathering to deployment and maintenance.
Experience in using React within Java-based environments. This includes integrating React components with Java back-end services and setting up robust front-end applications with React.
Proficient in orchestrating CI/CD workflows through Jenkins, demonstrating a deep understanding of its capabilities to streamline development processes, automate testing procedures and facilitate smooth application deployments.
Experience with AWS working with key services like Lambda, S3 and EC2. Expertise includes creating server less applications, data storage solutions and automating infrastructure management. Also utilized AWS SDKs to interact with cloud resources and develop scalable applications.
Proficient in containerizing Java applications using Docker, managing container images and instances and orchestrating multi-container deployments.
Significant knowledge in leveraging Kubernetes within Java-based development environments. Including a thorough understanding of Kubernetes' fundamental concepts, such as pods, deployments, services and ingress resources and their integration with Java applications.
Utilized MongoDB as a NoSQL database solution to store and manage data in a flexible, document-oriented format. Leveraging Java libraries such as the MongoDB Java Driver, implemented functionalities to interact with MongoDB databases programmatically.
Actively incorporated and leveraged Java libraries to address specific functionalities and requirements across different domains. For instance, employed libraries such as Apache Commons and Guava for handling common tasks like string manipulation, collections management and concurrency handling.
Experienced in working with Agile methodologies within Java development projects. This entails actively participating in Agile ceremonies such as sprint planning, daily stand-ups, sprint reviews and retrospectives.
Work Experience
Senior Java Developer, MasterCard
April 2022-Present
Project Description:
Utilized React to create dynamic and interactive user interfaces in the digital payment platform. SpringBoot, a widely-used Java framework, expedited the development of backend services with features like dependency injection and MVC architecture. Apache Kafka facilitated real-time communication between system components. MongoDB, aided by MongoDB Stitch, oversaw database management. For efficient system management, Docker and Kubernetes handled orchestration and containerization. Jenkins conducted automated tests, including unit tests and integration tests, on the Java codebase after each build. This process helped in early detection of bugs and regressions, ensuring the payment system's reliability and stability. Jenkins facilitated the automated deployment of Java applications to various environments (e.g. development, testing and production) as part of a CD pipeline.
Responsibilities:
Engaged JavaScript's asynchronous capabilities for making AJAX (Asynchronous JavaScript and XML) requests to the backend server to perform various tasks such as fetching payment details, processing transactions and updating UI elements without requiring a page refresh.
Performed client-side validation of payment form inputs through JavaScript, ensuring that users provide correct and properly formatted information before submitting payment requests. Validation rules included checking for valid email addresses, credit card numbers, expiration dates and CVV codes.
Created dynamic and responsive user interfaces for digital payment platforms worked on ReactJS. Components were composed and updated based on user interactions, providing a seamless experience. Features like payment forms, transaction history displays and interactive dashboards were implemented using React components.
Implemented SDLC for the platform which involved planning the platform's features and security requirements, designing the architecture to ensure scalability and resilience, and implementing the code for transaction processing and user authentication.
Utilized virtual DOM of React for efficient rendering of UI components by minimizing DOM manipulation and optimizing updates. Integrated with Java backend technology SpringBoot to build a full-stack web application.
Leveraged Amazon Web Services (AWS) to power the digital payment platform. The integration ensured high scalability, reliability, and security for online transactions. This setup enabled efficient processing and handling of payment data.
Development of RESTful APIs for handling payment transactions, user authentication and other backend functionalities was executed through Springboot. Controllers were created to define endpoints for processing payment requests, retrieving transaction history and managing user accounts.
Employed Kafka that played a central role in handling real-time payment transactions. Payment events, including transaction requests, authorizations and confirmations, were sent to Kafka topics via payment gateways and client applications.
Utilized MongoDB in the payment platforms developed in Java to store and manage various aspects of payment-related data. Its document-based data model allowed to store payment-related data in a flexible and schema-less manner.
Java-based micro services, backend services and other components of the digital platform were containerized using Docker, ensuring consistency across different environments and simplifying the deployment process. Docker allowed packaging Java applications and their dependencies into lightweight, portable containers.
Used Kubernetes to automate the deployment, scaling and management of containerized applications, providing a robust platform for running Java-based services. Kubernetes abstracted away the underlying infrastructure, allowing developers to focus on defining application requirements and letting Kubernetes handle resource allocation, load balancing and failover.
It managed application configuration and secrets using ConfigMaps and Secrets, which allowed Java applications to access configuration parameters, database credentials and other sensitive information securely.
Automation of the process of integrating code changes from multiple developers into a shared repository was achieved through Jenkins. Test suites, including unit tests, integration tests and end-to-end tests, were executed automatically as part of the build process, ensuring code correctness and reliability before deployment.
Implemented Agile methodologies in the development of the payment system using Java greatly enhanced the efficiency, adaptability and collaboration within the development team. Worked on implementing specific features and user stories during each sprint, ensuring continuous progress and feedback.
Java Developer, Electronic Arts
Feb 2019- April 2022
Project Description:
The task was to provide a solid server backend for a game. Developing a scalable, high-performance server infrastructure that could handle thousands of players at once, handle in-game interactions in real time and guarantee a seamless user experience was the aim of this project. The high-performance, event-driven structure of Netty drove the networking layer of the server. For game servers and clients, Protobuf enabled effective communication methods. Essential data such as leaderboard scores and session information was cached via Redis. Player profiles and match histories were among the game-related data that PostgreSQL handled. Using user session tokens, JWT provided safe authentication. Real-time communication and job management between game servers were made possible via RabbitMQ. HAProxy's scalability was achieved by balancing player connections among server instances. For consistency, the game server was containerized using Docker.
Responsibilities:
Leveraged Netty's codec framework to serialize and de-serialize game data using protocols like Protobuf and JSON. It facilitated the creation of custom protocols, crucial for establishing efficient communication between game clients and servers.
Worked with Protobuf that offered a condensed binary format for serializing structured data, effectively minimizing message size during network transmission. This optimization played a pivotal role in curbing bandwidth usage and enhancing network performance within multiplayer gaming settings.
Utilized Redis as a swift and dependable in-memory data repository, enabling rapid retrieval of commonly accessed game data. This proved especially advantageous in gaming scenarios where minimizing latency is essential for ensuring seamless user interaction. Redis effectively cached frequently requested information like player profiles, leaderboard standings, and game assets.
Worked with PostgreSQL to efficiently store structured game data, ensuring reliability and data integrity for essential information like player profiles, inventory items, and game levels. Leveraged its scalability features, including partitioning, replication, and clustering, to accommodate growing data volumes and user loads as the gaming project expanded.
Utilized SDLC to design game mechanics, create assets, code the game and conduct iterative testing to ensure quality and playability. Deploy the game to target platforms, gather user feedback and provide updates, bug fixes and additional content to keep players engaged.
Used PostgreSQL's extensibility allowed to enhance its functionality with extensions and plugins. This flexibility enabled the integration of specialized features tailored to the specific requirements of the gaming project.
Upon successful player authentication, JWTs were generated containing player ID, roles and permissions. Subsequent player requests to the server included these JWTs in the authorization header. The server authenticated the JWTs to confirm their legitimacy and extracted player information and permissions. Actions were then authorized and denied based on the JWT contents.
Engaged RabbitMQ to facilitate instantaneous messaging across various segments of the gaming platform, including game servers, matchmaking services, chat systems and analytics engines. It supported asynchronous communication, enabling components to exchange messages without necessitating immediate responses.
Used AWS to power the gaming system project, providing scalable infrastructure and cloud-based resources. This enabled efficient management of backend services and online game features. Leveraged AWS tools to ensure performance, reliability, and security throughout the project.
Worked with Springboot to provide RESTful API endpoints, allowing seamless communication between game clients and servers, and supported WebSockets for real-time interactions. Its micro services architecture facilitated modular game services, aiding in scalability and flexibility for complex gaming projects.
Implemented HAProxy for the distribution of incoming player connections evenly across multiple game server instances, ensuring that no single server is overwhelmed with requests. It utilized various load balancing algorithms, such as round-robin, to optimize resource utilization and improve overall system performance.
For the packaging of game server applications and their dependencies into lightweight, portable containers Docker was enabled. Each container encapsulated the game server, along with any necessary libraries, dependencies and configuration files, ensuring consistency across different environments.
Employed Jenkins to define build and deployment pipelines as code using Jenkinsfile, enabling versioning, code review and easier maintenance of pipeline configurations. Pipeline as code ensured consistency and repeatability in the CI/CD process.
Worked on Kubernetes which served as a platform for automating the deployment, scaling and management of containerized applications, including game server instances. It abstracted the underlying infrastructure and offered functionalities such as automatic load balancing, service discovery and self-healing, guaranteeing the high availability and reliability of game services.
Implemented Agile practices in the project which involved iterative development, quick adaptation to changes, and close team collaboration. The Agile framework helped streamline workflows and improve project outcomes.
Java Developer, Walmart
May 2017- Feb 2019
Responsibilities:
Employed JavaScript to develop dynamic and interactive user interfaces for the inventory management system, incorporating functionalities like dropdown menus, date pickers and modal dialogs for adding and editing inventory items. It facilitated client-side validation of user inputs, enhancing data integrity and minimizing errors in the inventory database.
Utilized Chart.js JavaScript library to generate visual depictions of inventory data, including bar charts, pie charts and line graphs. JavaScript's AJAX capabilities were harnessed for asynchronous tasks, like retrieving inventory data from the server without necessitating a full page reload.
Utilized Micronaut in the inventory system which facilitated the creation of a scalable, responsive and easily maintainable solution, catering to the dynamic requirements of businesses and users.
Engaged SDLC for the system which involved defining requirements, designing the system's architecture, coding the core functionalities and conducting thorough testing to ensure reliability. Also supported the system post-launch, providing maintenance, updates and troubleshooting as needed.
Worked with Apache Cassandra which enabled horizontal scalability within the inventory management system, empowering it to manage expansive data volumes and adapt to evolving demands. With the system's capacity to effortlessly integrate new nodes into the Cassandra cluster as inventory data expanded, scalability was achieved seamlessly without interruptions.
Incorporation of a WebSocket API into the Java-based inventory management system facilitated enhanced real-time communication, offering interactive functionalities for users. This enabled bi-directional, low-latency communication between the client (browser) and server.
Developed the management system on AWS, utilizing its cloud services for storage and data processing. Implemented scalable solutions to handle varying inventory demands efficiently. Applied AWS best practices for security and reliability in the system's design.
Configured Jenkins to integrate alterations in the systems codebase. It automated the compilation of source code, packaging of applications and building of codebase. This optimized the development workflow and maintained uniform build processes.
Engaged Jenkins that allowed to define build and deployment pipelines as code using Jenkins file. This allowed for versioning, code review, and easier maintenance of pipeline configurations.
Packaged the inventory management system and its dependencies into lightweight, portable containers through Docker. Defined Dockerfiles to specify the environment and dependencies required for running the Java application.
Provided Kubernetes for auto-scaling and self-healing, ensuring that the inventory management system could handle fluctuations in traffic and maintain uptime. It automatically distributed containers across multiple nodes in the cluster, preventing single points of failure.
Integrated Docker and Kubernetes with CI/CD pipelines, enabling automated testing, building and deployment of the inventory management system. Used tools like Jenkins and GitLab CI to automate the entire software delivery process.
Used RESTful APIs to define resource endpoints that represented various entities in the inventory management system, such as products, orders, customers and warehouses.
Utilized Agile methodologies to develop an inventory management system. The iterative approach allowed the team to adapt quickly to changing requirements and maintain close collaboration with stakeholders. This flexibility ensured a system that was both efficient and aligned with business needs.