Software Engineer (Platform)
Full time, onsite or remote, multiple positions
Have you deployed, monitored, and debugged applications, databases, and other infrastructure across cloud providers? Are you passionate about root causing problems and creating automated solutions? Shoreline is hiring platform engineers to build an elegant, transparent abstraction layer on top of multiple platforms including AWS, GCP, Azure, VMware, and Kubernetes.
What you'll be doing
- Designing an elegant abstraction layer for multiple cloud platforms such as AWS, GCP, Azure, VMware, and Kubernetes and implementing the abstraction layer as an Elixir library. You'll strive to build abstractions that capture the capabilities of each platform without imposing the limitations of one upon another. This is a vast task: abstractions must be created for virtual machines, networking, storage, and all other resources.
- Working with others to implement a library of cloud components such as queues, autoscaling, and warm pool components.
- Own the reliability, fault tolerance, scalability, and performance of the Shoreline product.
- Own the CI/CD of Shoreline across multiple platforms including debugging production issues.
You'll use standard software development best practices such as version control and participate in software development processes such as code and design reviews.
We pay competitively. While this position can be remote, you may be asked from time to time to travel to and work from the main office located in Redwood City, CA.
What you should have
- Expertise in at least two platforms including AWS, GCP, Azure, VMware, and/or Kubernetes.
- Experience performing DevOps at scale including debugging production systems.
- Deep knowledge of linux internals and system administration. You should know your way around the shell.
- An understanding of networks including protocols and devices.
- Expertise in at least one programming language.
- Verbal and written English fluency.
- Expertise with version control and writing tests.
- Experience with Elixir / Erlang & OTP or another functional programming language.
- Deep knowledge of Erlang's VM, BEAM.
- Knowledge and usage of databases, streaming systems, and other common stack components.
- Familiarly with infrastructure as code tools such as Terraform.
- Experience with deploying to bare metal / data center operations.
How To Apply
If interested, please design and implement a solution to the following problem. Email the solution (attach or include link to repo/gist) and a resume to firstname.lastname@example.org. Please include "Software Engineer - Platform" in the subject of your email.
Alternatively, you can apply directly on our job board.
Please complete the solution to the following problem in the language of your choice.
Design a data structure to represent a allowing or denying traffic by CIDR block and port range. Describe this structure in the comments of your code.
Implement a function that takes a set of your structures and a target cloud platform and applies these rules to the network environment of that platform. Please implement your solution for two of the following platforms: AWS, GCP, Azure, VMware, or Kubernetes.
Please include answers to the following discussion questions as comments in your code:
- How do you map the network rules to each platform i.e. how are the rules applied on each platform and to what types of resources on that platform?
- What are the differences between the platforms from a networking perspective? How does this impact your ability to create an abstraction across the platforms?
- How fine grained do you provide control over network flow? How would you go about extending this for finer grain control? Per instance? Per group? Per network?
If you have any clarifying questions, please email: email@example.com
- Submit your solution and resume to firstname.lastname@example.org
- Informational phone screen where we can get to know each other, ask/answer any questions, and evaluate fit (0.5hr).
- Technical phone screen with live coding (1hr).
- Final round of technical interviews with the team, live coding and other questions (~4hrs).
We will get back to you promptly after each step in the process.