Position: Senior Java Engineer
Company: Waverley Software
Experience required: 5y
English level: intermediate

About the client: 

Our client specializes in performance and social marketing, to help advertisers maximize the effectiveness of social media advertising. The product arms marketing teams to drive incremental revenue with the most powerful and transparent cross-channel buying platform. By harnessing the power of lifetime value to inform more intelligent and efficient media buying, the company is moving the industry away from buying on a cost-per-click and cost-per-action basis to a lifetime ROI basis. 

To deliver its online advertising Software as a Service (SaaS) solution to customers worldwide, the product deployed bare metal and virtual servers in data centers around the globe, creating a hybrid hosting infrastructure that offers exceptional performance, supports continuing international growth and helps keep costs low.

The job is to enhance and profile a custom in-memory database, aka a server,  that runs on a cloud instance with 64GB RAM. Each customer gets their own instance of the database. The database handles very high numbers of transactions that collect business analytics related to social networks, advertising, and web behavior.
Stage of the project: scaling and performance optimization phase

Requirements: 
- Expertise in Java server programming. At least 6 years of commercial experience
- Working experience with methods of performance profiling and optimization, effective I/O and memory management. 
- Solid background in writing large scale, multi-threaded, distributed server software experience
- At least Intermediate English (spoken and written)
- Self-motivated person with ability to work as sole contributor to this specific project

Responsibilities: 
- Participate in new features architecture design
- Design, implement and support new backend components and subsystems
- Profile, design and execute a refactor that optimizes scalability and provides high performance
- Support transition from Java 8 to Java 11
- Work with Dropwizard which includes and incorporates Jetty, Jersey, Hibernate. Use Maven for build control 
- Work with Databases / stores: MariaDB (which is a mysql variant) v10, Snowflake, Aerospike, Redis
- Cloud: AWS instances, buckets, and managed services