Streaming Audio: Apache Kafka® & Real-Time Data

Designing a Cluster Rollout Management System for Apache Kafka ft. Twesha Modi

September 23, 2021 Confluent, original creators of Apache Kafka® Season 1 Episode 178
Streaming Audio: Apache Kafka® & Real-Time Data
Designing a Cluster Rollout Management System for Apache Kafka ft. Twesha Modi
Show Notes Transcript

As one of the top coders of her Java coding class in high school, Twesha Modi is continuing to follow her passion for computer science as a senior at Cornell University, where she has proven to be one of the top programmers. During Twesha's summer internship at Confluent, she contributed to designing a new service to automate Apache Kafka® cluster rollout management—a process that releases the latest Kafka versions to customer’s clusters in Confluent Cloud.

During Twesha’s internship, she was part of the Platform team, which designed a cluster management rollout service—capable of automating cluster rollout and generating rollout plans that streamline Kafka operations in the cloud. The pre-existing manual process worked well in scenarios involving just a couple hundred clusters, but with growth and the need to upgrade a significantly larger cluster fleet to target versions in the cloud, the process needed to be automated in order to accelerate feature releases while ensuring security. Under the mentorship of Pablo Berton (Staff Software Engineer I, Product Infrastructure, Confluent), Nikhil Bhatia (Principal Engineer I, Product Infrastructure, Confluent), and Vaibhav Desai (Staff Software Engineer I, Confluent), Twesha supported the design of the rollouts management process from scratch. 

Twesha’s 12-week internship helped her learn more about software architecture and the design process that goes into software as a service and beyond. Not only did she acquire new skills and knowledge, but she also met mentors who are willing to teach, share their experiences, and help her succeed along the way. 

Tim and Twesha also talk about the importance of asking questions during internships for the best learning experience, in addition to discussing the Vert.x, Java, Spring, and Kubernetes APIs. 

EPISODE LINKS

Tim Berglund:
It's late summer as this episode was being recorded, and so it's intern season. I got to talk to Twesha Modi, a computer science senior at Cornell about her work in some Confluent Cloud Fleet Management automation stuff here during her summer internship. I love talking to interns, so this was just a treat for me. Before we get started, remember, Streaming Audio is brought to you by Confluent Developer. That's developer.confluent.io. It's an internet website and the only internet website if I could say that at the risk of some hyperbole, that you need to learn about Kafka and Confluent Cloud.

Tim Berglund:
We've got video courses, index of podcasts. You can find meetups, you can do execute the tutorials, read event-driven design patterns, all kinds of things. Really, everything you need. And when you do examples there and do some of the tutorials, often you'll be doing them in Confluent Cloud. You'll need an extra discount code to get you a little bit more free stuff. That's PODCAST100. You get that just for listening to this show and making it through the intro. So let's get to the conversation between Twesha and me.

Tim Berglund:
Hello, and welcome to another episode of Streaming Audio. I am once again, your host, Tim Berglund. It seems like I am every time. But this time, I'm joined in the studio by my colleague, Twesha Modi. Twesha is a software engineering intern here at Confluent. Twesha, welcome to the show.

Twesha Modi:
Thank you, Tim.

Tim Berglund:
I absolutely love talking to interns. We've done this before in the show. We're going to do it again on the show. I'm really glad you're here and I want to talk about the project that you've been working on this summer. But before we get to that, tell us about your degree program, what it is, where you are in it, why you picked it, the college you.

Twesha Modi:
Yeah, for sure. Well first, thank you so much for having me. So I am a rising senior at Cornell University. I'm studying computer science with a specialization in economics and-

Tim Berglund:
Go on.

Twesha Modi:
I, but yeah. I absolutely love studying computer science. It wasn't always that way. When I came into Cornell, I was undecided between studying economics and computer science and I was favoring econ when I came in. And then it was typical, I took a couple of CS classes. I took a couple of econ classes and I realized that maybe econ wasn't exactly what I thought it was, and it wasn't what I wanted to do. But computer science was. I really liked being able to solve these small problems or being able to print hello world to the screen. And I know, very stereotypical.

