thumbnail

Internship experience at CloudSEK

7 min read

careersoftware engineeringinternshipfrontend

Background

If you're reading this, then it means that i've successfully completed my internship at CloudSEK and that i've almost completed 1 year at CloudSEK. I'm writing this blog post to share my experience at CloudSEK and to document my learnings. I joined CloudSEK as an SDE Intern on November 2022 where i joined the Core Platform Engineering team which builds the main product of CloudSEK, i.e. The CloudSEK Platform.

About CloudSEK

CloudSEK is a SaaS based company which provides a platform for monitoring the security of an organization's digital assets. We monitor various sources on the internet for any security threats and alert our customers if we find any. We also provide a dashboard where our customers can view all the alerts and take necessary actions.

The Core Platform Engineering team is responsible for building the CloudSEK Platform. This team has sub-teams within it which are responsible for building different parts of the platform. I was a part of the frontend team.

The Onboarding

The onboarding process was pretty smooth. I had a pleaseant surprise when i received my onboarding kit which some nice goodies. I met most of the people in the team and got to know about the work that they do through an introductory call.

CloudSEK has a culture of introducing new-hires to the entire company through a company-wide call also known as AHM (all hands meeting). Here comes the interesting part, there is a tradition of roasting new-hires in the AHM. It's like Tech Roast Show except you get roasted by the audience. But it's all in good spirit and it's a great way to get to know the people in the company.

Fast forward to a couple of days, i finished setting up my development environment, got access to the required tools and permissions and was ready to start working on my first ticket. Since i was already familiar with the tech stack that the frontend team uses, i was able to start submitting pull-requests within the fist few days itself.

The Internship Experience

The frontend codebase had a familiar tech stack which included React, Next.js, TypeScript, React Query, Chakra UI, etc. I was already familiar with most of these technologies and had worked with most of them in the past.

Challenges and Learnings

Here's a list of some of the major challenges that i worked on and the learnings that i had during my internship.

1. Reducing re-renders in React

One of the first challenges that i worked on was to reduce the number of re-renders in a particular Next.js page. Can you imagine a page re-rendering 20+ times on every page load? The main cause for this was poor localisation of states, i.e. the states were not localised to the components that needed them. This resulted in unnecessary re-renders of components that didn't need to re-render. This was so bad that clicking a checkbox on a dropdown would re-render the entire page.

This was a great learning experience for me as i got to learn about the various ways to reduce re-renders in React. Over a period of time, i was able to localize the states and reduce the number of re-renders to a great extent. Optimisation techniques like useMemo, useCallback were of great help in this case.

2. Adopting A Server-Driven UI Architecture

The CloudSEK Platform offers various integrations with third-party tools like Slack, Jira, APIs and integrations with SIEM tools like Splunk, QRadar, etc. These integrations are used to send alerts and notifications to the tools that the customers use.

This feature was a perfect candidate for adopting a server-driven UI architecture. The main reason for this was that the UI of the form that the user fills to configure the integration depends on the type of integration that the user has selected.

For example, if the user has selected the Slack integration, then the form will have fields like Channel, etc. If the user has selected the Jira integration, then the form will have fields like Jira URL, Project Key, etc. What started as a simple task of building a form with dynamic fields turned out to be a complex problem that required a lot of thinking and planning.

This feature has now evolved into a mini-framework that can be used to add new integrations with minimal or no effort. This framework has the following features:

  • dynamic form validation
  • dynamic form fields - ranging from simple text fields to complex fields like a dropdown with dynamic options
  • dynamic API calls
  • dynamic setup - either via traditional REST APIs or OAuth with different applications
  • dynamic and customiseable UI - the UI of the form is also dynamic and depends on the type of integration that the user has selected

3. Building The Advanced Query Builder

Advanced Query Builder

Example: AG Grid

The CloudSEK Platform has a feature called Alert Rules which is used to configure the alerts that the user wants to receive. These alerts can also be configured to be triggered when the threats match a specific query that the user has configured. This query is built using the Advanced Query Builder.

The Advanced Query Builder is a UI component that is used to build complex queries using a simple UI. It is similar to the query builder that you see in the advanced filter of AG Grid. Due to the complex nature of the queries that the user can build and specific requirements, i had to build this component from scratch instead of using an existing library. There was already a query builder, but it wasn't performant or readable and was difficult to maintain. So i had to build a new one from scratch with more features and better performance.

Beyond the internship

Conferences

I got a chance to attend a couple of international conferences during my internship. I was able to attend JSConf India and React Nexus in-person both of which were fully sponsored by CloudSEK ✨.

JSConf India React Nexus

Parties 🎉

If you're a party monster then you'll love CloudSEK. We have some coolest parties / team-offsites in some of the best places in the BLR. Since the office is located in Indiranagar, there are many more impromptu events that keep happening.

Tech Talks

We have a culture of sharing knowledge and learning from each other. We often arrange tech talks where someone from the team presents something that they've been working on. It could be anything from a new technology that they've been exploring to a new feature that they've been working on or a problem that they've been trying to solve.

I got a chance to deliver a tech talk on React Server Components which was a new feature that was introduced in React 18. The talk focused on the motivation behind introducing this feature and how it works under the hood. I also talked about the benefits of using this feature and how it can be leveraged to reduce the bundle size of a React application.

Was it worth it?

YES, Absolutely!!! if i got a chance to go back in time and do it again, i'd definitely do it without hesitation. I got to learn a lot of things and work with some really smart individuals. I also got to work on some really interesting and challenging problems. It was a transformational experience in every sense. I became a far better developer than i was before i joined CloudSEK. My skillsets, confidence and knowledge grew exponentially 📈.

The opportunity to work on some deep technical problems and the freedom to choose the tools and technologies to solve those problems was the best part of the internship.This is exactly what i was looking for when i was searching for an internship.