You are viewing our old blog site. For latest posts, please visit us at the new space. Follow our publication there to stay updated with tech articles, tutorials, events & more.

Tools we use to build India’s No. 1 Jobs site – Naukri.com

0.00 avg. rating (0% score) - 0 votes

 

Give me a lever long enough and a fulcrum on which to place it, and I shall move the world.
– Archimedes
 
As Archimedes rightly pointed out, to do anything  worthwhile, one needs right tools. We are no exception. Building Naukri.com as India’s No. 1 job site, does require lot of tools.
Our engineering teams on a daily basis rely on lot of tools for communication, design, development, deployment and monitoring of our applications.
 
In this article we will walk you through some of the applications that we use across all teams.
 
Jenkins – Jenkins is an open source continuous integration tool used by our QA and Development teams for automating build deployment via Git and running selenium automation test cases.
 
Selenium Web Driver – We have automated lot of our functional test cases using selenium. It helps us reduce our QA time as well as ship code faster with minimal bugs. System testing suites are also executed on Live Daily for the regular health checkup of the site.
 
Git/SVN – Majority of our code base is now maintained through Git and we will be phasing out SVN in near future.
 
JIRA – We use JIRA for all our project planning and agile development. It helps us plan our iterations in an easy way. All team members including product/business teams use it to drive our deliveries.
 
Slack – We have recently started experimenting with slack for internal team communications. So far it looks promising. We use it to discuss issues, notify people and share documents.
 
Google Docs – We use Google drive for storing documents, spreadsheets and presentations. It helps us work on these documents in a collaborative manner. We can work on them across devices and retrieve whenever required.
 
Zabbix – We use zabbix to monitor the health of our server’s. It helps us monitor various servers in a consolidated fashion and identify issues quickly.
 
Freshdesk – All our customer support tickets are managed via freshdesk. This helps us focus on the client resolution completely and manage client communication easily and effectively.
 
Google Analytics – It helps us in understanding our web traffic and what our users are doing on various Naukri products. We use the data to identify trends based on various factors like location, devices, source etc. We even use it to track custom events and various features usage.
 
Inspyder Insite – Inspyder Insite is a tool which is used for detecting 4XX and 5XX errors across our various portfolio sites. With this tool we can figure out which are the dead links and  subsequently we can work towards removing those dead links to enhance a better consumer experience.


Monitoring scripts – Monitoring scripts are created in Perl language. These scripts are executed 365X24 to monitor the site. If the site is down due to any error then  an alert is generated and people are informed across.


Benchmarking Scripts: Benchmarking scripts are created using a tool called WATIR. These scripts  are designed for measuring the page load time of the current deployed build. With use of these scripts we make sure that with each deployment going live, page load time is not affecting the user experience and site is stable.


Grunt: Grunt is our preferred tool for UI task automation. It’s a task runner, offering a lot of bundled plugins for common tasks. The best comes when you can combine various tasks together to create your own more powerful bundle. Some tasks that we do using grunt are resource minification, merging, compilation, image compression and javaScript linting.
 
Q-Unit: A tested and well-documented code is what we all strive for. At naukri.com Q-Unit (JavaScript testing framework) has been the integral part of the Front End Development (FED) team since last one year. Writing test cases for a piece of code is a must for FED team.
 
Sass: Sass (CSS Pre-Processor) has been in use at Naukri.com from last 1 year. It is used to ensure consistency and flexibility in CSS. It helped us to overcome limitations of CSS such as extending a block of CSS, Reusing a collection of rules and using variables for defining common values.
 
NewMonk– it measures the performance of website from your end user’s point of view.It sends this data back to naukri server for further analysis. We use the data to identify trends based on various factors like location, devices, source etc.


Appium – It is  an open source test automation framework for use with native, hybrid and mobile web
apps. We use it for writing functional test suites for native iOS and Android apps.


TestNG and ANT – TestNG is a testing framework with provides annotations support. It can produce Report in html format for the better understating. we use it with ANT that is a build tool which run testsuite using TestNG.


Graphite: It is a highly scalable realtime graphing system. It consists of 3 parts :
   graphite-web – A django based web application that can be used to render graphs and dashboards
   carbon – It receives metrics over the network and writes them down to the disk using a storage backend
   whisper – This is the time series database library which is used as a storage backend.
   Graphite is used in naukri for real time monitoring and tracking of some analytical metrics.