Tim Berglund:
Hey. Everybody starts with that. You have control of the machine and it's very satisfying.

Twesha Modi:
Exactly.

Tim Berglund:
To certain kinds of people. And those are people who end up in the profession of software engineering.

Twesha Modi:
Exactly. So yeah, that's how I ended up in computer science. Before that, when I was in high school, I'd taken a couple of intro computer science classes, but I wasn't really sure if it was for me. But one of the biggest things that kind of pushed me towards college to just at least consider it was the original feeling of empowerment and also, kind of being underestimated. So when I was in my intro classes, I was one of four girls in the class.

Tim Berglund:
Out of how many students?

Twesha Modi:
Out of maybe 25 to 30.

Tim Berglund:
So super comfortable for your feeling and you're like, this is definitely a good place where I belong and everything is fine.

Twesha Modi:
Well, it wasn't at the onset. I do remember feeling underestimated and kind of out of my element. And I eventually became one of the strongest coders in the class and my peers began to respect me. I kind of had that feeling of like, girls can code. Girls can work in technology. It's not a completely, it doesn't have to be a male-dominated field. So that was something that definitely pushed me towards considering whether this was something I wanted to do in my professional career.

Tim Berglund:
Nice. I love that. So before I forget this question, I'm just curious. As of four years ago, was it Python? Was that what you were doing in the high school level stuff?

Twesha Modi:
They actually started out with Java, the AP exam.

Tim Berglund:
Okay, AP.

Twesha Modi:
The hard Java. Yeah.

Tim Berglund:
AP is still Java. Right, okay.

Twesha Modi:
Yeah.

Tim Berglund:
And still, I say it like it's something, but I think your message is important. I don't think there is a significant high school demographic in the listening audience of Streaming Audio, but-

Twesha Modi:
Right.

Tim Berglund:
One never knows where these episodes go. And I think that's an important message, that a certain realism about being a software engineer is that you may, for substantial parts of your career in many teams that you're on, be one of a relatively small number of women. Right? I don't know if that's going to be different for you at any point in your career. That's, yeah. This episode is not to talk about why that's true or how to fix it or anything like that. It seems to be a reality that one has to reckon with if one is a woman doing this work.

Tim Berglund:
But the things that you said about excelling, being one of the top performers in the class, and realizing, wait a second, this is a career path that's open to women. And that's the thing. So it might be a fact that you're going to be one of the relatively few women in the teams that you're on. That might be a feature of your life. It also happens to be a fact that this is a thing that women do. And the way that you know that is, you see women doing it.

Twesha Modi:
100%, I agree with what you said. I think the exposure early on in my career was really important for me to realize that I might be the only woman on a team. It's true on my team right now, but that doesn't mean that I'm limited in what I can do and how I can perform. It's just kind of clock-in, work with the people that you're going to work with, and do a great job every single day.

Tim Berglund:
And you got great examples, people inside Confluent and past, and certainly future guests on this program. You've got Anna Povzener. You've got Gwen. Obviously-

Twesha Modi:
Right.

Tim Berglund:
Anna McDonald.

Twesha Modi:
Yeah.

Tim Berglund:
Who I always want to call JB Fletcher. Anna, this is what you've done to me. Anyway.

Twesha Modi:
No, I'm exactly the same way. I always call her JB Fletcher because honestly, the nickname, pretty baller.

Tim Berglund:
It really is. Yeah. I mean, I don't think I've ever told her this, but I never really watched Murder She Wrote that much. And I'm of an age where I may have done that, but I didn't. However, it's still a great nickname. Anyway, let's talk about what you've done here. You've been an intern for the summer and I want to talk about the intern program, your experience of it, how you got into it, and just kind of what it felt like and what you did and the technical work. That's really what we're getting to. So let's start with the program. What is it like to be an intern at Confluent?

