diff --git a/index.xml b/index.xml index 8ad308b..8735971 100644 --- a/index.xml +++ b/index.xml @@ -3,13 +3,13 @@ Why ELK wasn’t the right fit for us In 2018, we adopted the ELK stack as our d This post covers our journey and experiences with each of the frameworks, and why we finally bet on Flutter even when it was bleeding edge alpha technology.Scaling with common sense #2: Being future ready.https://zerodha.tech/blog/being-future-ready-with-common-sense/Wed, 28 Jul 2021 15:30:00 +0530https://zerodha.tech/blog/being-future-ready-with-common-sense/Over the last year, owing to the unexpected rally in capital markets, Zerodha’s customer base has more than tripled, significantly increasing the number of concurrent users on our platforms along with the traffic and load they generate on numerous systems in the background. For context, in January 2020, we were handling 2+ million retail trades daily. In April 2020, it had risen to 7+ million. Today, it goes up to 12+ million.Working with PostgreSQLhttps://zerodha.tech/blog/working-with-postgresql/Thu, 22 Apr 2021 00:00:00 +0530https://zerodha.tech/blog/working-with-postgresql/This post is in the context of the large, data heavy PostgreSQL instances that store historical transactional data and reports, the databases that power Console and its large scale number crunching and reporting. It talks about how we self-host, tune, and manage all our DB instances on bare EC2 instances. For high availability and backups, we use simple failover replicas and for backups, AWS disk snapshots. The Console DBs store hundreds of billions of rows of different kinds of financial and transactional data, currently close to 20 TB, across four sharded nodes.A lesson in creating and using niche business DSLs at scalehttps://zerodha.tech/blog/a-lesson-in-niche-business-dsls-at-scale/Tue, 24 Nov 2020 17:35:00 +0530https://zerodha.tech/blog/a-lesson-in-niche-business-dsls-at-scale/At Zerodha, we process millions of trades in real-time, where each trade comes into the system as concurrent high throughput HTTP requests. Each trade increases the latency for subsequent orders in the queue that are under processing at the same time at our OMS (Order Management System). When a single order comes through to the OMS, it goes through a bunch of computationally intensive validations and adds to the latency. To reduce the latency of orders, we decided to offload some of these business validations from the OMS into an external component called Veto, which pre-validates incoming orders based on custom dynamic rules set by our Risk Management team.Alar: The making of an open source dictionaryhttps://zerodha.tech/blog/alar-the-making-of-an-open-source-dictionary/Tue, 22 Sep 2020 00:00:00 +0530https://zerodha.tech/blog/alar-the-making-of-an-open-source-dictionary/ನಮಸ್ಕಾರ (Namaskāra)! This is not a post on fintech, or even technology for that matter. This is the story of a product of tenacity, selflessness, and passion; a product that will transcend and outlive most technology we know of. This is the story of a massive dictionary that will become the window to a language spoken by tens of millions of people for generations to come, a resource its author has donated to posterity.Scaling with common sensehttps://zerodha.tech/blog/scaling-with-common-sense/Sun, 14 Jun 2020 14:00:00 +0530https://zerodha.tech/blog/scaling-with-common-sense/“Scaling” is not a specific technique but an entire spectrum that stretches all the way from “Google scale” to the K8s cluster Karan runs on a Raspberry Pi plugged into a 12V shaver outlet in his bathroom to encrypt his DNS queries for peak privacy, while he asks Alexa to dim the lights and play his favorite non-mainstream indie music. It is a collection of practices unique and intimate to every organisation, and is the product of an infinite number of variables; the numerous domain-specific problems, the structure of the organisation, the nature of the people involved and their biases, countless engineering decisions and trade-offs, technical debt and history, ad infinitum.Infrastructure monitoring with Prometheus at Zerodhahttps://zerodha.tech/blog/infra-monitoring-at-zerodha/Mon, 27 Apr 2020 00:00:00 +0530https://zerodha.tech/blog/infra-monitoring-at-zerodha/On any given day, we handle around 15% of daily retail trading volume across all stock exchanges in India. Billions of requests generated in the process are handled by a suite of systems we have built in-house. Also, we are very particular on self-hosting as many dependencies as possible, everything from CRMs to large databases, Kafka clusters, mail servers etc. -To aid these primary systems, there are a large number of ancillary workloads that run, covering everything from real-time trades, document processing, KYC, and account opening, legal and compliance, complex, large scale P&L and number crunching, and a wide range of backoffice workloads.Hello, World!https://zerodha.tech/blog/hello-world/Mon, 06 Apr 2020 00:00:00 +0530https://zerodha.tech/blog/hello-world/Zerodha, now India’s largest stock broker, bootstrapped and profitable, turns ten years old this year. The Zerodha tech team turns seven years old. The tech team has remained largely elusive over the course of our existence. While we have pondered starting a tech blog for more than half a decade, we have often found ourselves too busy building the fundamental blocks underlying a stock brokerage. We have also been stalled by a sense of unpreparedness to talk to the world about our very unconventional setup.Projectshttps://zerodha.tech/projects/Mon, 01 Jan 0001 00:00:00 +0000https://zerodha.tech/projects/listmonk ★ 14385 +To aid these primary systems, there are a large number of ancillary workloads that run, covering everything from real-time trades, document processing, KYC, and account opening, legal and compliance, complex, large scale P&L and number crunching, and a wide range of backoffice workloads.Hello, World!https://zerodha.tech/blog/hello-world/Mon, 06 Apr 2020 00:00:00 +0530https://zerodha.tech/blog/hello-world/Zerodha, now India’s largest stock broker, bootstrapped and profitable, turns ten years old this year. The Zerodha tech team turns seven years old. The tech team has remained largely elusive over the course of our existence. While we have pondered starting a tech blog for more than half a decade, we have often found ourselves too busy building the fundamental blocks underlying a stock brokerage. We have also been stalled by a sense of unpreparedness to talk to the world about our very unconventional setup.Projectshttps://zerodha.tech/projects/Mon, 01 Jan 0001 00:00:00 +0000https://zerodha.tech/projects/listmonk ★ 14410 High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app. -koanf ★ 2608 +koanf ★ 2619 Simple, extremely lightweight, extensible, configuration management library for Go. Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper. -csvtotable ★ 1109 +csvtotable ★ 1110 Simple command-line utility to convert CSV files to searchable and sortable HTML table. -dungbeetle ★ 471Zerodha's FOSS stackhttps://zerodha.tech/stack/Mon, 01 Jan 0001 00:00:00 +0000https://zerodha.tech/stack/Languages Go +dungbeetle ★ 474Zerodha's FOSS stackhttps://zerodha.tech/stack/Mon, 01 Jan 0001 00:00:00 +0000https://zerodha.tech/stack/Languages Go Python Java JavaScript @@ -21,7 +21,7 @@ SSDB ScyllaDB DuckDB MySQL -Webervers and proxies Nginx +Webservers and proxies Nginx HAProxy Kong Streams & Queues NATS diff --git a/projects/index.html b/projects/index.html index a4d5f90..79541a6 100644 --- a/projects/index.html +++ b/projects/index.html @@ -2,4 +2,4 @@ Blog Projects Stack -

