June 28th, 2024

Serving a billion web requests with boring code

The author shares insights from redesigning the Medicare Plan Compare website for the US government, focusing on stability and simplicity using technologies like Postgres, Golang, and React. Collaboration and dedication were key to success.

Read original articleLink Icon
Serving a billion web requests with boring code

The article discusses the author's experience working on a project for the US government to redesign the Medicare Plan Compare website, helping millions of users find and purchase health care plans. The project aimed to provide a reliable and efficient system, handling around 5 million requests daily with minimal errors. The author emphasizes the use of "boring" technologies like Postgres, Golang, and React to ensure stability and simplicity. Key aspects of the project included a modular backend design, gRPC communication, strict backwards compatibility, faceted search using Postgres, and a meticulous approach to database management. Despite challenges with technologies like React and gRPC, the project successfully served its purpose. The team's dedication and collaborative spirit were highlighted as crucial factors in the project's success. The author advocates for the effectiveness of quality software development under government constraints and emphasizes the importance of choosing reliable technologies for long-term projects.

Related

Interface Upgrades in Go (2014)

Interface Upgrades in Go (2014)

The article delves into Go's interface upgrades, showcasing their role in encapsulation and decoupling. It emphasizes optimizing performance through wider interface casting, with examples from io and net/http libraries. It warns about complexities and advises cautious usage.

My weekend project turned into a 3 years journey

My weekend project turned into a 3 years journey

Anthony's note-taking app journey spans 3 years, evolving from a secure Markdown tool to a complex Electron/React project with code execution capabilities. Facing challenges in store publishing, he prioritizes user feedback and simplicity, opting for a custom online deployment solution.

Supabase (YC S20) Is Hiring Postgres SREs

Supabase (YC S20) Is Hiring Postgres SREs

Supabase seeks a Site Reliability Engineer to manage Postgres databases remotely. Responsibilities include enhancing reliability, ensuring high availability, and optimizing performance. Ideal candidates possess multi-tenant database experience, Postgres tools proficiency, and AWS deployment skills. Benefits include remote work, equity, health coverage, and tech allowance.

gRPC: The Bad Parts

gRPC: The Bad Parts

gRPC, a powerful RPC framework, faces challenges like a steep learning curve, compatibility issues, and lack of standardized JSON mapping. Despite drawbacks, improvements like HTTP/3 support and new tools aim to enhance user experience and address shortcomings for future success.

Common Interface Mistakes in Go

Common Interface Mistakes in Go

The article delves into interface mistakes in Go programming, stressing understanding of behavior-driven, concise interfaces. It warns against excessive, non-specific interfaces and offers guidance from industry experts for improvement.

Link Icon 7 comments
By @fatnoah - 4 months
In the late 2010's, my startup built a messaging app with millions of daily users sending and receiving >1B messages a month, (somewhere north of 300 messages/sec, IIRC) with a trailing 12 month average uptime of our systems of 99.995%

When we were going through due diligence as part of being acquired by a large tech company, I had to answer a lot of questions about our infrastructure and to "prove" that our boring tech stack could actually achieve this.

That "stack" was 3 pods (2 in one AWS region, 1 in another) comprised of 4 Linux boxes and 3 Windows boxes.

In a stack, Linux boxes were 2 monitoring servers and 2 app servers running an OSS SW package, while the Windows boxes were two app servers running our .NET APIs, and a SQL server.

Fail over was handled by SQL cluster at DB level and ELB at the app level.

While the stack and code were boring, a lot of work went into performance, reliability, and observability.

After we were acquired, my new infra budget was based on their own modeling for scale, resulting in a monthly AWS budget that was 10X my previous annual budget.

By @aegypti - 4 months
I wonder if it’s possible for this to get resubmitted, or given another chance. We often see these “boring” tech write ups, but very rarely applied to something like healthcare.gov.

With hindsight, I’m curious which of the other choices made would have changed the most with a multi page architecture, and have you discovered a cleaner way of avoiding it? Struggling with something similar at the moment.

By @gregors - 4 months
Talks about boring code, then immediately introduces a completely modern stack that most developers would love to use including grpc, gateways, rds, s3, ec2, testing, separated services & databases, mocking frameworks...

There's nothing boring about this, it's unfortunate that they took to name this "boring code".

Aside from this, the actual implementation details are quite interesting and worth a read. A better title would be "lessons learned using a modern stack for healthcare.gov"

By @tiffanyh - 4 months
Using such new technology seems anything but “boring” to me.

React was only 5-months old, and Go was only 4-years old, when healthcare.gov was launched.

First released:

- Go (Nov 2009)

- React (May 2013)

- Healthcare.gov (Oct 2013)

https://en.m.wikipedia.org/wiki/Go_(programming_language)

https://en.m.wikipedia.org/wiki/React_(JavaScript_library)

https://en.m.wikipedia.org/wiki/HealthCare.gov

EDIT:

I missed this in the article:

> There are many valid criticisms of react; this piece is an example, and I was aware of the issues already in 2018 when I was building the site.

By @pizzafeelsright - 4 months
How is that a billion?

5MM a day is 150MM a month.

Is this a year? That's 1.3B

I generally measure the per second rate. Per millisecond can be mathed quick enough for conversational calculations.

By @frays - 4 months
A better title would be "lessons learned using a modern stack for healthcare.gov"

Very interesting post, thanks for sharing.