Twesha Modi:
Well, being an intern, I would say at Confluent is one of the greatest roles you can be in. I think that's mainly because as an intern, everyone's really excited to have you. The enthusiasm is unmatched because, with interns, I feel like we remind people of when they were in college or when they... Right? So we really try to bring people a smile to our face with the energy that we bring. And so I think that it's incredible because people just want to tell you and they just want to teach you about everything that they know because they know that as an intern, one's pretty green.

Twesha Modi:
We don't know too, too much about the industry beyond any past experience and what we've learned in classes. So people are just really excited to teach you. And as an intern, I'm always really excited to learn and listen from people. So the internship program here is great, especially because I've been able to reach out to people all over the organization and not just software engineering, but other fields as well. And just ask, "Hey, what do you do at Confluent? What is your field like? How did you get introduced here?" And people love to talk about themselves and their careers and give insights about what they've learned over time. So I think that being an intern at Confluent is just an incredible experience.

Tim Berglund:
Awesome. Awesome. And in past, we've had past interns who have even changed fields. That kind of cross pollination you're talking about.

Twesha Modi:
Right.

Tim Berglund:
Interning in one part of the org and a non-technical part of the org and seeing all this technical stuff, going, "Hey, wait a second. Actually, computer science looks like an awesome major. Let me switch." And so that, and you can go the other way too, right? You can be, Oh, wait, no. Marketing looks amazing. I want to go do that." But just getting that experience and exposure to what is now a medium to biggish company, a public company. You get to see because, I mean, you don't know. You knew what it felt like to take some software development classes in high school and to be good at it and to think, oh wait, maybe I don't belong here. And then go, "Wait, no. Actually, I do and I am super talented at this."

Tim Berglund:
And the sort of, you said empowerment. I'll just use the raw word, the feeling of power that one gets controlling a machine. This is a common part of people's stories when they get bit by the software development bug as kids. It's just a good feeling. It's cool. It's like, let's do this with my life. That was definitely part of my story. And I lost my train of thought with this, but it was probably a good train of thought. We should probably get back to my question.

Twesha Modi:
Right.

Tim Berglund:
The basic idea of, oh yeah. Yeah. You get bit by that bug and you know you want to do this. But also during this period of your life as an undergraduate, you are sampling things. You're trying to figure out what is it that I want to do? And you don't have-

Twesha Modi:
Exactly.

Tim Berglund:
All the information you need to make that decision. So I like what you say about talking to lots of different parts of the organization. That's just wise, a wise use of an internship because there's stuff you don't know. You might love something else more and want to go do it, so it's good to do.

Twesha Modi:
Thank you. Yeah. I 100% agree. I've had so many people ask me, "So where do you see yourself in a year after you graduate school?" And before this internship started, I honestly would just say, "Listen, I don't know yet." I'm hoping this internship going to help me figure it out. I can tell you what I know I don't want to do, based on the experiences I've had, but the field is huge. So it's not necessarily something that I can just say, "I want to do this specialty in computer science because of X, Y, and Z." I'm not there yet. I don't know when I'll be there yet. But now after this internship, I can definitely say that after working in software architecture, I really enjoy it. And I can see myself working there, at least for the time being, until I find something that piques my interest even more.

Tim Berglund:
Right. Right. Hey, that's a good thing to keep in mind. I mean, if you look at it, just take any five-year chunk of my career. I started writing software for money in January of 1992 and it wasn't a formal internship program. It was just a startup in Melbourne, Florida, where I was going to college and that was hiring college students because they were cheap. But it was that same experience of, well, there's all these senior people who have been doing this forever and I just want to soak all this up. It's great. And it was all the great things about the internship.

Tim Berglund:
But if you kind of takes any five-year period of my career, it's unlikely that I was doing the same thing at the end of that five years that I was at the beginning. So yeah, the kinds of things that you do, of course, those change and evolve and grow as you change and evolve and grow. So it's good to have a starting point, but it's not like that's a commitment that you're going to make forever.

Twesha Modi:
Exactly.

Tim Berglund:
So tell us about the code you wrote this summer. You were on a project. What is it? Where does it fit into the world? What did you do?

