Originally from http://www.ecobee.com/viewpage/index/id/21
This development and operations role will work with both the VP of Development and the Software Architect.
As an intermediate/senior Java developer, your primary job requirement will be design and development of core server software, with emphasis on the data to object mapping layer, and back end design. Ecobee relies on test driven development, and so ongoing maintenance of unit tests and system wide tests is also an integral aspect to the job. The successful applicant will have demonstrated a deep understanding of multi-threaded server architecture, especially how this relates to performance and scalability, and is able to work independently and with little supervision. You will maintain and improve the existing system test scripts, and in particular, the overall system performance test suite.
The secondary job requirement is maintenance and monitoring of our live production servers; in this capacity, you will be working closely with development to ensure server stability, throughput and reliability. This will include design, development and installation of a redundant server and database architecture, consisting of server and database software development and networking equipment installation and configuration.
In addition, you will also be assisting our technical support group, fielding issues related to the production environment. In this capacity, you will be responsible for analyzing database throughput, advising on performance, scalability and robustness.
- Design and development of new features in the application, based on requirements gathered from product management.
- Investigate and implement recommendations on system changes and operational procedures to increase efficiency or facilitate performance improvements.
- Advise and work closely with development to optimize and improve overall back end performance.
- The job applicant will have experience with large scale enterprise production on the Linux environment (Redhat).
- Knowledge of monitoring software (eg. Hyperic, Nagios), including alerts, escalation policy, etc.
- Maintain the health and operations of the servers, including maintenance of shell scripts, applying OS patches, etc.
- Monitoring performance and managing parameters to provide fast query responses to both the user interface, and back end report servers.
- Continually review and verify and document backup policy, retention and integrity.
- Participate in design decisions and help create and implement the company’s core high-volume systems and network infrastructure.
- You will work with QA and tech support to field server related issues.
- Developing, managing and testing backup and recovery plans, and capacity planning.
- Communicating regularly with technical, applications and operational staff to ensure database integrity and security.
- Commissioning and installing new versions of the application, both on the pre-production and production servers.
- Knowledge of TCP/IP networking, including network equipment, such as load balancers and routers, and configuration of networking services on Linux based servers
Must have experience with:
- Excellent working knowledge of Java.
- Extensive knowledge of relational database (MySQL) administration and management, including real world working knowledge of clustering, failover, fault tolerance, etc.
- Windows, Linux (Redhat)
- SQL (MySQL).
- Unix shell scripting, and Windows batch scripting.
- Experience with maintenance and monitoring of production servers.
- Networking experience (HTTP, DNS, etc).
- Experience with monitoring software such as Hyperic or Nagios
Submit resumes to firstname.lastname@example.org