Interning at Google SeattleTags: intern, career, job, google, kubernetes
Now that I’m back from the US, the extravaganza that is Google, reminiscing back to those days has made me finally decide to pen down my experience in the Cloud city, working on Cloud.
For context, I interned at Google Seattle, the third largest Google office in the US. The Seattle area is home to Amazon and Microsoft’s sprawling offices. Microsoft, Amazon and Google (in that order) being the biggest players in the cloud market these days, Seattle has somehow become, what you could call, “the cloud city”.
I remember how I was completely unaware of the huge tech industry in Seattle, back in December when I accepted this internship offer. That part, my interviews and how I chose to go to Google, is another story, one that’s written here.
But coming back to today, how was my intern, you ask? Well, I’ll let the words do the talking (what other option do I have?).
The letter from Hogwarts
By the end of December, I’d signed my offer letter and was preparing my documents for a speedy visa process. Apparently things don’t move as fast as you’d want, and Google only got my documents ready by mid March. I visited Delhi early April for my visa biometrics and interview. Yes, Indians need to interview for an American visa.
Anyway, I was all set for flying to San Jose, US, around mid of April. I was going to Hogwarts!
Since I was interning at the west coast of the US, I got to attend the orientation at the Mountain View (MTV) campus of Google, which is also the largest Google campus in the world.
I felt like a character sprung out of the first Harry Potter book, marvelling at the campus as if it was Hogwarts. The MTV campus is gigantic, and almost feels like a city. Walking around it would take hours, if not a full day; and thus you can find bicycles called GBikes lying around the campus. There’s also a cab service which can pick you up and drop you anywhere in campus.
There are more than 40+ Google cafes in the South Bay Area region. Google offers free meals 3 times a day to all employees at these cafes. And mind you, the food is delicious!
Fun fact, you can access the map of the campus on the internal link
disneylandmap. The buildings with slides to move among floors, sports grounds, random pianos in halls, free food every few yards, hidden game rooms; yes all that is true, and more.
My Chronicles in America
I’m the kind of person who loves to visit places, and not just enjoy the commercial things available in city. Seattle is an awesome place for that matter. Not only is the city fun and full of things to do, the surrounding countryside is magnificent. I knew how to drive, and had friends who did too, so we rented a car every weekend, to go exploring the nearby natural extravaganza. Oh right, renting a car as a Googler is cheap, very cheap. Even when you’re under-21, like I was. And by a car, I mean nice full-size sedans.
Here’s most of the stuff I did in the US, compiled into a list to the best of my memory:
- May 8 to 12: Explored the Mountain View campus for a week, during my orientation.
- May 11: Visited San Francisco for about 6 hours. Hey don’t judge, we had a hectic schedule during orientation.
- May 20: Hiking at Mt. Rainer. This was a Google sponsored intern event, and was incredibly fun.
- May 21: Explored Seattle with a friend. Seattle’s nice!
- May 26-29: Rented a Nissan Altima with 2 friends and drove all the way to California! This was my first road trip, and we drove on the US101, which is a highway on the Pacific Ocean coastline. We visited lots of beaches on the way, crossed Oregon into California, before turning back for a drive back on the Interstate-5. Total ~1200 miles.
- May 29-30: First (and last) time staying overnight in the office. Yeah, we have beds, toothbrushes etc in office :)
- Jun 4: Hike to Rattlesnake ledge with interns. Another Google sponsored intern event.
- Jun 7-8: Visited Sunnyvale, California for the GKE/Kubernetes team’s annual team summit.
- Jun 9-11: Rented a cabin in the Wenatchee forest, barbecued in the woods, drove a motorboat in Lake Chelan, and visited plenty of other nearby places on this awesome weekend.
- Jun 18: Drove to Snoqualmie falls. Drove near and hiked to the Big 4 snow caves.
- Jun 24: Went to Portland for a day trip.
- Jul 1-4: Long weekend in Los Angeles! Visited Universal Studios and Disneyland while I was there. Also did a day trip to San Diego, before coming back to LA to watch the 4th of July fireworks.
- Jul 8: Rented a pickup-truck and drove to Sequim, a nearby town which was supposed to have Lavenders, in a different season ( :( ).
- Jul 14-15: Drove all around the Olympia National Forest and visited the Northwestern-most part of US mainland.
- Jul 16: Attended a Microsoft-organized boat party for interns with friends.
- Jul 21: Google Washington Picnic!
Okay that’s a long list. To be honest, (a) I wanted to write it down for my own record, and (b) that wasn’t from my memory, I looked up my Google Photos uploads :)
The Seattley Hollow
Seattle is a nice city. It is not huge, or overly populated, but has a lot of things a person would enjoy.
- The city-center (which isn’t really in the center) with the Space Needle and the Pacific Science Center is a nice place to chill out and relax on the weekend.
- The Pike Place area is the place to go for the Seattlite experience, and also for the best fish in town.
- Gas works park offers an incredibly pleasant view of the Lake Union area.
- Greenwood lake is a fun place to go kayaking on a weekend.
- The neighboring cities of Bellevue and Redmond are majority tech cities. They’re 30-45 minutes by public transport, and you can find lots of fun things to do there as well.
There’s plenty of more places I wanted to visit, but did not. I didn’t really explore Seattle a lot, actually. There were escape rooms, sky-scraper observation decks, landmark buildings, museums etc like any other city, whatever floats your boat.
More importantly, the public transport is almost as good as you could hope for in the US. Google also gives a free public transport pass, so travelling around the city is a breeze.
To be honest, I was pleasantly surprised by the Seattle office. I had not expected a fully-fitted Google office which a huge lot of teams working on meaningful things, but that’s what I found. Its a 5-building complex in one of the most pretty areas of Seattle, and had almost every thing which is actually useful in an office. There were plenty of things which brought-out the Googleyness of the office too, like the sleeping area hidden behind a library bookshelf, or the Kayak shaped tables in the cafe called Kayak, or mini-recreations of landmarks in Seattle.
The free and awesome food is a common denominator in all of Google’s offices I believe, and Seattle was no different. The nearby Kirkland office in the suburbs was even more Googley.
The Seattle-Kirkland offices combined are the 3rd largest Google offices in the US, with about 2000 employees working on major teams like Cloud, Maps, Chrome among other things. There’s expansion plans which would see Google opening a huge new campus in the South Lake Union area nearby by 2019.
Lord of the cloud
This chit-chat somewhat distracted me from my project. As I said, Seattle happens to be the cloud city, and no wonder Google’s Cloud team is there too. I was a part of the GKE/Kubernetes Security team. A bit of description:
- Docker container: A small sandbox which can run a service (database, web services etc) independently across systems.
- Kubernetes: Google’s Open-Source software for managing, scaling, load-balancing docker containers. It is the most popular and used such docker orchestration project.
- GKE: Google Container Engine. A Google-managed instantiation of Kubernetes which handles automatic upgrades, cluster lifecycle etc.
- Security: Oh come on, every cluster requires security features :) The team mostly works on security hardening features in Kubernetes and GKE.
My project was almost entirely about working in Kubernetes, the open source part. Kubernetes uses etcd as the database to store cluster specific information. More importantly, it contains secrets which ought to be confidential. For example, security certificates, passwords, private keys etc.
My project had 2 parts:
The first part was to encrypt those secrets in the database. This involved a layer before the database calls, which would encrypt data before writing, and decrypt data after reading. This also involved adding the configuration options for this feature necessary for this feature to be released in Kubernetes v1.7, whose features had to be freezed at the end of May. That was a very tight deadline, and I barely made it, with half an hour left to go.
The second part was to integrate the above part with Cloud based encryption-decryption services (called KMS, Key Management Service). Since sending large data for encryption/decryption over a network is not practical and advisable, we use a scheme called envelope encryption, which uses two keys, a Key-Encryption-Key and a Data-Encryption-Key. There were many more concerns, especially about exposing key rotation and management to the user. The end result was to finish integration with Google’s in-house Cloud KMS by Kubernetes v1.8.
A Song of Open-Source and Programming
Apparently, open source and programming don’t work so well in practice. At least not as well as I had hoped, in my utopian dreams of working in a large open source organization.
You see, Kubernetes is a large organization, involving a large number of companies and contributors. That means it has a certain bureaucratic feel and structure. There’s plenty of contributors, but only a handful of ‘approvers’. The 2nd part of my project got stuck in reviews, which were awfully slow because the approvers, I quote:
have the misfortune of knowing everything about Kubernetes, and thus get called to every meeting and review
I would often wait 2-3 days before getting a comment from one reviewer among the 10-15 ones assigned. That would give me time to implement features which wouldn’t even be put up for review until my previous changes went in. One particular Pull Request, for instance, had 100+ comments, 14 participants and 11 reviewers, and at the time of writing, has been up since a month. Dozens of meetings and discussions later, I split up the PR into two, and the more controversial half got approved within a day. Things are strange in open source, more so than I thought.
Although I immensely enjoyed working on Kubernetes, the reviews were the sour in the sweet, so to say. But to be honest, I’m much more careful about my code since then, and have drastically improved in communicating with reviewers and negotiating on approaches.
This internship made me realize that programming is not just about coding. Talking about requirements and solutions occupies a major chunk of the work.
After 12 weeks, the day I left Seattle was sad. Dropping in my Google badge on the final day, one last card game, hugging my friends goodbye, packing up my stuff into luggage bags; I heard melancholy music all day long.
Waking up from this reminiscing exercise, I’m back in IIT Kanpur, and life’s back to the usual old grind. USA is a fun memory for at least an year now.
The bottomline? Google US was awesome and I had a really good time. Thanks for the memories!