Twesha Modi:
Yeah. So I got placed on the Kafka platform team. It's a brand new team. So when I started, there were two employees, my manager, and my mentor. And since my internship, the team has grown. We're doing some pretty aggressive hiring. But basically, when I entered on the team, we did not know what we were doing. It was a brand new experience for everyone involved, and it was a lot of just figuring out and gathering our bearings at Confluent since we were all new.

Tim Berglund:
Nice.

Twesha Modi:
So we-

Tim Berglund:
Who is your management or your manager and mentor, by the way?

Twesha Modi:
Yeah. My manager is Pablo Berton and my mentors are... So on the team, my mentor is Vaibhav Desai. And then outside of him is Nikhil Bhatia, and he's been here for a while.

Tim Berglund:
Yes. And he's a recent, fairly recent guest on the podcast. We should link to him.

Twesha Modi:
Yeah, for sure. So he was kind of the guiding person when we all joined in. I needed an intern project and he had this incredible idea where he was going through some painful processes to create a rollout plan for our Kafka clusters. So for some background, our Kafka clusters need to be upgraded to target versions as new versions of Kafka are released.

Tim Berglund:
This is in Confluent Cloud, we're talking about here?

Twesha Modi:
Yes, in Confluent Cloud. My apologies. I just assumed that everyone knows what I'm talking about. But yeah, in Kafka Cloud, we have to roll out these clusters. And so at Confluent, we originally had this system of creating a giant spreadsheet, getting data from multiple different sources of truth, and then calculating the risk for each cluster. And that was a system that worked when we had a couple of hundred clusters, but Confluent has grown since then.

Tim Berglund:
More than a couple hundred people.

Twesha Modi:
And now we're at...

Tim Berglund:
Or is it at least that much?

Twesha Modi:
Yeah. We're definitely significantly larger than that. So trying to do this very manual process for the number of clusters we needed to upgrade was just not possible anymore. And so rolling out was a pain for him so that he could create the rollout plans. It was a pain for our on-call engineers and support staff to monitor and roll all these clusters. So, that was where my project was born. For the first half of my internship, we essentially were working at the very bottom of the staff, just designing this new service we wanted to create called the Kafka Platform Manager.

Twesha Modi:
And so the first feature that we wanted to add to this service was just being able to automate the rollouts of all of our clusters. That involved basically creating a rollout plan at first. So instead of using a giant spreadsheet, we wanted to just have a project that would, at the click of a button, just generate a rollout plan based on some specifications like, do you want to roll any specific clusters? Do you want to exclude any specific clusters? Do you want to roll clusters that might be sensitive? And based on that, it'll just generate an entire plan for you and then pass that on to our upgrader service, which will upgrade all of those clusters based on the information you give it.

Tim Berglund:
The upgrader service is just going to mechanically do the rolling upgrade. It's going to shut down a broker, let partitions failover and upgrade it and bring it back up. And it's just going to do that in a mechanical way. You press the button and it gets it done, even if it was-

Twesha Modi:
Yes.

Tim Berglund:
A super bad idea to upgrade that cluster right now. It's just, I'm going to work out.

Twesha Modi:
Yes.

Tim Berglund:
Your goal is to use that sharp knife in a helpful way.

Twesha Modi:
Yes. And luckily, we do on upgrader have some safeguards in place. We have some rules, so upgrader will deny upgrading some clusters if it thinks that there is a problem or probably something that shouldn't be done. And then the on-call engineer or support staff will have to override that rule, if they really do want to upgrade, as long as they're aware of why upgrader is kind of raising a red flag.

Tim Berglund:
Okay. It's like we're using computers for this, in other words.

Twesha Modi:
Yes.

Tim Berglund:
Do you know, were you involved with the rules that determine what kinds of clusters ought to be upgraded right now? What makes a red flag in the fleet?

Twesha Modi:
No, I wasn't involved with that, with upgrader service. The one thing is, something that I do know is, it will raise a red flag if we have not told it to roll any sensitive clusters. But if we send it a sensitive cluster to roll, it's going to raise the alarm there.

