HN user

hassy

1,235 karma

SRE, open source developer, founder - artillery.io (YC S21)

Artillery - test everything you build & run in the cloud.

We're hiring! join us to help build the future of testing for DevOps.

https://www.artillery.io

Twitter: https://twitter.com/hveldstra

Email: h@artillery.io

Posts21
Comments220
View on HN
news.ycombinator.com 3y ago

Show HN: Open-source load testing on AWS Lambda. With built-in cost reporting

hassy
12pts2
docs-nine-inky.vercel.app 4y ago

Blitz it with Lambda. Open-source distributed load testing with AWS Lambda

hassy
1pts0
news.ycombinator.com 4y ago

Show HN: A Swiss army knife for testing HTTP from the terminal

hassy
110pts42
news.ycombinator.com 4y ago

Show HN: Load Testing with Playwright

hassy
13pts7
www.artillery.io 4y ago

Launching thousands of browsers for fun and profit

hassy
1pts0
github.com 4y ago

Show HN: Load Testing with Real Browsers

hassy
1pts1
github.com 10y ago

Show HN: Chaos Llama – Chaos Monkey Build on AWS Lambda

hassy
12pts0
artillery.io 10y ago

Show HN: Artillery: multi-protocol load-testing tool written in Node.js

hassy
8pts0
veldstra.org 10y ago

Show HN: Load testing with AWS Lambda

hassy
6pts3
veldstra.org 12y ago

Heroku WebSocket performance

hassy
66pts24
zkombinator.com 14y ago

Z Kombinator

hassy
43pts22
kevinlawler.com 14y ago

How to get a Knuth cheque

hassy
48pts8
news.ycombinator.com 16y ago

Hacker News Meetup Netherlands

hassy
17pts5
www.skytopia.com 16y ago

Mandelbulb: The Unravelling of the Real 3D Mandelbrot Fractal

hassy
200pts23
news.ycombinator.com 16y ago

Scott Wheeler (wheels) talking about DirectedEdge 12:30 PDT/3:30 EDT (ish)

hassy
20pts0
vidiowiki.com 16y ago

Shinichiro Hamaji, winner of ICFP '09 Programming Contest, prefers C++

hassy
12pts4
12monkeys.co.uk 17y ago

Erlang is pragmatic

hassy
21pts14
12monkeys.co.uk 17y ago

The future of Lisp...

hassy
42pts47
12monkeys.co.uk 17y ago

My notes from Doug Richard's (Dragon's Den) School for Startups

hassy
4pts0
12monkeys.co.uk 17y ago

Coffee shop programmer

hassy
36pts32
hypernumbers.com 18y ago

Using Erlang in a web start-up [PDF]

hassy
16pts0

This is a great blog post! just taking the opportunity here to comment on this:

Finally for full scale high fidelity load tests there are relatively few tools out there for browser based load testing.

It exists as of a few months ago and it's fully open source: https://github.com/artilleryio/artillery (I'm the lead dev). You write a Playwright script, then run it in your own AWS account on serverless Fargate and scale it out horizontally as you see fit. Artillery takes care of spinning up and down all of the infra. It will also automatically grab and report Core Web Vitals for you from all those browser sessions, and we just released support for tracing so you can dig into the details of each session if you want to (OpenTelemetry based so works with most vendors- Datadago APM, New Relic etc)

Don't write your own load testing tool other than as a fun little exercise. At least not without understanding coordinated omission and thinking about workload modeling (open? closed? hybrid? all of the above?) [1]. Get this wrong and the results produced by your tool will be worthless.

Once you've got that out of the way, don't forget that you'll want a distribution story. It does not matter how efficient your tool might be on a single machine - you'll want to distribute your tests across multiple clients for real-world testing.

"Sure it's easy" you might say, "I know UNIX. Give me pssh and a few VMs on EC2". Well, now you've got 2 problems: aggregating metrics from multiple hosts and merging them accurately (especially those pesky percentiles. Your tool IS reporting percentiles rather than averages already, right?!), and a developer experience problem - no one wants to wrangle infra just to run a load test, how are you going to make it easier?

