Next-Generation Mainframers Community

 View Only

My Transformative Journey: Leveraging Generative AI for Software Development

By Ajay Jayanth posted Aug 04, 2023 01:17 PM

  

My Transformative Journey: Leveraging Generative AI for Software Development

Over the course of this summer, I embarked on a transformative journey as an Artificial Intelligence and Machine Learning Engineering Contractor at Broadcom, working within the Mainframe Software Division (MSD). This invaluable experience provided me with a wealth of knowledge in various technical areas, insights into the inner workings of the company, a broader perspective on the industry, and a deeper understanding of the career path I am wholeheartedly pursuing. As a young aspiring engineer, the experience of being part of a connected and welcoming environment not only nurtured my technical skills but also instilled a sense of comfort and belonging in the workplace.

Utilizing ChatGPT for Full Stack Development and Backend Optimization

One of the most engaging and impactful projects I had the privilege of working on this summer involved utilizing ChatGPT, a powerful language model. My project was to complete a series of full-stack development tasks, each designed to challenge and enrich my abilities as a developer. In addition, I was maintaining my logs with ChatGPT and was filling out a feedback form to describe how ChatGPT helped, how it did not, and how it can improve. These tasks coincided with the Agile development process, where each task was split up into one or more two-week development cycles, which provided a streamline and efficient development process.

The first task entailed creating a simple yet elegant website featuring a basic user interface. This platform allows users to sign in, sign up, sign out, change their passwords, and view their personal information. Through this task, I honed my full-stack development skills in React, HTML, CSS, Nodejs, and MongoDB. In addition, I gained an understanding of user-centric design principles, ensuring a seamless and user-friendly experience.

Figure 1. Registration Page User User Interface

Next, I delved into testing the backend server's API calls using Postman, a robust API development environment. This phase of the project exposed me to the critical aspect of quality assurance, validation of the backend server’s functionalities, and integrity of the server-side operations.

The final challenge involved employing JMeter, a performance testing tool, to simulate thousands of users and measure the backend server's performance under the immense load. This exhilarating phase allowed me to gain valuable insights into handling traffic spikes and optimizing server response times.

Figure 2. The collection of all the major API requests of the application.

Armed with the performance data gathered from JMeter, I took on the final task of enhancing the backend server's performance through the implementation of various techniques, including caching, connection pooling, and load balancing. The performance of the servers was measured by how much time it takes to simulate 3500 users that ramp up in 10 seconds to perform 6 API requests (including downloading and uploading an image) twice per test run. 

Figure 3. The collection of all the major API requests on Postman.

One bottleneck that commonly occurred with test runs was that the Upload Profile Picture API request was an extremely resource intensive and slowly responsive API request. By utilizing NginX for load balancing and Memcached for caching, I was able to enable more resources (threads) dedicated to uploading a profile picture.

As shown in the below diagram, The API requests are routed to the NginX server, which load balances the requests to two backend servers. Then, the backend servers check if the request data is in the.  cache. If it is, it returns the response to NginX. If not, it communicates with Mongoose, which performs the task on the MongoDB database. Then, it returns the response to Nginx, which returns it to the UI or JMeter. LH means a localhost server.

 

Figure 4. Diagram of how the backend server processes the real users from the User Interface and simulated users from JMeter. 

As seen in the below graphs, the Upload Profile Picture API request starts a minute late with the base server as opposed to it beginning at the beginning of the task execution with caching and load balancing implemented, therefore cutting the full task time by one minute.

 

Graph 1. Response Times of each request over the batch task of the base server.

Graph 2. Response Times of each request over the batch task of the server with caching and load balancing.

Throughout this project, I was consistently challenged to think critically, employ problem-solving strategies, and collaborate effectively with my team. Additionally, the mentorship and guidance I received from experienced professionals allowed me to grasp industry best practices and imbued me with a profound sense of growth and empowerment.

Overall Experience and Takeaway

Beyond the technical aspects of this contractorship, the experience within Broadcom MSD fostered a sense of community and camaraderie among colleagues. The collaborative and inclusive environment of my team made me feel valued and encouraged me to contribute actively to the team's success.

This summer at Broadcom was not just a contractorship but a transformational journey that enriched my skills, expanded my horizons, and ignited my passion for artificial intelligence, machine learning, and full-stack development. As I now look ahead to my future career, I carry with me the invaluable experiences and learnings that have shaped me into a confident and capable engineer, ready to make a positive impact in the world of technology. I am grateful for this opportunity and excited to embark on new challenges with the knowledge and skills acquired during this remarkable contractorship.

0 comments
5 views

Permalink