Projects

FOSS projects out of Zerodha.
  • listmonk

    ★ 14385

    High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.

  • koanf

    ★ 2608

    Simple, extremely lightweight, extensible, configuration management library for Go. Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.

  • csvtotable

    ★ 1109

    Simple command-line utility to convert CSV files to searchable and sortable HTML table.

  • dungbeetle

    ★ 471

    A highly opinionated, distributed job-queue built specifically for queuing and executing heavy SQL read jobs asynchronously. Supports MySQL, Postgres, ClickHouse.

  • otpgateway

    ★ 422

    Standalone server for user address and OTP verification flows with pluggable providers (e-mail, SMS, bank penny drops etc.)

  • Tasqueue

    ★ 380

    A background jobs library for Go that allows pluggable brokers/store for distribution.

  • A Flutter plugin to set display mode in Android

  • stuffbin

    ★ 171

    Compress and embed static files and assets into Go binaries and access them with a virtual file system in production

  • kubekutr

    ★ 158

    Cookie cutter templating tool for scaffolding K8s manifests

  • simples3

    ★ 146

    Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK)

  • calert

    ★ 145

    🔔 Send alert notifications to Google Chat via Prometheus Alertmanager

  • Live streaming option chain for equity derivatives using Kite connect Websocket based on redis.

  • A frappe app to upload file attachments in doctypes to s3.

  • autopilot

    ★ 105

    A test driver for Flutter to do QA testing without sharing app source code.

  • fastglue

    ★ 80

    Fastglue is an opinionated, bare bones wrapper that glues together fasthttp and fasthttprouter to act as a micro HTTP framework.

  • A tiny Javsacript library for sideloading static assets on pages and caching them in the browser's IndexedDB for longer-term storage.

  • Flutter plugin to detect when app(not Flutter container) goes to background or foreground

  • pfxsigner

    ★ 71

    A CLI utility and web server for digitally signing PDFs with docsign loaded from PFX (PKCS#12) files

  • linkpage

    ★ 64

    LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio

  • simplesessions is a Go session management library that is completely agnostic of HTTP libraries and frameworks, backend stores, and even cookie jars.

  • slim-ui

    ★ 61

    Simple components library used for building lightweight vuejs projects

  • rbiparser

    ★ 53

    A utility for downloading, parsing and sanitizing bank database (IFSC, MICR, address etc.) Excel sheets from the RBI website.

  • goyesql

    ★ 53

    Parse SQL files with multiple named queries and automatically prepare and scan them into structs.

  • Lightweight HTTP server to handle webhooks from listmonk and forward it to different messengers.

  • Flutter plugin to use libcurl for HTTP calls

  • An events collection agent which processes Nomad Events and dumps to external sink providers like HTTP

  • recharge

    ★ 48

    Recharge is a simple library to hot reload your Dart code on file changes

  • nomctx

    ★ 46

    Faster way to switch between clusters and namespaces in nomad

  • lil

    ★ 45

    Simple URL shortener built with Go

  • Frappe app to replace default text editor with tinymce

  • StoreKeeper is an easy and flexible state management system for Flutter apps

  • A small utility to download all dashboards from Grafana and backup to S3

  • Utility to extract metrics from arbitary data stores in Prometheus format

  • gotp

    ★ 28

    Simple utility to live preview Go templates with custom data

  • shelf

    ★ 27

    A Good Symlinks Manager

  • pdf_text_overlay is a python library to write text on top of pdf.

  • A frappe app that has workflows and reports to make payments to vendors by a company and track them

  • Terraform provider for managing long term portfolio with Zerodha Kite

  • toru

    ★ 22

    Toru is a Go module proxy with caching and rewrite capabilities

  • AWS Cost Explorer and EC2 Instance metrics exporter for Prometheus

  • A utility that parse Zerodha Consolidated google spreadsheets and render category-wise scrip details(margins, multiplier, etc)

  • Simple frappe app to setup Single sign-on for discourse

  • Commandline utility to convert config formats like TOML, JSON, YAML etc to KV Pairs which can be imported via consul cli.

  • An extremely tiny utility for unmarshalling and scanning querystrings into structs

  • Osticket plugin to assign tickets automatically to random agents based on teams, department, and activity

  • Subscription discount coupon code manager

  • Tiny lib for exposing health-check endpoints as Prometheus/JSON format

  • Vagrant based setup for local Nomad/Consul clusters. Helpful for experimenting with Nomad job specs in an environment similar to production.

  • Frappe client written in Go

  • A utility to archive all closed tickets beyond a certain age to disk (including attachments) and delete them from the database. The tickets are archived as JSON files.

  • Utility to create a export a service registry Markdown file from Kong's config

  • Ansible scripts for setting up Zookeeper, Kafka, kaf cli

  • Set of utilities to do deployments in an EKS cluster

  • Simple FAQ generator for Zerodha Kite connect Forum

  • Replicate and sync kafka topics between clusters in realtime. Supports topic re-mapping, healthchecks, and hot failovers for high availability.

  • A flutter package that takes html string as input and parses and converts that to Flutter widgets based on the provided configuration.

Zerodha © 2024 All rights reserved.
\ No newline at end of file +

Projects

FOSS projects out of Zerodha.
  • listmonk

    ★ 14410

    High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.

  • koanf

    ★ 2619

    Simple, extremely lightweight, extensible, configuration management library for Go. Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.

  • csvtotable

    ★ 1110

    Simple command-line utility to convert CSV files to searchable and sortable HTML table.

  • dungbeetle

    ★ 474

    A highly opinionated, distributed job-queue built specifically for queuing and executing heavy SQL read jobs asynchronously. Supports MySQL, Postgres, ClickHouse.

  • otpgateway

    ★ 423

    Standalone server for user address and OTP verification flows with pluggable providers (e-mail, SMS, bank penny drops etc.)

  • Tasqueue

    ★ 382

    A background jobs library for Go that allows pluggable brokers/store for distribution.

  • A Flutter plugin to set display mode in Android

  • stuffbin

    ★ 171

    Compress and embed static files and assets into Go binaries and access them with a virtual file system in production

  • kubekutr

    ★ 159

    Cookie cutter templating tool for scaffolding K8s manifests

  • simples3

    ★ 146

    Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK)

  • calert

    ★ 145

    🔔 Send alert notifications to Google Chat via Prometheus Alertmanager

  • Live streaming option chain for equity derivatives using Kite connect Websocket based on redis.

  • A frappe app to upload file attachments in doctypes to s3.

  • autopilot

    ★ 105

    A test driver for Flutter to do QA testing without sharing app source code.

  • fastglue

    ★ 80

    Fastglue is an opinionated, bare bones wrapper that glues together fasthttp and fasthttprouter to act as a micro HTTP framework.

  • A tiny Javsacript library for sideloading static assets on pages and caching them in the browser's IndexedDB for longer-term storage.

  • Flutter plugin to detect when app(not Flutter container) goes to background or foreground

  • pfxsigner

    ★ 72

    A CLI utility and web server for digitally signing PDFs with docsign loaded from PFX (PKCS#12) files

  • linkpage

    ★ 64

    LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and Campsite.bio

  • simplesessions is a Go session management library that is completely agnostic of HTTP libraries and frameworks, backend stores, and even cookie jars.

  • slim-ui

    ★ 61

    Simple components library used for building lightweight vuejs projects

  • rbiparser

    ★ 53

    A utility for downloading, parsing and sanitizing bank database (IFSC, MICR, address etc.) Excel sheets from the RBI website.

  • goyesql

    ★ 53

    Parse SQL files with multiple named queries and automatically prepare and scan them into structs.

  • Lightweight HTTP server to handle webhooks from listmonk and forward it to different messengers.

  • Flutter plugin to use libcurl for HTTP calls

  • An events collection agent which processes Nomad Events and dumps to external sink providers like HTTP

  • recharge

    ★ 48

    Recharge is a simple library to hot reload your Dart code on file changes

  • nomctx

    ★ 46

    Faster way to switch between clusters and namespaces in nomad

  • lil

    ★ 45

    Simple URL shortener built with Go

  • Frappe app to replace default text editor with tinymce

  • StoreKeeper is an easy and flexible state management system for Flutter apps

  • A small utility to download all dashboards from Grafana and backup to S3

  • Utility to extract metrics from arbitary data stores in Prometheus format

  • gotp

    ★ 28

    Simple utility to live preview Go templates with custom data

  • shelf

    ★ 27

    A Good Symlinks Manager

  • pdf_text_overlay is a python library to write text on top of pdf.

  • A frappe app that has workflows and reports to make payments to vendors by a company and track them

  • Terraform provider for managing long term portfolio with Zerodha Kite

  • toru

    ★ 22

    Toru is a Go module proxy with caching and rewrite capabilities

  • AWS Cost Explorer and EC2 Instance metrics exporter for Prometheus

  • A utility that parse Zerodha Consolidated google spreadsheets and render category-wise scrip details(margins, multiplier, etc)

  • Simple frappe app to setup Single sign-on for discourse

  • Commandline utility to convert config formats like TOML, JSON, YAML etc to KV Pairs which can be imported via consul cli.

  • An extremely tiny utility for unmarshalling and scanning querystrings into structs

  • Osticket plugin to assign tickets automatically to random agents based on teams, department, and activity

  • Subscription discount coupon code manager

  • Tiny lib for exposing health-check endpoints as Prometheus/JSON format

  • Vagrant based setup for local Nomad/Consul clusters. Helpful for experimenting with Nomad job specs in an environment similar to production.

  • Frappe client written in Go

  • A utility to archive all closed tickets beyond a certain age to disk (including attachments) and delete them from the database. The tickets are archived as JSON files.

  • Utility to create a export a service registry Markdown file from Kong's config

  • Ansible scripts for setting up Zookeeper, Kafka, kaf cli

  • Set of utilities to do deployments in an EKS cluster

  • Simple FAQ generator for Zerodha Kite connect Forum

  • Replicate and sync kafka topics between clusters in realtime. Supports topic re-mapping, healthchecks, and hot failovers for high availability.

  • A flutter package that takes html string as input and parses and converts that to Flutter widgets based on the provided configuration.

Zerodha © 2024 All rights reserved.
\ No newline at end of file diff --git a/stack/index.html b/stack/index.html index 2bd7534..c388ebf 100644 --- a/stack/index.html +++ b/stack/index.html @@ -2,4 +2,4 @@ Blog Projects Stack -

Zerodha's FOSS stack

FOSS technologies that we self-host and self-manage. Some tools may be legacy and of limited use.
Zerodha © 2024 All rights reserved.
\ No newline at end of file +

Zerodha's FOSS stack

FOSS technologies that we self-host and self-manage. Some tools may be legacy and of limited use.
Zerodha © 2024 All rights reserved.
\ No newline at end of file