And, this developer experience problem is much bigger than just sorting out infra... you'll probably want to send the metrics produced by your tool to external observability systems. So now you've got some plugins to write (along with a plugin API). The list goes on.

I'm very biased, but it's 2024. Don't waste your time and just use https://www.artillery.io/

1. https://www.artillery.io/blog/load-testing-workload-models

Did YC S21 which was an all remote batch. my 2c.

YC is 100% what you make of it. It's not a lean back experience.

I did not meet most of the companies in my batch but I've gotten to know many founders through YC that I would not have otherwise. Founders that have been source of advice and support.

Network of clients - yep don't go into YC expecting to sell to other YC cos. It is easier to get warm intros through the network though.

YC advice, office hours specifically - it's what you make of it too. Expecting a group partner to know your space in great detail is unreasonable but if you recognize that they've seen hundreds of companies with similar problems and make use of that pattern matching, you can get very valuable advice. Some of the advice I did not take and did the opposite and it was the right decision. And some advice that I did not take was exactly right, but I only saw it in retrospect months later.

Fundraising - being a YC company definitely opens doors, and also helps protects you from bad actors who have to think twice before fucking with a YC co. Very valuable for any first-time founder. You have someone to sanity-check everything, terms you're not sure about etc. The bump in valuation is real too.

I'd do YC again in a heartbeat.

Yes indeed but wrk2 or Vegeta is still better for this particular use case (unless k6 has support for setting a constant RPS rate, afaik it does not), as otherwise the overhead of establishing a new TCP connection for a single HTTP request will dominate the benchmark.

Bombardier is cool, but serves a very different use case.

I mentioned elsewhere in the comments that we have a Docker image, and are working on other methods of installing the CLI to alleviate some of these dependency-related concerns.

Getting side tracked here, but there seems to be a common sentiment when it comes to Node.js that it's uniquely insecure. Node.js has indeed had some unfortunate press when it comes to supply-chain security, but every other runtime is susceptible to those attacks (PiPy, Gems, Maven, Rust Crates). Ultimately of course, if you choose to avoid using any software built on top of those stacks, that's your choice.

Artillery specifically is no different to any other Node.js-based project in how large the dependency tree is. VSCode for instance is used by millions of developers has 1.6k dependencies [1].

1. https://github.com/microsoft/vscode/network/dependencies

Yes, those dependency trees can be large. Yes, supply chain attacks are a real threat. But Node isn’t that different than Python or Ruby in that regard. How far down the stack do you personally choose to go? I trust you’re familiar with that famous paper published by a certain mr Thompson in the mid-80s?

The world is a big place. There’s a lot of software out there written in Node.js, used happily and productively by millions of developers, many of them in corporate environments.

Given the opinions you expressed elsewhere in the thread here I think it’s clear that this tool is not for you. I hope no one is forcing you to use it.

thanks for trying it out! adding “make timeouts configurable” to the todo list.

you’re right on that YAML-as-JSON thing. If everything is quoted as JSON, those type conversions shouldn’t kick in. Otherwise there’s room for surprises - perhaps we can do something to make those cases more obvious.

“mini” in the sense that it doesn’t do everything that curl does. curl does a whole lot. this tool focuses on more common use cases and makes them friendlier. plus with request waterfalls and assertions it does things curl can’t do.

the number of packages is a bit of a misnomer anyway. Artillery Probe is part of Artillery which does load testing, with multiple protocols, support for multi-step scenarios, publishing to a variety of monitoring systems (Datadog, Prometheus etc) and more. That’s what most of those packages enable.

Yeah so the JSON quoting part is something I’m pretty pleased with. We use a YAML parser (JSON is a subset of YAML) to parse those values, which is what allows for double quotes to be omitted.

Good point on iterating on the query! We already save the body into a temp file, so we can make Probe be able to run queries on a file. Adding it to the todo list. :)

(In my own workflow I use gron a lot for getting an overview of the shape of unfamiliar JSON, super handy tool)

As to an interactive shell… yes, 100%. Kicking ideas around something like that as well!

