Site Hawk (SH) is a website monitoring tool that focuses on helping users monitor their website and provides timely alerts in case of any malicious actions or hacks. It also allows users to carry out uptime and deface monitoring, performance monitoring and error detection (in JS, CSS).
Deface detection of a website is done by comparing screenshots of the website between different timeframes and analyzing the screenshots for changes in a continuous manner. If changes are detected, SH informs the owner about major or minor changes to the website and advises them about their next steps.
For performance monitoring, the load times of a website are monitored throughout the day and the owner is informed of how the site is performing through a dashboard as well as customizable alerts. SH also analyzes resource consumption in regards to the website to provide suggestions on how performance can be improved.
For error detection, SH analyzes JS and CSS files and notifies the owner of any errors.
SH also has iOS and Android applications whose primary function is to provide a quick look at the status of a user’s website as well as serving as a notification mechanism.
SH is a containerized microservices architecture which means that the system is comprised of multiple services. A single service is only responsible for a single task. Each service is run in its own isolated container - ‘pod’ - ensuring that all parts of SH run without issues.
This architecture adds complexity to the development process but it provides greater flexibility because each service is running in its own pod, so the server can be scaled by adding or removing pods for each individual service. This means that only services needing more resources will get them; ensuring optimized server usage at lower costs.
For microservices, SH uses Kubernetes, Docker and Kafka to manage clusters and maintain communication between pods. Docker is used to containerize the application and Kubernetes helps bring all the containerized applications into one cluster. The communication between those applications is made possible by Kafka.
For crawling and other parallel processes, SH uses GoLang because of its native support for concurrency and its compact binary file. For taking screenshots and analyzing JS and CSS files, SH uses NodeJS. The interfaces used to visualize reports are built using AngularJS and Ruby on Rails.
The iOS and Android applications were created using Xamarin because of its cross-platform compatibility. Xamarin MVVM was used to create the core of the application that contains the base communication and business logic. Then onwards, only the UI had to be created separately for each platform.
The entire application is hosted on Google Cloud.