List and details of technologies used to develop and deploy DIGIT
DIGIT core services are developed using the following technologies -
Click the links below to learn more about the open-source tools and API gateways used in DIGIT.
Open Source Tools
Complete list of tool stack used in DIGIT with licence details
API Gateway
Details of the API gateway used in DIGIT
API interface details
API Gateway provides a unified interface for a set of microservices so that clients do not need to know about all the details of microservices internals.
DIGIT uses Netflix ZUUL as API Gateway. It serves as an edge service that proxies requests to multiple back-end services. It provides a unified “front door” to our ecosystem. This allows any browser, mobile app or any other user interface to consume underlying services.
Reasons for using ZUUL |
---|
Zuul has mainly four types of filters that enable us to intercept the traffic in different timelines of the request processing for any particular transaction. We can add any number of filters for a particular URL pattern.
Microservice authentication and security
Authorization
API Routing
Open APIs using Whitelisting
RBAC filter
Logout filter for the finance module
Property module tax calculation filter for firecess
Request enrichment filter:
Addition of co-relation id
Addition of authenticated user’s userinfo to requestInfo.
Error filter:
Error response formatting
Feature enhancements in the latest version -
Validation filter: to check if a tenant of a particular module is enabled or not.
Multi-tenancy validation filter: Take the tenant id from the Req body or Query Param and validate against the additional tenant role or primary tenant role.
DevOps efficiency: API response time logging and sending notifications if it is taking more time.
Easier API interface for clients: Zuul provides a simplified and standardized interface for clients to interact with microservices, streamlining the process of accessing various functionalities.
Protection of internal microservices structure: Zuul acts as a gateway, preventing the exposure of the internal microservices architecture to external clients, enhancing security and maintaining system integrity.
Facilitates microservices refactoring: Zuul allows for seamless refactoring of microservices without requiring clients to modify their consuming logic, ensuring flexibility and minimizing disruptions during updates or changes.
Centralisation of cross-cutting concerns: Zuul enables the centralization of common functionalities such as security, monitoring, and rate limiting, simplifying management and ensuring consistent implementation across microservices.
Overall tool stack used in DIGIT
DIGIT being an open source platform, all the tools and tech stack used to build, deploy and operate DIGIT - are also open source and community edition. The various tools used are listed below with the specific versions used and their short description.
Platform Tools | Used Version | Description | Licence Type |
---|---|---|---|
Dev Stack Tools | Latest Version | Used Version | Description | License Type |
---|---|---|---|---|
DevOps Stack Tools | Latest Version | Used Version | Description | License Type |
---|---|---|---|---|
Kafka
5.4.1
Apache Kafka is an open-sourced distributed event streaming platform capable of handling trillions of events a day.
Zookeeper
5.4.1
ZooKeeper is an open-source Apache project that provides a centralized service for providing configuration information, naming, synchronization and group services over large clusters in distributed systems. When working with Apache Kafka, ZooKeeper is primarily used to track the status of nodes in the Kafka cluster and maintain a list of Kafka topics and messages.
Zuul
2.2.2
Zuul is an open sourced edge service that proxies requests to multiple backing services. It provides a unified “front door” to your system, which allows a browser, mobile app, or other user interface to consume services from multiple hosts without managing cross-origin resource sharing (CORS) and authentication for each one.
Elasticsearch
6.6.2
Elasticsearch is a distributed, free and open search and analytics engine for all types of data, including textual, numerical, geospatial, structured and unstructured.
Kibana
6.6.2
Kibana is a free and open frontend application that sits on top of the Elastic Stack, providing search and data visualization capabilities for data indexed in Elasticsearch.
Fluentbit
1.0.6
Fluent Bit is an open source and multi-platform Log Processor and Forwarder which allows you to collect data/logs from different sources, unify and send them to multiple destinations. It's fully compatible with Docker and Kubernetes environments.
Postgresql
9.6 and 10.6
PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance
Redis
3.2.6
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams.
Jaeger
1.18
Jaeger is open source software for tracing transactions between distributed services. It's used for monitoring and troubleshooting complex microservices environments.
JDK11
8u212
OpenJDK is completely open source and can be used it freely
2.2.6
Spring Boot is an open-source micro framework maintained by a company called Pivotal. It provides Java developers with a platform to get started with an auto configurable production-grade Spring application.
16.7.0
React is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody on facebook.com.
MIT
16.8.0
Material-UI CE (Community Edition) has been 100% open-source (MIT) since the very beginning, and always will be. Developers can ensure Material-UI is the right choice for their React applications through Material-UI's community maintenance strategy.
MIT
14.0
8.4.0
Node. js is an open-source, cross-platform, JavaScript runtime environment. It executes JavaScript code outside of a browser.
MIT
Kubernetes
1.22
1.18.x
Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.
Docker
19.03.14
19.x
Docker, a subset of the Moby project, is a software framework for building, running, and managing containers on servers and the cloud.
Helm
3.6.3
3.x.x
Helm helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes.
1.1.0
v0.14.10
Terraform allows infrastructure to be expressed as code in a simple, human readable language called HCL (HashiCorp Configuration Language).
Jenkins
2.306
2.289
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software.
MIT
Go Lang
1.16.7
1.13.3
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Groovy
3.0
Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax.
Python
Python software and documentation are licensed under the PSF License Agreement. Starting with Python 3.8.6,
PSF
Sops
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP.
Ansible
v2.9.23
Ansible is an open source community project sponsored by Red Hat, it's the simplest way to automate IT.
GNU General Public License
yaml
1.2
1.2
YAML is a human-readable data serialization standard that can be used in conjunction with all programming languages and is often used to write configuration files.