We're hiring!

Posted on .

A few weeks ago, we wrote a massively successful IMGZ systems architecture article that ended up going viral (note to editor: are we still allowed to say "viral" in 2020?) and upending the world of image hosting. Here we were, a small newcomer, poised to take on the giants of the multi-billion-dollar image hosting industry with our new, innovative and daring business model of charging people for services.

As you can imagine, all the media attention caused our user count to skyrocket, and our subscription graph started exhibiting the familiar "hockey stick" pattern that every VC in Silicon Valley wants to be hit with:

Rather unsurprisingly, such an influx of new users caused a deluge of new content being uploaded to the platform. We estimate that, with our current level of usage, up to a thousand images could be getting uploaded to the service every year.

Naturally, we immediately sprang into action to preserve the reliability of our infrastructure, and quickly drew up a scaling plan that would enable the service to withstand its newfound popularity. This is where our foresight when designing the service paid off, as the hosting provider we use let us quickly perform the necessary changes and provision an extra gigabyte of disk space.

One thing becomes clear

However, one thing became clear: We could not sustain this breakneck pace for long by ourselves. This was never more obvious than a few days ago, when we realized we were close to failing to meet our uptime guarantee for 2020, and had to take the service offline for a few days to bring our uptime down to what we promised.

This event highlighted that there is just too much to do in a fledgling startup that aims to become the next MySpace, and even more to do in one that specifically wants to avoid becoming the next MySpace. If we were ever to realize the IMGZ vision and change the world, we needed more people.

We're hiring!

If you're young, passionate about creating software that changes the world and don't know what "3x investor preference" means, you're exactly who we're looking for! You have the opportunity to join an innovative, fast-growing company with a modern technology stack.

At IMGZ, we don't just want to serve images, no. The values of IMGZ are far loftier than that. At IMGZ we live and breathe images to the point where our values can only be communicated with an image:

In talking with various prospective hires, one thing became abundantly clear: Nobody joins a startup for the money, they do it to get rich. With this in mind, we found the perfect balance of the "early startup employee" compensation package: 50% stock, 50% equity, 0% salary.

That's right! We can maximize the potential of your stock by doing away with a significant company expense: Employee salaries. This way, your stock is much more likely to be worth a lot more (and you have a lot of it, since our packages start at three trillion shares per employee! That's a big number).

Everyone we discussed this with loved the approach, and it makes intuitive sense: Name one Google employee who became a millionaire from their salary. We bet you can't, yet all of us know the name of that cleaning lady who was given Google stock and now she has "VC" on her CV, you know the one we're talking about.

Interview process

Like any self-respecting Silicon Valley startup, we can't just settle for any old 10x rockstar developer who wants to join. Firing people is expensive, you know? That is why we have prepared a thorough, six-stage interview process.

We pride ourselves on being a pragmatic, practice-driven development team, and we want to see how you perfom in real-world scenarios, so you will be given a feature from our product roadmap and will be asked to develop it to your satisfaction. Afterwards, we will use this feature in our product and see how users like it. If they do, that will be a point in your favor.

Of course, we can't really know if you developed the feature yourself or paid someone on Fiverr to do it for you, so for the next stage of the interview we will ask you to invert a data structure on a whiteboard. None of us knows how or cares enough about what you're doing, so we'll pretend to not like random things about your solution until you're on the verge of tears, to evaluate how you fare against the ever-changing requirements that come with bad leadership.

If you pass the whiteboard interviews without cracking, we'll introduce you to everyone on the team, making sure you have at least eight hours of one-on-one time with various staff members, often more than once. This is just so we get to know you better and see what you're like in social situations.

After wasting a few days of your time and ours, we'll finally adjourn and haphazardly email each other about you, mostly trying to remember which applicant you were from flaws in your appearance. We'll then round up all the notes and observations from your technical interviews and summarize everything we know about you into one list.

For the final decision, we'll look at the list and evaluate you purely on your technical merits, trying to confirm the judgment that we've already subconsciously formed based on how much you are like us. If you are too different, we're sorry, no matter how good you are technically, we'll pass. In this company, we value one thing above all others: Diversity.

Apply today!

If the above sounds appealing, excellent! Reach out to us at [email protected] to get the ball rolling, and you might soon be "working" for the best image host in the world, IMGZ!


The architecture of IMGZ

Posted on .

Every day at work, hundreds of customers ask us "can I get a large cappuccino?". Later, we go home and use the money to narrowly avoid starvation while working on IMGZ, the best image host, in true Silicon Valley spirit. We thought that some of the architectural challenges we faced while building the service would interest others, and decided to write about them to help our readers and change the world.

If you aren't familiar with IMGZ, it's an image host with a twist: You pay to host images, thus ensuring that we always have your best interests in mind and won't turn into a social network. In essence, we flip the traditional "startup giving away VC money to users" on its head, and take money from users. If that sounds good to you, you can sign up on our home page and we'll only be mildly surprised.

At IMGZ, we're passionate about two things: Serving images, and speaking about ourself in the plural so it doesn't look like it's the one-man sideproject it is, and we don't even really care about serving images that much. Today, though, we're going to talk about the former, and take a deep dive into the technical details of serving more than one million bytes of images per day while maintaining the elusive "nine fives" reliability guarantee we're loved for and usually uphold.

Architecture deep-dive

Our architecture is pretty simple, a fairly run-of-the-mill, scrappy-startup SaaS architecture which you've no doubt seen countless times before:

Architecture diagram

While designing the IMGZ storage and serving model, we wanted scalability and reliability to be our foremost concerns. After months of designs and grueling research, we ended up designing a Kafka-based georeplicated image processing pipeline over a multitenant, distributed, resilient microservices architecture, where metadata about each image is kept in a georeplicated MongoDB instance, and with images themselves stored in DynamoDB on AWS, ensuring scalability and low latency.

When we realized we didn't have investors to impress, we trashed that plan, as it sounded like too much work. We realize that architecture design nowadays is mostly aspirational, but at some point a startup needs to come to terms with the fact that it doesn't have ten million users right now, it probably won't have ten million users soon, and it'll likely never have ten users. Instead, we stored the images in a small Postgres database (yes, the actual image data itself), with a small Django app handling the business logic. Sexy.

When the user uploads an image, we process it, create thumbnails for displaying in various views of the website, and store it along with its metadata in the database, at least in theory. When a user requests the image, the request first goes through our CDN, which fetches the image from our server and then caches it forever, so each image is only served by us at most once. For our CDN (for serving, caching, georeplication, etc), we use CloudFlare's free tier, which is excellent. We ensure that we'll always remain in the free tier by providing a paid service nobody would actually ever pay for.

The hardware

This is the heart of IMGZ:

Servers

Images, just like the one above, are the heart of our service, but let's not digress. The hardware is a $5/mo Hetzner VM that serves ~10 other projects, so it's pretty beefy. As our favorite proverb goes, "you don't need lots of resources when all your content is static and you can get someone else to serve it for free".

We're pretty confident in our ability to scale our infrastructure in the event that more users join the service, as our VPS provider has a button we can press to make the server larger, solving all scalability problems once and for all.

Moral of the story

This article was a bit boring, wasn't it? That's by design: Your architecture doesn't have to be exciting to work, especially in the early stages of a company. Doing the easiest thing that works (taking care not to paint yoursellf into a corner) is often the best way to start, since you usually don't even know where you'll end up.

To summarize, our architecture follows the tried-and-true Silicon Valley approach: Build the simplest thing you can, by piggybacking off of everyone's free tier, while they hope you one day become successful and pay them exorbitant amounts of money in return. The strategy to outsmarting them is simple:

Just make sure you never succeed.