Statsd: It is a network daemon which runs on node.js platform, listens to statistics like counters and timers and aggregates them to one or more pluggable backend service – in our case graphite. This is a part of the system which does the realtime monitoring and tracking of analytical metrics.


Gitlab: It is an open source github replica. Our git repositories are hosted internally on gitlab.


Scribe: It is a server which can be used for aggregating log data streamed in real time from a number of servers. It was initially built by facebook. We use it for collecting logs on which we can run our real time analytics.


Logstash: It is a log processing tool which can be used to collect and process data from any source and re-direct the output to any destination. It is being used for parsing our logs and generating numbers for our real time analytics graph.


Capistrano: It is a remote server automation and deployment tool written in ruby. We use capistrano to deploy code to our production servers.


Little Eye: It is a Performance Analysis and Monitoring tool that can help identify and fix performance problems in your Android Apps. We monitor percentage of power consumption, wireless data, Memory.


FontForge: It’s a font creation tool. We create fonts instead of images for reducing development time and getting retina display icons. Font are supported on Desktop (ie6+, Firefox, Chrome) and Mobile (Android 2.3.6 +, Chrome, IOS Safari etc.)


MyTrend
An ingenious tool to monitor data growth trend and server space utilization simple enough to be customized easily.
This is what it does :
* Monitor Everything – Everything inside your MySQL can be monitored (Database Size, Connections, Slow Queries etc)
* Analyze MySQL data collected over a period of time
* Capacity Planning – Plan the growth of your business and be able to predict the future and apply the financial resources more accurately.
* Cool Interface; All major browsers supported.
* Fully customizable using web-based customization interface


NCConfig – Managing crons


With increasing servers, applications, crons (schedule jobs) it was becoming pain to manage and monitor all crons.
We thus built NCConfig – a tool to monitor all crons which includes their status – Success/Failure, executing time, output, etc


Feature details  :
* Centralized system to manage all your crons running on multiple servers.
* Execution Statistics – You can get the time taken for each and every cron using this tool (Start Time, End Time)
* Graphical Statistics – You can check the execution statistics in graphical format
* Role based Management – Admin / Application Manager / Read Only
 – Admin : Will have all the rights like adding server, application, crons. etc
 – Application Manager – Will have the rights to manage the crons of the application which they own.
 – Ready Only – Will have only read only access
* Cron Success/Failure logs – Stores all the output of the crons in the databases which can be accessed anytime and also the cron status
* Single Change Settings – includes any actions that can change cron job settings excepting “Enable Logs”, “Disable Logs”, “Enable Cron Job” and “Disable Cron Job”.
* Easy Integration – One-time setup/integration with your existing environment.
* NCConfig is totally free for non-commercial use.
* You can modify the source code to suit your system and use it internally, as well as develop customized tools aggregating features to NCConfig.
* All settings and the values collected are stored in a simple format and are fully open

AndroidStudio
It is the official IDE for Android application development, based on IntelliJ IDEA. Besides just being an editor, it offers some great features like memory monitor, inbuilt support for google cloud platform, build variants and support for JUnit.

Instrumentation framework
This is the android unit testing framework. It provides an architecture and powerful tools that help you test every aspect of your application at every level from unit to framework. 

Lint
A static code analysis tool that checks the Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization

FindBugs
We use FindBugs for defect detection in android apps. It uses static analysis to look for various bug patterns, such as null pointer dereferences, infinite recursive loops, bad uses of the Java libraries and deadlocks.

EMMA
It is a toolkit for measuring and reporting Java code coverage. Gets integrated with Jenkins and we can view the coverage trends.

Xcode
Xcode is an integrated development environment (IDE) containing a suite of software development tools developed by Apple for developing applications for iOS. It has a built-in Interface Builder, an application used to construct graphical user interfaces.

Instruments
This is a tool provided by Xcode to check for the memory-allocation and memory-leaks in iOS Application.

XCTest
This is an iOS testing framework. Its a powerful framework that helps you to run the Unit, Integration & Performance Test-Cases.


These tools help all our teams work cohesively and enable best user experience to all our users and clients. Apart of these tools we also use lots of open source projects for development and deliveries. We will cover them as well soon. Keep visiting us for more such posts.
Posted in General