Coding for the Cloud
By Nick Trettel
My name is Nick and I’m a full-stack web developer at Rackspace, where I write automated services in “the cloud.”
I knew right out of high school that I wanted to pursue a career in software development. I took a class on the topic and immediately took an interest. To me, it was like building a puzzle. All of the pieces are already there; you have the computer, you have the software to process your code, all that’s left is putting it all together. I took an interest in web development specifically when I studied Computer Science at Virginia Tech. I did a few projects building websites and loved being able to physically see the results in the form of a nice, clean looking webpage.
“Before cloud providers, if you wanted to setup a website or some other form of web application, you needed to buy your own server and install all of the hardware and software.”
As a Racker (that’s what we call our employees), I develop software for the Managed Public Clouds service. What is a cloud, and how do you manage one? Glad you asked. At a high level, a cloud simply means someone else’s computer. Before cloud providers, if you wanted to setup a website or some other form of web application, you needed to buy your own server and install all of the hardware and software. Now, you can go to any popular cloud provider such as Amazon, Microsoft, Google, or Alibaba, and essentially rent the server from them. But even with a rented server, you still have to think about things like your Operating System and security vulnerabilities, and keeping it running 24/7. For that reason, the cloud’s biggest attraction is “serverless” infrastructure. Most cloud providers have services enabling you to simply upload your code, without any servers, and let them handle the details. However, managing all of your cloud infrastructure is still complicated, and that’s where Rackspace comes in.
We offer various levels of support depending on the customer’s needs. We can do as little as “keeping the lights on,” — simply make sure everything stays running — or as much as help you setup your entire application’s infrastructure. If your application breaks in the middle of the night, someone on the support team will be there to get it back up. It would be nearly impossible to monitor the thousands of accounts we have under our management if we had to do it manually. Instead, we have automated tasks do all of the monitoring and only if something looks wrong, they will alert a human to fix it.
My job as a developer is to help build those automated services to make our support Rackers lives’ easier. I spend a lot of my time thinking about how to automate tasks that are currently done manually. I write everything, and I mean everything, in JavaScript. Our backend code is written using Node.js and the frontend is React.js. We deploy all of our code through a pipeline which does one last test to make sure everything works fine. If it does, that code is uploaded to Amazon’s cloud and becomes “live.” Yes, our services which help automate our customers’ cloud are also deployed to the cloud! The most impactful task I helped develop, for example, is an automated ticketing service. The service continuously monitors all of our customers’ infrastructure and creates a support ticket if things are not performing well. Let’s say the customer wrote some bad code in their application and their memory usage begins increasing. Eventually, it will run out of memory and crash. However, our automated service will notice and create a ticket. A support Racker will respond to that ticket before the customer even notices something is wrong.
“… in a world where you can’t escape the internet and self-driving cars are inevitable, I feel extremely prepared and confident that my knowledge will be relevant in the decades to come.”
I absolutely love what I do for two reasons. I love seeing the impact Rackspace has on customers who would otherwise shy away from the daunting task of “migrating” to the cloud. I also love the experience I’ve gained working with the cloud; in a world where you can’t escape the internet and self-driving cars are inevitable, I feel extremely prepared and confident that my knowledge will be relevant in the decades to come. It also doesn’t hurt that my team at Rackspace is remote, meaning I can work from anywhere I want! As with most software developers, I take what I learn and apply it to side projects in my personal life. Because of my background, I’m always thinking about ways to automate my everyday tasks. Most recently, I built a web service in the cloud to automate my shopping lists. I love cooking, but hate the whole process of grocery shopping. So I made it easier and wrote a service to randomly pick meals for a week (it only picks from recipes I like), generate the shopping list, and send it to my phone. You can do virtually anything in the cloud!
What tools do I use?
- Node.js
- React.js
- Amazon AWS
- Terraform
- Jenkins
- GitHub
In my free time, I’m either playing Ultimate Frisbee, rock climbing, or hiking. I also love traveling and am working on my pilot’s license so I can travel really long distances!