Artish Explorations: Simple Web Server Architecture as RPG Map

Sarah Darkmagic - Posted on 05 November 2022

My day job is in tech. I spent about 10 years working as a full-stack engineer at start ups which really meant I did a bit of everything. Javascript, CSS, backend programming and configuration, etc. For the past 10 years or so, I’ve worked more on the DevOps, cloud engineer, and now security side of things.

An issue I see is that while things are less complex in many ways than they used to be, they are still complex and some spaces have gotten even more so. For cloud platforms like AWS and GCP, the more you make things simple for end users by offering higher level services, the more important the configurations become in protecting things.

So I’ve been reflecting a lot on my career lately and I had challenged myself to do something artful each day of October. One of those days, both streams converged and I created this image.

Simple WebServerSimple WebServer

It’s a simple web server portrayed as a small one-bedroom house. It’s sort of just out there and people could in theory approach from any direction.

The front door is to the top of the drawing and it leads to a simple entry way. I used a proxy icon as a rug in the room. In my mind, I was thinking of that front door as port 443, which is the port often assigned for secure hypertext protocol (http) traffic. Today, it’s the main way we should be conversing on the public internet although sometimes we open up other means.

Off of the entry there are just two options. One can go to the living room or the dining room. For the Living room, I have three pieces of furniture representing the common types of static content: html (the structure of web pages), css (the design for web pages), and javascript (providing some dynamic elements, fetching information via apis, etc). Living rooms tend to be more formal and rigid.

The dining room for me represented the first level of the backend, the part that most application developers out there would be working on. It’s taking the outputs of a lot of more private (like the database) or semi-private (such as the kitchen or family room) and making it into something that guests might like.

There’s a pretty free flow between the dining room and the semi-private areas. That’s because there often has to be communication between libraries or other services on the machine. And sometimes we might even invite our guests to be part of those areas for us. However, the bedroom (which represents the data layers on our web server) has a door and we likely will limit who goes through there.

That said, as with many simple public web servers, there are a few flaws with this architecture.

A notable one is that the house’s only bathroom is inside the bedroom. We often have this in web servers too. We sometimes have to let guests into the most sensitive areas of our systems because we don’t have a place to duplicate the service in a safe way.

Likewise, in order for us to have easy access to our kitchen, we have a door that opens near where we park our cars. While we can use a different key, keep it locked, etc, it can be very difficult to ensure only we can get in the back door.

Additionally, if things grow, like we get a bunch of valuable stuff, it’s hard for us to store it without potentially giving guests access to it. If we want more security, it has to go in that little bedroom. We don’t have a good way to scale out as our life changes.

I super enjoyed exploring these ideas in this way. I’m tempted to continue with the metaphor. :)

Send feedback using the contact form or through twitter, @sarahdarkmagic.

Resources for FAQs



Syndicate content