Senior Backend Java Developer

Job description

OpenVPN is looking for a senior systems and software engineer candidate with a strong working knowledge of C++, Java, JSON and REST APIs, databases, TCP/IP networking, SSL VPN, routing protocols, and distributed systems. The ideal candidate will possess a solid conceptual foundation in the development of distributed and cloud-computing systems with an emphasis on  high availability systems, cloud management and provisioning, network routing, load balancing, secure APIs, congestion control, reliability, performance monitoring, and reporting. The candidate should have 5 or more years of network programming experience on Linux development environments. Open Source experience is a plus.

 

 

Responsibilities:

This staff level position will join a team that is responsible for the requirement specifications, system specifications, software development, testing, and maintenance of the several upcoming OpenVPN products.

The responsibilities include:

- Development and support of a Linux based backend services layer to support our front end teams for our products

- Development of a web-based API (using JSON and REST) for operation and management of OpenVPN systems.

- Collaboration with other developers for development and deployment.

Requirements

Required Experience:

- Knowledge of system architecture and deployment (containers, deb and rpm), redundancy and application scaling on Linux servers

- CS graduate or post-graduate

- Strong networking experience on Linux including deep understanding of the Linux network stack and kernel networking modules such as xfilter/netfilter

- Strong programming experience on Java and Javascript (ideally technologies like Spring, Hibernate)

- Solid experience in JSON and REST API development on both server and client side

- Experience with RDBMs (MySQL), NoSQL (MongoDB) and key-value store (Redis/Memcache)

- Experience with notification anad message queuing systems (Kafka, SNS/SQS)

- Hands-on work experience with Linux platforms in a networking environment (Debian)

- Experience with change management tools (Git) and the standard software development cycle

- Experience with deployment on Docker and AWS

- Knowledge of SSL VPNs, IP routing, BGP, and other dynamic routing protocols

- Knowledge of encryption, PKI and other security concepts

- Knowledge of authentication mechanisms such as SAML and OAuth

- Knowledge of the following communication protocols: TCP/IP stack (UDP and TCP), Berkeley sockets, HTTP, HTTPS, and other networking protocols