Software Engineer (Go)

Remote
Engineering – Infrastructure Team /
Full Time Contract /
Remote
About Us 

Aurora Labs is the development company behind Aurora—the EVM blockchain that runs on the NEAR Protocol. We are also the developers of, and integration partner behind, Aurora Cloud—a suite of products that allow Web2 companies to capture the value of Web3.

We invite you to be a part of our team of smart, professional, result-oriented and fun individuals. Join us to help ensure that our background processes run smoothly while we are striving to become the best in the industry.

About the team

Our infrastructure team is responsible for building and supporting critical systems required for running and accessing NEAR and Aurora networks. That includes everything on the path of RPC requests before they hit the blockchain and block production and event delivery once transactions are executed.

Load balancing, caching, queueing, transaction simulation and block production is processed by the services written and maintained by the infrastructure team. These services operate at large scale and process terabytes of data. The platform is based on open-source software, such as Kubernetes, NATS, Jetstream, Blockscout, Grafana, Postgres and Near-core, alongside a few internally developed services.

All internally developed services are written in Go and implement core pieces of functionality such as Mempool management, NEAR chunk distribution, transaction pre-processing and simulation.

About the position 

This role is split between two responsibilities: software engineering (80%) and site reliability (20%).

Software Engineering projects include:

- Shield - a security service to protect users from making errors or executing malicious transactions.
- Mempool - a system to store/reorder transactions before they can hit the blockchain.
- Relayer - translates RPC calls on the read and write path from the end user.
- Explorer - Blockscout-based system that provides a user interface.
- Aurora Cloud - a system to automatically provision multiple infrastructure stacks for Aurora Engine.
- CLI tools for pubsub and streaming infrastructure operations.
- Indexers and blockchain event aggregation pipelines for monitoring purposes.

Reliability Engineering includes:

- Automating configuration and maintenance of software components such as K8s, NATS, Influxdb, Postgres, Cloudflare using e.g. Ansible, Terraform, Helm and kubernetes operators.
- Design and implementation of cloud-agnostic solutions without exclusively relying on specific cloud vendors.
- Optimizing the latency and throughput of the pub-sub infrastructure.
- Incident management, troubleshooting, monitoring, distributed tracing and recovery automation. 

About you

You are a software engineer with experience of creating and maintaining backend systems. You are familiar with the entire Linux stack and can easily find a bottleneck in a distributed system. You have developed CLI tools and backend services before and are comfortable applying your software development skills to automate your daily operations or to create a microservice on the request path of the end users.

Key Qualifications

- Experience with Devops or SRE as an engineering subject area, with proficiency in Golang.
- Successful track-record and proven experience as a backend internet services software developer.
- Knowledge of SDLC, including continuous integration and testing methodologies.
- Understanding of base internet infrastructure services including DNS, HTTP,  server virtualization, server monitoring in critical, large scale distributed systems.
- Understanding of SRE principals, including monitoring, alerting, error budgets, fault analysis, and other common reliability engineering concepts, with a keen eye for opportunities to eliminate toil by code and process improvements.
- Excellent verbal and written communication skills in English 

Desired skills

- Deep familiarity with Go or other system-oriented programming languages.
- Experience with development within Kubernetes ecosystem, including operator framework, controllers and CRDs.
- Experience with streaming and pubsub systems such as NATS, Apache Kafka, Apache Pulsar.
- Automating operations processes via services and tools.
- Configuration management and fleet orchestration via Puppet, Chef, Ansible, or others.
- Cloud Services (AWS S3/EC2/CloudFront or equivalent).
In applying at this job, I confirm and acknowledge that I read and understood the Privacy Notice published at https://auroralabs.dev/privacy.