Tim Berglund:
Got it. So there's logic and it's trying to get through years now of experience operating a fully managed Kafka cluster as a Confluent Cloud. I sound like a commercial. We sort of know what makes calls happen and this is encoding that institutional knowledge of, the intuition of, oh, don't do that. That's going to be bad. And it just doesn't do it until it can be supervised or come out of that sensitive condition or whatever the deal is.

Twesha Modi:
Exactly. So yeah, go ahead.

Tim Berglund:
What did you... I mean, I'm sure you learned a lot, but it's kind of end of the summer. Were recording this. It's August 18th and this time, we're recording this. So by the time it goes live, you'll be well into your second to last semester. I'm excited to say that.

Twesha Modi:
Yes.

Tim Berglund:
But, end of the summer, what sticks out as the stuff that you learned? That surprised you, that was fun to learn, however you want to filter that.

Twesha Modi:
Yeah. So I definitely learned a lot, as one does 12 weeks, just kind of thrown into the thick of things. From a technical standpoint, most of my experience before this internship was in front end and app development. So this experience was really different for me. I had never designed-

Tim Berglund:
It's not that.

Twesha Modi:
Yeah, it's definitely not that. I've never designed a service from the bottom up from scratch. I had never really worked with a service of this size because beyond the rollouts program, they're planning on scaling this service to have a lot of different features beyond rolling clusters. So just learning so much about all of the design that goes into managing software as a service is incredible. I had never been exposed to that, so that was one thing I learned. And then there's always the small technical things that you learn with different toolkits and these new technologies that come up.

Twesha Modi:
So I had never worked with any toolkits like Spring or Vert.x, but Confluent now uses a toolkit called Vert.x for all their new applications. That was something I learned. Luckily, I was already working or coding this project in Java, which was a language I'm very familiar with. That definitely eased the learning curve of things. So on the technical side, I learned so much that they just don't teach you in class. And even, I would say in the professional development world, I learned a lot. This internship was the first time that I faced dealing with things like imposter syndrome and dealing with just not knowing when to ask questions or if I'm asking the right questions. So things like that.

Twesha Modi:
So at the end of the internship, I was able to come to the conclusion that no, Twesha, you need to ask questions. Everyone here is to help you and you're just supposed to make progress. I remember at the beginning of my internship, I didn't really know I was doing this at the onset but I was comparing myself to other interns and the progress that they were making on their projects. But I didn't realize that my project was in a completely different realm, where the design had not been completed. There was just no way I would have been coding in the first two weeks. We had to have a good plan before I could start doing that.

Twesha Modi:
So just realizing that, no, you can't compare yourself to other interns. You can't compare yourself to other software engineers, especially ones who are significantly more experienced than you are.

Tim Berglund:
Right.

Twesha Modi:
And-

Tim Berglund:
That's probably bad.

Twesha Modi:
Yes, that was definitely bad. And it took a lot of reflection to realize that, no, Twesha. You are an intern doing the best you can, learning as much as you can and you're kicking ass while you're doing it.

Tim Berglund:
Yeah. And that's a proper standard to set for yourself and not, am I working like this person who's been on the job for five or 10 years and-

Twesha Modi:
Right.

Tim Berglund:
Has 18 or 24 months of knowledge in the code base and all the frameworks and all the relevant Vert.x APIs are all second nature and all that stuff. That happens to you, but it takes time to do that learning and-

Twesha Modi:
Exactly.

Tim Berglund:
A summer isn't long enough for that.

Twesha Modi:
No.

Tim Berglund:
Particularly when you're kind of brand new at this. Like you said, you had Java and you'd written code before, and you're talented at it. But you just mentioned Vert.x and Spring and I imagine there's probably some Kubernetes APIs going on somewhere, maybe behind someone's back layer, wherever you are. What's a Kubernetes? Okay, they didn't teach me that in school. I just don't know that yet. It turns out you're not born with intrinsic knowledge of container management, and these are all things that you have to learn.

