This summer, I had the opportunity to join the the Gen Product Team within Broadcom’s Mainframe Division as a summer Next-Gen Mainframer. Gen is a tool that provides a unified environment for developing and maintaining large-scale applications across multiple platforms.
During my time here, I worked on modernizing Gen’s application deployment process by building a command-line utility called gendeploycli. This tool automates the deployment of Gen applications in containerized environments—equipping Gen to make another step forward in the modern DevOps adoption journey. Through this project, I gained experience with the Go programming language, collaborated with seasoned engineers, and developed a deeper understanding of how automation can improve business processes.
What Is Gen?
Gen is a powerful, model-driven development tool used to build enterprise applications. Developers create applications using abstract models, which are then used to generate code that can run across multiple platforms, from mainframes to Windows and Linux servers. Applications built with Gen are modular—broken into smaller “load modules,” each representing a piece of functionality. This modular design makes Gen flexible and adaptable to different technical requirements and platforms. Gen has long been a cornerstone in mission-critical infrastructure. But as the tech landscape evolves, so must Gen.
That's where my summer project comes in.
The Project: Building gendeploycli
The goal of my project was to streamline the development, deployment, and testing of Gen applications using containers. Traditionally, configuring and deploying Gen applications is a manual and often time-consuming process—especially for complex, multi-component systems.
gendeploycli simplifies this by offering an automated command-line interface for managing deployments quickly and consistently.
A Quick Primer on Containers
Containers are lightweight, portable environments that bundle an application with everything it needs to run—code, runtime, libraries, and configuration. This ensures that the app behaves the same whether it's running on a developer’s laptop, a staging server, or in production.
Think of containers as portable boxes that hold your entire app environment.
Key benefits of containers include:
-
Portability: Run anywhere—on local machines, servers, or in the cloud
-
Isolation: Each container runs independently, reducing conflicts
-
Speed: Containers are lightweight and fast, perfect for CI/CD workflows
Popular container tools used in modern DevOps:
-
Docker – The most widely used container engine
-
Podman – A daemonless alternative to Docker (used in my project)
-
Kubernetes – A platform for orchestrating and scaling containers across clusters
What Does gendeploycli Do?
At its core, gendeploycli automates the creation and configuration of database and application containers for Gen applications.
Example Command:
.\gendeploycli.exe --db_username sai --db_password jH4x9!PqRz@lB --network mssqlnet --ddl_filename GENDB.ddl dbms mssql mssql-db 1433
To give monitoring capabilities within the Gen application containers, I integrated cAvisor directly into gendeploycli as a platform option. cAdvisor (Container Advisor) is an open-source monitoring tool developed by Google that provides real-time metrics and resource usage statistics for containerized applications. It collects detailed information on CPU, memory, disk, and network usage per container, and presents this data through an accessible web interface or APIs
Here’s a sample usage:
.\gendeploycli.exe dashboard cadvisor cadv 8080

Benefits of cAdvisor Integration:
-
Real-Time Resource Tracking: Monitor how each container utilizes system resources
-
Performance Tuning: Identify and fix inefficient modules or misconfigured containers
-
Faster Troubleshooting: Quickly locate performance bottlenecks or system resource issues
-
Adding cAdvisor support allows teams to detect issues early and optimize applications before deployment.
What I Learned
This summer has been one of the most valuable learning experiences of my academic and professional journey. It was my first time working with the Go language and containerization tools. Learning both simultaneously—while applying them to a legacy system like Gen—was challenging but incredibly rewarding. I learned the ins and outs of Gen: how to build applications, configure load modules, and bridge legacy components with new technologies like containers. Navigating between old and new technologies forced me to think critically and problem-solve creatively.
Perhaps most impactful was working closely with the Gen team. I had real conversations with developers, listened to their challenges, and built tooling to solve actual problems. It showed me that great software starts with listening, asking the right questions, and understanding the user. The team at Broadcom was incredibly supportive. Whether I was debugging a container issue or exploring Gen internals, there was always someone willing to help. I learned from engineers who modeled patience, precision, and professionalism.
I’m deeply grateful for my time at Broadcom. The experience allowed me to apply what I’ve learned, explore new technologies, and contribute meaningfully to a product used in real-world enterprise environments. I walk away more confident, skilled, and inspired—not just because of the code I wrote, but because of the people I worked with and the lessons I learned along the way.