Medium's Technology Stack
medium.com
medium.com
I just love these made-up PR metrics that can make any audience look big or any business seem successful.
Really, if you write a post about infrastructure you shouldn't have a metric that say absolutely nothing about your site's load. 25 millions unique readers per month is more fitting, but still quite lacking (too big a timeframe and no way to infer how many pageviews there are).
I'm so glad the author added that line, signalling his credibility. I'm even more impressed by Medium's stack when I know the guy responsible for it skydives. The coolness of this dude is overwhelming me now.
> Where the quality of the idea matters, not the author’s qualifications.
It is then followed by the paragraph you talk about, specifically meant to showcase the authors's qualifications.
Also, the original interview had this section as multiple questions; it was collapsed into a single paragraph during editing.
I'm happy to ignore the stories and skip over them but to me that's not the point. Is someone gaming the system? Is Medium a HN subsidiary of some sort? Has anyone done an analysis of how these types of stories get onto HN in the first place? Are Medium stories really that interesting that there's at least one Medium story worth posting on the front page of HN a day?
You may be underestimating the sheer quantity of articles people post from there (dozens a day), as well as the diversity of topics in them. I took a quick look and the 6 most successful medium.com posts from yesterday were all technical. (You can check this for yourself by clicking on the domain name next to the story title, which shows you all the posts from that domain.)
I like a lot of the medium stuff that's posted and it's one of the nicest in browser reading experiences around.
I once tried writing a story on Medium, and their editor is pretty amazing. In addition, stories on Medium do look nice and better than a significant share of Wordpress and friends themes. I'd assume that some people also publish on Medium hoping for some extra traffic driven by Medium.
So Medium could be just summed up as 'it just works'.
For a site as seemingly simple as Medium, it may be surprising how much complexity is behind the scenes. It’s just a blog, right? You could probably knock something out using Rails in a couple of days. :)
This hints that there is a lot more functionality being put up behind the scenes in terms of datamining and analysis and whatnot than is apparent from the simple "display an article", which indeed is a trivial Sinatra or Express (not even Rails!) app.
If you're not the customer, etc. etc.
In terms of "display an article" I'd encourage you to think about what that entails for a platform like ours, it's actually a pretty interesting problem space: near-WYSIWYG editing across 3 platforms, post model vs. HTML (hint we don't store HTML), operational transforms, version history, typographic treatments, copy/paste normalization, ingestion API, etc. It's not rocket science, but it's deeper than you might think at first blush.
The additional stuff you mentioned here--all of the annoying fiddly details for editing and whatnot--is exactly what should've been used to justify the stack.
The problem is that all of the extra stack baggage frankly looks really baroque, even with the trickiness of the UX you just hinted at.
My background: I'm a very strong iOS engineer with decent Python and JS skill. However my backend skill is limited at: building a Flask app with custom end points. It will talk to a single sql instance. I'm completely oblivious to memcache, load balancer, different AWS services. My plan is (surprise surprise) to quit my day job next year to pursue my own project and I would like to gather enough best practice and understanding of a full stack app.
Thank you!
It explains some of the steps between "web app and database" and a crazy interconnected diagram of various acronyms.
If you are building a new service, and doubly so if you are new to web application, you want to build your system with a minimal set of moving pieces. Nginx as a webserver, Flask or Django for you application, and MySQL or Postgres for your database will get you very, very far, and likely remain the be the core of your stack.
Again, you can go very vary with a simple stack. Heck, I've served a very dynamic website to front page of Wired traffic off of single small physical server, PHP/MySQL with no caching. (Caching is great though!)
Avoid as the plague, Docker, unless you know why you needed it. Docker adds complexity, and unless your setup is large enough to benefit more than then costs, then your life has gotten worse and not better. And you've wasted a lot of time. Repeatable server build setups are great though - Ansible or even a good shell script.
Application/Server monitoring is a good thing. Datadog and NewRelic are good choices here.
Although you will one day hit a wall, scaling to bigger hardware is tremendously easier, (and probably cheaper) than building a big distributed system. Don't underestimate just how much more powerful a full, real, physical server can be than a $20/month cloud server.
When you do need to scale out, listen to your application and scale out just what you need too.
Just wanted to add something here. Docker is great when you dont want to do setup work for a service or install unwanted software on your machine when you know it will only be used by that app. For eg - if your app used redis, you can just start a redis instance with 2 docker commands. Rather than downloading and installing it on your system.
You do not always need to dockerise your apps, you can use docker containers for dependencies too. I find it pretty nice.
When someone else is paying for it, it's a huge amount of fun. If you're paying for it yourself, eliminate as many layers of the 'stack' as you can get away with.
I've never worked on large-scale services, but I'm a fan of articles and talks on scaling. Is there any reason why I often read about JVM tuning, but never come across V8 tuning, or Go runtime tuning or CPython tuning?
> For a site as seemingly simple as Medium, it may be surprising how much complexity is behind the scenes. It’s just a blog, right? You could probably knock something out using Rails in a couple of days. :)
> In past lives I’ve raced snowboards, jumped out of planes, and lived in the jungle.
Looking past the annoying, "look how cool we are" tone, I do appreciate their sharing what they use.
Glad you took something from the post though.
EDIT: “On the web we want to stay close to the metal.”
They in fact could have solved this problem with Rails or even a more full-fledged CMS like BrowserCMS.
nodejs and Go on the backend , with DynamoDB
clojure on the front end with their own SPA framework.