Tim Berglund:
So those are, I think, good lessons to learn at this point in your career and good, frankly. I mean, there are people who have been on the job for a long time, who I hope have been listening to this whole podcast and are listening now because the thing is, you don't know any of this stuff. You have to learn all this stuff and you go through a process. And other people who are good at it, they just already went through that process and learned the things that you're learning. And so that's important to remember, that it's a part of a growth and development process. And as an intern, you're early in your career. It sounds like you've done a wonderful job.

Twesha Modi:
Thank you.

Tim Berglund:
Well, here's how I actually know that. People don't get referred to be guests on the podcast and examples of our interns unless they're highly thought of. So that's kind of a thing.

Twesha Modi:
Thank you, Tim. Yeah. And I don't want to make it seem like just that I was sitting here thinking that, oh, I don't know what I'm doing. It wasn't a situation like that. I think one of the main things that I got out of this internship was just learning the thought processes of these super senior engineers, so my mentor. But anytime I would have a question and he'd be like, "Oh, you just do this, this and this to get this to work." And so I think one of the, I always would ask this and I would just say, "Well, okay. How do you know to do that?" And he would either go through his thought process and say, "This is what I was thinking. These are the steps I'm taking in my mind." And sometimes he would just say that "So you're not going to know. There aren't any steps to figure out where this bug is. It's just something that comes with experience."

Tim Berglund:
Yeah.

Twesha Modi:
So he would clarify these things for me. And that was-

Tim Berglund:
When he didn't know how he knew.

Twesha Modi:
Yeah.

Tim Berglund:
That's how you know this is an experience thing. And if a senior person, who you think knows everything and you ask that great question, "How did you know that?" And he can't answer. That's how intuition works, and it just takes a long experience to develop that.

Twesha Modi:
Exactly. And so as the course of the internship went on, I began to realize that, and that's how I also just became a better programmer because when I was asking that question and he gave me steps, I was able to usually follow those if I had some things, a similar problem. And then if it was more intuition based, again, I would just put myself in a mindset saying, "Okay. Well, what do I do when this is going wrong? Okay. Well, in the past, this is what my mentor did. So let's try that. If it doesn't work, then I'll ask them again and we'll see what this next path, where it will take us."

Tim Berglund:
Awesome. And a lot of software development is being confused and doubting yourself and asking questions and talking to people. There's only really a little bit of it that's writing code. The good days have a lot of writing code, but the rest, it sounds like you've gotten a taste for things.

Twesha Modi:
Oh, I 100% agree. It's like solving a Rubik's Cube, but the Rubik's Cube changes every time you solve it. And so then you have another puzzle to solve.

Tim Berglund:
So true. My guest today has been Twesha Modi. Twesha, thanks for being a part of Streaming Audio.

Twesha Modi:
Thanks, Tim, for having me.

Tim Berglund:
And there you have it. Thanks for listening to this episode. Now, some important details before you go. Streaming Audio is brought to you by Confluent Developer, that's developer.confluent.io. A website dedicated to helping you learn Kafka, Confluent, and everything in the broader event streaming ecosystem. We've got free video courses, a library of event-driven architecture design patterns, executable tutorials, covering ksqIDB Kafka Streams, and core Kafka APIs. There's even an index of episodes of this podcast. So if you take a course on Confluent Developer, you'll have the chance to use Confluent Cloud. When you sign up, use the code PODCAST100 to get an extra a hundred dollars of free Confluent Cloud usage. Anyway, as always, I hope this podcast was helpful to you. If you want to discuss it or ask a question, you can always reach out to me @tlberglund on Twitter.

Tim Berglund:
That's T-L-B-E-R-G-L-U-N-D. Or you can leave a comment on the YouTube video if you're watching and not just listening or reach out in our Community Slack or Forum, both are linked in the show notes. And while you're at it, please subscribe to our YouTube channel. And to this podcast, wherever fine podcasts are sold. And if you subscribe through Apple Podcast, be sure to leave us a review there. That helps other people discover us, which we think is a good thing. So thanks for your support and we'll see you next time.