We use a combination of Nginx and HAProxy as reverse proxies and load balancers, to satisfy the Venn Diagram of features we need. Recently we turned up CloudFlare for application traffic as well - primarily for DDOS protection but we’ve been happy with the performance gains. We now serve static assets using CloudFlare, though we send 5% of traffic to Fastly and 5% to CloudFront to keep their caches warm should we need to cut over in an emergency. Personally, I’m a fan of using opinionated languages in a team environment it improves consistency, reduces ambiguity, and ultimately gives you less rope to hang yourself. We like the type-safety without the verbosity and JVM tuning of Java. We’ve found Go very easy to build, package, and deploy. We have several auxiliary services written in Go. We’ve also hooked into the V8 runtime to get insights into what ticks are taking a long time generally it’s due to object reification during JSON deserialization. To alleviate this, we run multiple instances per machine and route expensive endpoints to specific instances, thus isolating them. Node has worked pretty well for us, but performance problems have emerged where we block the event loop.
#POSTVIEW INTEGRATION PINTS OR NODES CODE#
Our main app servers are still written in Node, which allows us to share code between server and client, something we use quite heavily with the editor and post transformations.
The primary choice as to whether to deploy a separate service is the specificity of the work it performs, how likely dependent changes are to be made across service boundaries, and the resource utilization characteristics. We have a service-oriented architecture, running about a dozen production services (depending on how you count them and some more micro than others).
We use Ansible for system management, which allows us to keep our configuration under source control and easily roll out changes in a controlled way. We are on Amazon’s Virtual Private Cloud. It’s just a blog, right? You could probably knock something out using Rails in a couple of days. For a site as seemingly simple as Medium, it may be surprising how much complexity is behind the scenes.