Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Add a brief description of the topic and the page content (2-3 lines)DIGIT is a microservice-based platform that is built to scale. It provides API based access to a variety of urban/municipal services. GIT hub as a DIGIT code repository holds multiple mono Repos with the simplified structure to manage the open-source and internal developer community. The core and state-specific changes are handled with a simple and efficient branching strategy.

Pre-requisites

Before you proceed with the configuration, make sure the following pre-requisites are met -

  • Add any system or skills requirements here (Use bullets to build the list)

  •  

Key Functionalities

Add 2-3 lines to highlight the use and applications in context.

  • Add functional aspects for the topic (Use bullets to build the list)

  • Tables can be inserted for certain topics.

...

Title 

...

Description

...

 

...

 

...

 

...

 

Deployment Details

  1. Deployment Steps (Use numbered bullet lists to define the sequence)

Configuration Details

  1. Configuration steps (Use numbered bullet lists to define the sequence)

Integration

 

Integration Scope

 

Integration Benefits

 

Steps to Integration

 

Reference Docs

...

Title 

...

Link

...

 

...

 

...

 

...

 

API List

...

Title 

...

Link

...

 

...

 

...

 

...

  • Prior knowledge of Git.

  • Prior knowledge of DIGIT architecture. 

Key Functionalities

  • DIGIT follows a layered architecture. Every layer consists of a set of microservices and we will have a repository structure same as our layered architecture.

  • Git being a DIGIT code repository provides an efficient branching strategy to handle core and state-specific changes and enhance the code-review through pull requests.

Deployment Details

Git is the form of the version control system, Continuous Integration(CI) and Continuous Delivery/Deployment(CD) setup with this git-flow is used for deployment.

Configuration Details

Gitflow is a very popular workflow that defines the different types of branches:

  • master: contains production code.

  • develop: contains the latest development changes that will be included in the next release.

  • feature: a new branch is created for each new feature we work on. We start it from develop and once we’re done, merge back into it.

  • release: starts from develop and signifies that there will be a new release once we merge this branch into master.

  • hotfix: used when we need to deliver urgent changes to our production app but develop is not yet ready to produce a release branch. Starts from master and merges into both master and develop.

Anything in the MASTER branch is deploy-able. Developers are expected to have hotfix/short-lived feature branches that are merged onto master via PR.

Git Access / Review Process:

  • Everyone creates pull requests and only code-owners checks & approves merge to master. Everyone else can still comment.

  • Can elect the code-owners based on tech/files or overall code base and architectural knowledge.

  • Code quality check with codacy is mandatory and runs as part of every pull request.

  • WIP: should be used when there are subsequent commits

  • JIRA ticket should be prefixed as a topic name for the PR

  • Anticipated PRs and the relevant discussions could be discussed on the daily SCRUM meetings.

  • State Specific Repos : Can elect state-specific code-owners / implementation team who will be gatekeepers.

We will have multiple repositories divide into the followings:

Repo Structure

Description

 core/Infra

This repo includes the following services :

egov-accesscontrol, egov-common-masters, egov-data-uploader, egov-enc-service, egov-filestore, egov-idgen, egov-indexer, egov-localization, egov-location, egov-mdms-service, egov-notification-mail, egov-notification-sms, egov-otp
egov-persister, egov-pg-service, egov-searcher, egov-telemetry
egov-user, egov-workflow-v2, libraries, report, tenant, user-otp and
zuul

 Business Modules

This repo includes the following services :

  • billing-service

  • collection-services

  • egf-instrument

  • egf-master

  • egov-apportion-service

  • egov-hrms

  • finance-collections-voucher-consumer

Municipal services:

This repo includes the following services :

  • egov-user-event

  • property-services

  • pt-calculator-v2

  • pt-services-v2

  • rainmaker-pgr

  • tl-calculator

  • tl-services

Modules are expected to have hooks through which state specific requirements can be met rather than introducing the changes into the platform code-base itself.

MDMS (Role Actions, Feature Module Masters, Business Module Masters, Tenant Data, Location Data)

  • The repository contains various master data which enable the functioning of core and business modules.

  • The config files in this repository are pulled into the deployment directly and hence it also makes sense to have a separate repo or branch for environments such as UAT & PRD.

  • This repository is state specific and is not part of the platform, although a repo with sample data will be maintained for DEV & QA.

Front end (Single Repository with multiple module wise folders)

  • Modules are expected to have hooks through which state specific requirements can be met via sidecars rather than introducing the changes into the platform code-base itself.

  • States also have the option to use their own UI while using our APIs alone.

Config (Any other configurations - Centralised) 

  • Seed files

  • Migration files 

  • Persister  – Service repo

  • Indexer - Service repo

InfraOps (Kubernetes manifests, Infra/ngnix/kibana config, Dockerfiles and Jenkins)

  • The repository will contain all devops related source code (GitOps) such as kubernetes manifests, configs etc.

  • State or individual deployments is handled by one file per deployment, which in turn affects all other manifests.

Libraries:  (mdms-client, tracer, services-common, enc-client)

The repository hosts common libraries which are used across core and business modules.

Docs:Swagger/Contracts/web 

  • Core

  • Business

  • Features

  • Web

  • Mob

  • Option to have it published in confluence

Reference Docs

Title 

Link

 Git Strategy

 New Git Strategy

 Github documentation and guide

 https://docs.github.com/en/free-pro-team@latest/github

Digit Architecture

DIGIT Architecture and Technical overview