Summary
Join Censys as a Distributed Systems Engineer to build highly-available and scalable, data-driven services. You will design and build services powering existing and future products, build and extend large-scale, real-time streaming services, and leverage various software architectures. The role involves working with a polyglot codebase, including Scala and Go, and requires experience with message queue technologies and distributed databases. You will design automated solutions for building, testing, monitoring, and deploying data streaming pipelines. Censys offers a competitive salary, bonus eligibility, equity, and comprehensive benefits starting day one.
Requirements
- 5+ years of software engineering experience writing distributed and streaming applications
- Familiarity with functional programming and reactive programming techniques
- Familiarity with object-oriented programming techniques and languages such as Go, Rust, or Python. Go is highly preferred
- Experience with message queue technologies such as Kafka, Google Pub/Sub, AWS Kinesis and delivery semantics such as Exactly-once and At-least once
- Proficiency with distributed databases, such as BigTable, Cloud Spanner, HBase, Cassandra, with an understanding of trade-offs on consistency, durability, and replication of using such technologies
- Ability to build horizontally scalable systems, with a high degree of availability and fault-tolerance leveraging techniques such as distributed locking, load-shedding, etc
- Design automated solutions for building, testing, monitoring, and deploying data streaming pipelines in a continuous integration environment
- Interested in solving problems, not completing tasks
- Ability to write understandable, testable code with an eye towards maintainability
- Have strong communication skills and can explain complex technical concepts to other engineers, designers, and product managers
Responsibilities
- Design and build services that power existing and future products at Censys by continuing to improve and expand our Internet Map
- Build and extend large scale, real-time streaming services and applications which leverage our massive datasets to power internal product APIs and external applications
- Leverage a multitude of software architectures and techniques, including messaging queues, eventual consistency semantics, distributed locking, clustering, CQRS, and others
- Interface with a polyglot codebase, including working with existing Scala and Go applications
Preferred Qualifications
- Familiarity and comfort working in a Linux based environment
- Familiarity with a service-oriented architecture with both synchronous services using gRPC or REST to coordinate and communicate between services and systems, and asynchronous services using message queues to coordinate and process large amounts of data
- Familiarity with data serialization technologies such as Protobuf, MessagePack, etc
- Experience building, deploying, and maintaining containerized services in a Kubernetes based environment
- Experience working with cloud-native technologies and environments, such as AWS, GCP, or Azure
- Collaborate and communicate well with other engineers working on related systems
- Enjoy technical architecture discussions and want to drive technical decisions within your team and across the entire engineering organization
- Continually improve skills, technical approaches, and familiarity with new technologies to help contribute to the success of the company
Benefits
- 401k match
- Health
- Vision
- Dental
Disclaimer: Please check that the job is real before you apply. Applying might take you to another website that we don't own. Please be aware that any actions taken during the application process are solely your responsibility, and we bear no responsibility for any outcomes.