Categories
Tools

The TechGig Engineering Tech Stack

TechGig is a technology platform to Attract, Engage and Hire top tech talent. Companies can source talent from a growing community of 4 million developers and leverage the power of automated real-time assessments and data-driven decision support.

Deciding Tech Stack is the most important decision you need to take while creating any Tech Product. The important criterion we have used while deciding technology stack are developer ecosystem, agility, scalability, speed and performance. Every product has unique requirements and you need to select technology stack matching your requirements. Blindly copying others’ technology decisions is not the right way to go. With the growth of users and features sometimes, you might need to replace old tech pieces and adopt new ones. While designing your architecture you should design in such a way that replacing some part of your older stack should not lead to a major rewrite.

TechGig engineering team believes in Open Source technologies. Our complete stack is made up of open-source software. For different layers, we have used different technologies specific to the requirement.

Front End

Our Front End is served by LAMP stack and client-side is written in jQuery and AngularJS which is most commonly used stack and is appreciated by the developer community for its agility and scalability.

Full-Text Search

Full-text search is an important requirement for TechGig. For this, we are using Solr which supports real-time indexing of content, faceted search, dynamic clustering and scalability and fault tolerance.

Containerization

TechGig supports 54+ languages in its code evaluation engine. To scale it in real-time and support these many languages and environments we are heavily using containers. Docker is the container technology which provides lightweight virtualization with almost no overhead.

Data Store

A lot of data within the TechGig ecosystem is not relational in nature like metadata of various types of evaluations, events and analytics data. To support these kinds of data we are using MongoDB as NoSQL technology. MongoDB is easy to use, highly available, highly scalable and high-performance document-oriented database which fits well within our requirements for evolving data and real-time analytics.

Messaging

TechGig application follows loosely coupled architecture to manage complexity, modularity and stability of code. Messaging is an important aspect of loosely coupled architecture. TechGig uses Kafka as the message queue for inter-communication between different modules of application like code evaluation front end, code evaluation engine, content indexing, real-time analytics, recommendation engine etc.

Caching Tech Stack Requirements

Caching is an important requirement for any application to enhance performance and response time. TechGig uses Redis to support data caching and offloading database load. TechGig serves user profile data, session data, stats and a lot of long-lived data from Redis caching layer. Other static data like JavaScript, CSS and images are served from Akamai CDN.

Backend and Analytics

A lot of heavy lifting components like face detection, face recognition recommendation services, plagiarism detection, content classification, bulk mailing services etc. are written in java and python using OpenCV, NLTK and TensorFlow frameworks.

Analytics is very important for better user experience and informed decision making. TechGig uses ELK stack for data ingestion and exploration and visualization. All event logs and behavioural data is ingested and visualized using ELK stack.

Development and Deployment

Apart from the technology stack, the selection of Software development tools is also very critical. This includes IDE, build tools, source control, requirement and bug tracking, CI/CD pipeline and testing tools. TechGig team uses, VSCode as IDE as of this lightweight and very fast. For source control TechGig uses BitBucket and for the requirement and Bug tracking, Atlassian Jira is used. Bitbucket and Jira go along so well, and both are Atlassian tools. TechGig uses Jenkins for its CI/CD pipeline as it is very easy to manage, requires very little maintenance and has a rich plugin ecosystem. For automated testing we use Selenium as it is open source, supports multiple browser testing and parallel test executions.

Site Reliability

After all Site Reliability monitoring is also very important. If some code deployed in production misbehaves or breaks, the SRE team should get alert and immediate rectification should be done. TechGig team has its own set of inhouse homegrown tools for monitoring and alert.

Application Security

Bad actors consistently try to steal the user’s personal, financial data. To protect users and data, we have a comprehensive application security program in which from requirements gathering to production deployment in all steps security is embedded. We use Static Code analysis to identify security gaps within the code. To identify security gaps in production live application we use Dynamic security assessments. Apart from this to identify business logic vulnerabilities extensive manual security assessments are done periodically.

Apart from the above-mentioned pieces, there are a lot of other components which contribute to TechGig tech stack. The technologies are subject to change depending on new requirements and challenges. What makes our work interesting is the problem statement we are solving i.e. help the developer community to learn to compete and grow.

About the author

Ram Awasthi is the Head-Technology of TechGig & TimesJobs and VP- Technology, Times Internet.