Category Archives: Software Development

How we use docker @ naukri:

What we will be focussing on: Creating tag of application and deploying on kubernetes. Creating an immutable image Naukri Deployer and Endpoints Creating a tag of Application: Whenever we push to git repository, a jenkins job is triggered and runs UT(Unit Test Cases)  on that branch (or tag). If UTs are passed create a tag and run next jenkins job to create immutable image. This new immutable image can be deployed on kubernetes and subsequently QA team can run their FT(Functional Test Cases) on that tag. To know what is an immutable image, refer::... Read More

Tip-toe through Naukri, India’s No.1 job site #OneDayTale

Glipmse of Hackathon 2016. We love open source and hence we are very open to transparency. The inception to this blog post was an idea to share the walk through of how a user is served in a typical day by your beloved Naukri.com. Naukri is a black box which gives you results but under the hood it is way more than what anyone can think. Under the hood [caption id="" align="alignnone" width="800"] Under the hood working of a car, GIF image.[/caption] Source Something like below is what we are continuously doing to serve you better. [caption id="" align="alignnone" width="549"] Car engine... Read More

Email Sending Architecture Using Messaging Queue

Emails are really playing a very important role, when it comes to keep users updated. We at naukri.com send mails to update users about various activities related to them. For example, we send mails when there are new jobs on the site according to user's custom job alerts. Job seekers are notified via email when there is any update on their job applications. Also we send mails composed by recruiters for intended job seekers and many more. Basically there are two types of mails: Transactional Mails - which are triggered based on action of a job seeker or a recruiter. Bulk Mails -... Read More

Spamming is easy, filtering is tough

“Spamming is easy, filtering is tough” We sent 250 million emails through Resdex last month, and that’s way cool ! Maintaining that traffic with good user experience is really a tough task. But Resdex gives it desired attention to make sure the emails sent are relevant. What is Resdex ? Resdex is one of the most commonly used product by recruiters in the country to search desired candidates. Resdex provides various options to ensure the hiring is more targeted and less time consuming. Resdex is Naukri.com’s Resume Database Access. Naukri.com has a large database of over... Read More

Search Upgrade: How we went through changing search architecture along with elasticsearch version upgrade from 1.x to 2.x

Technology upgrade rollouts are too frequent these days, so are the requirements and expectations from a product. We need to keep up with this pace to take advantage of the changes and enhancement in technology and also able to fulfill the needs and expectations of a user. For this the product should be robust and architecture should be scalable to meet the growing demands from a product. So we took a step to upgrade elasticsearch from v1.x to 2.x. Let's start with a small brief on why we decided to go for upgrade and architectural changes. Why we need to do this? To take advantage of... Read More

How we define our Minimum Viable Product @Naukri, India’s No.1 Job Site?

Source Minimum Viable Product, or if I say Minimum Buy-able product. Sounds good ? If not lets go deeper with what it actually means. Minimum viable product is simply defined as : The minimum product features that can be bought or you can say that minimal which can get the early adopters and help you attain feedback from them to build the finished product. Wikipedia says “In product development, the Minimum Viable Product (MVP) is a product with just enough features to gather validated learning about the product and its continued development.” When we get a... Read More

Static Framework for iOS

Why we need framework: Fast iterative compilation times (up to 3x faster). Easy distribution and packaging. No modifications to Xcode. Simple set-up for third-parties. Support for building the framework as a dependent target (i.e. modifying source in the framework and building an app will automatically rebuild the framework and relink as expected). Works with the latest version of Xcode. Constraint to support .framework: There are a few constraints that we want to satisfy when building a .framework: Fast iterative builds when developing the framework. We may... Read More

Lean Apps

At Naukri we always target to keep the the app lean in terms of size. Size can be measured as:- -APK download size: Users often avoid downloading apps that seem too large, particularly in emerging markets where devices connect to often-spotty 2G and 3G networks or work on pay-by-the-byte plans. -App size on phone : Smaller the app size, more are the chances when competing with remaining apps for staying in the user’s phone for a long time. We regularly analyze the components which we can optimize or remove to reduce both. Some of the best practices we use are: Remove unused... Read More

Session implementation practicing OAuth2.0 fundamentals

What is OAuth 2.0 Protocol and benefits of practicing it for a Session Management system OAuth 2.0 is a protocol that allows distinct parties to share information and resources in a secure and reliable manner. The OAuth 2.0 protocol allows two parties to exchange information securely and reliably. In more practical terms, the most common uses of OAuth 2.0 involve two things: Allowing a user to log into an application with another account. For example, Naukri enabling users to log in with their Facebook accounts. Allowing one service to access resources on another service on behalf... Read More

Gitlab Force Push Update Hook

Like any other organization we at Naukri use “Git” as version control system for our code and since most of our code is proprietary, we have one of the most popular solution to manage Git repositories on-premises i.e. Gitlab There are various challenges faced during code collaboration and versioning while working with multiple teams / developers. One of them is “Force Push”. Usage of --force flag while pushing our code to Git is considered destructive as it unconditionally overwrites the remote repository with whatever you have locally, possibly overwriting any changes that a team... Read More