Site Reliability Engineer, Heroku
Site Reliability Engineer, Heroku
Location: US Remote
*We are a highly distributed team looking for candidates comfortable working remotely.
About Heroku SRE
Heroku, a subsidiary of Salesforce, operates the world’s largest Platform As A Service (PaaS), continuously delivering millions of apps with a high volume of deploys per day. Heroku's vision is for developers to focus on their applications and leave operations to us.
We are writing our team charter and we're looking for engineers who are interested in joining that effort. This is not an established team - you will be among the first people to implement this job role at Heroku. Because the team isn't established, we'll be looking to you to help define how the team should get work done and how it will communicate with other teams in the engineering org, so it will help if you're interested in the human communication problems of engineering.
What's this job like?
This job is open to people anywhere in North America (the United States and Canada). You can work at a Salesforce office or work from home. Because the team is just getting started, here's what we can say so far:
Currently, we're helping development teams to develop Service Level Objectives (SLOs) for parts of the platform where they don't currently exist and defining minimum standards for service health metrics
Next, we will define the SRE Entrance process that development teams follow in order to hand off the operation of a production service to the SRE team
The team will be on call for multiple production services, once they have gone through the SRE Entrance process. This includes:
Responding to pages generated by automated monitoring and alerting
Responding to pages created manually by other engineers and support personnel
Joining an incident response team as a Subject Matter Expert and working with other SMEs and an Incident Commander to resolve the issue (we'll train you for this)
When the team is more established, our goal is a 50% focus on engineering activities. Likely projects include:
Automated data and service management tooling
Instrumenting for observability for troubleshooting
Hardening for resilience in the face of operational events and customer behavior
Who are you?
We’re looking for people who are interested in complex distributed systems- how they work, how they can work better, how we even know if they’re working at all. We need someone who's spent time working as a developer (writing code with a team to fix operational issues or build features), but who has also spent time on operational concerns (investigating production incidents, creating or updating monitoring and alerting plans for production systems, or investigating performance issues, for instance).
You don't need to have “SRE” in your job title in order to have appropriate skills for this position. You might come from a DevOps environment or have been one of a handful of engineers in a shop so small that everyone does a little of everything. The important thing is that you have experience in both writing code and maintaining systems, and that you're willing to do both of those things in the future. If you're stronger in one area than the other, that's okay.
Be sure to read or skim the Site Reliability Engineering book, which we are modeling our team structure around.
Experience with complex distributed systems and familiarity with how the internet and web applications work. You don’t have to have built a datacenter or run a large cloud service at a major provider, but you do need to have used cloud services. Running LAN infrastructure or doing client-side system administration is not enough for this role.
Willing to join an on-call rotation that you would participate in defining.
Willing to work on a distributed (currently all-remote) team spanning multiple time zones. None of us currently lives in the same place or works out of the San Francisco headquarters; all of us are experienced remote workers.
Comfortable reading and writing code with a team in at least one of Ruby, Go, Python, or Erlang. It's fine if you know more than one of those languages and/or other languages, but they are the four most important languages at Heroku. We need people who are comfortable with them, and open to switching between them.
How do I know if I should apply?
If you have experience with any of the following topics, you should apply!
Containers and container management technologies such as lxc, Docker and Kubernetes
Experience with AWS services like EC2, ELB, DynamoDB, S3 (or their Azure or GCP equivalents- OpenStack experience is fine too)
Databases and big data stores, especially Postgres or Kafka
Load balancing technologies, including L4 or L7 routing and CDNs
Monitoring, instrumentation, or observability
Standard parts of a web app's stack, such as TCP/IP, DNS, HTTP, etc.
Cloud computing patterns (and how they're different than using hardware)
Infrastructure as code (Terraform, Chef, Puppet, Ansible, CloudFormation, etc)