curl is amazing! I love curl. This is not meant to replace it completely. Probe just makes those most common use-cases friendlier, like looking at headers, or inspecting JSON retuned by an API with syntax highlighting, or querying without needing to reach for jq etc.

if you’re on a Mac, Artillery has a Homebrew formula too. We have an official Docker image too. Other ways of installing are on the roadmap too (self contained tarballs and binaries).

As to what it does better than curl/wget. Probe is geared towards interactive use with HTTP APIs. So you get syntax highlighting and pretty printing for JSON, built-in querying, request waterfall visualizations, and ability to set expectations on every response.

HTTP/2 is supported.

Artillery (YC S21) | Full-stack Product Engineers | Full-time | Remote (GMT±4)

We're building a modern performance testing platform for DevOps & SRE.

Today, we make it easy to run planet-scale load tests from your own AWS infrastructure. Developers love Artillery because it's modern and comes with batteries included. SRE & Platform teams love Artillery because they can provide a self-service load testing platform to developer teams. Security teams love Artillery because it runs in your own VPC with no data leaving your AWS environment.

We love, love, *love* load testing, and have a lot (like, A LOT) of new ideas to shake up the space, but the Big Vision is much bigger than load testing. The state of testing tools for today's complex production systems is pretty lacklustre. We'd like you to join us to help us build a better future.

$110-$125k + equity, remote anywhere in GMT±4.

More here -> https://www.artillery.io/blog/artillery-hiring-product-engin...

Hello HN! Hassy from Artillery.io here. Load testing complex web apps is no walk in the park. If you've ever had to do it, you know. Traditional load testing tools are designed to work with API endpoints, whereas the concept of pages is a more natural way of thinking when testing web apps. A page may make calls to multiple endpoints, some of which may depend on in-page actions (and even in-page Javascript). Whereas APIs usually have specs (e.g. OpenAPI), pages usually don't. Trying to track it all down in something like Chrome DevTools can take ages. It's a mess.

So we thought, why not try load testing with real browsers instead? Especially if we can reuse existing E2E testing scripts we may already have? (based on Playwright) Playwright gives us an excellent API to run headless Chrome, and a way to record test scripts with "playwright codegen". Couldn't we try running thousands of browsers that way?

Turns out we can. :) That's what this project does. It's super early days, and I'd love any thoughts or feedback!

Member of team artillery.io here, my 2c on the subject. We chose MPLv2 specifically to address licensing concerns. With MPLv2, you can build on top of Artillery, you can build plugins and extensions for it, and integrate it into your systems without worrying about licensing. It's a well-understood license with very clear boundaries between your code and MPLv2-licensed dependencies (e.g. all Hashicorp tools use MPLv2).

That's unfortunately not the case for AGPL. There's a reason a lot of companies have policies banning any AGPL dependencies outright, Google probably being the most prominent example: https://opensource.google/docs/using/agpl-policy

AGPL is designed to be extremely viral and has not been tested in court. The definitions of boundaries between your code and AGPL-licensed code are not well understood. Consider that MongoDB, probably the most popular AGPL-licensed project in use before 2018 when they switched to SSPL, had to explicitly publish their drivers under Apache because communicating with an AGPL dependency over a network was not sufficiently distant enough to prevent infection. https://www.mongodb.com/blog/post/the-agpl

As engineers we need to be aware of licensing implications of code we depend on. I am obviously not a lawyer, and obviously your employer's legal team are the people you should be talking to if you have an absolutely critical dependency on an AGPL-licensed project.

Artillery team member here. "Rather pricey" really depends on what you compare it to. Artillery Core is free. Artillery Pro costs money, but it runs directly in your cloud environment, so it's extremely cost effective compared to hosted SaaS solutions. We designed it for large-volume use, especially in CI/CD pipelines. There are no limits on test minutes, vuser concurrency, number of tests you can run etc.

Can you DIY a solution that will let you instantly scale up from running tests locally to running them on 500 workers in any of 13 different geographical regions? With no servers to manage or maintain whatsoever. Sure you can, but it's not the best use of time for a lot of teams.