A solution full of holes

I came to infrastructure engineering (or DevOps or SRE or Systems engineering) because I was a software engineer solving similar problems on a continuous loop. This lead me to uncover the events after code on my laptop works. I started by asking a simple question. How do I run my web application for users? The answer to this question describes the domain of an infrastructure engineer. And, in this post, I describe a solution to this question.

To keep the solution simple, let's assume my application is a simple go application. I've compiled the application into a linux binary and it's ready to go. This assumption is a discussion for another post, but also belongs under the infrastructure engineering domain.

The first task I need to do is acquire a linux server. There are many ways to acquire a server. For instance, you could use cloud services like AWS or a hosting provider like Linode. But, there are two important features that I need from this server:

  1. I can SSH to the server
  2. My users can access my application via their web browsers

The actual process of acquiring a server is too complicated to describe in this post, so let's assume I now have my server. Let's also assume that I can SSH into the server from my laptop user the username myuser. Finally, let's assume my server's public hostname is example.com.

Now that I have my server, I will create a directory on the server where I can upload my application. Here's how I do this.

ssh myuser@example.com mkdir myapp

I need to upload my application to the server. Since my server has SSH access, I can run the scp command to upload my application's code onto the server. I can run the following from my laptop terminal:

cd path/to/my/app
scp -r myappbinary server-username@server-address:myapp

Now that my application code is on my server, I can start the application.

ssh myuser@example.com
cd myapp
nohup ./myappbinary &

At this point, the myappbinary is running on the server and I can access it via https://example.com.

I know. This is way too simple. But it will allow me to break down the reasons infrastructure engineering exists from this simple example.

And now I'm out of coffee.