DIGIT BPA platform
Prerequisites:
General: Understanding of Instances, LoadBalancers, SecurityGroups/Firewalls, Apache, Wildfly, DB Instance, Redis, Elastic Search.
Experience of Apache web server, Wildfly application server, Infra-as-code, Terraform
Permission and account to the provision of the above resources.
On-premise/private cloud requirements
Cloud Interface access to the provision above infra
Public cloud requirements
AWS or Azure account
Infrastructure Design:
Infrastructure Components:
Basic Requirements: Size, Memory* Size: Standard B2ms (2 vcpus, 8 GiB memory)
Infrastructure type: Services, DB servers, Storage, etc, LoadBalancer, DNS
* OS: Linux (ubuntu 16.04)
* Storage: Standard, Storage (general purpose v1)
* Disk: 50 GiB (Premium SSD)
* DB: PostgreSQL 9.6 with Basic, 2 vCore(s), 10 GBEnvironments to set up (Development, Production, etc)
Dev, QA, UAT and Prod
Deployment Architecture:
Every code commit is well reviewed and merged to master branch through Pull Requests
Each merge triggers a new CI Pipeline that ensures CodeQuality and CI Tests before building the artefacts.
Artifacts are version controlled and pushed to Artifactory like Nexus. https://repo.egovernments.org
After successful CI Jenkins bakes the Docker Images with the Latest Artefacts and pushed the newly baked docker image to Docker Repo.
Deployment Pipeline pulls the Image and pushes to the corresponding Env.
Deployment Scripts: https://github.com/egovernments/egovdevops/tree/master/ear-deployer
Deployment Configurations:
Structure of git repo
Deployment git repo - Environment Configuration (Dev.yml, QA.yml, etc...)
An example configuration can be found at ear-deployer
Git Strategy:
Public & Private repo (platform & implementation) -
Public Repositories: All the eGov Platform related projects were kept open, and it's under open source.
DIGIT BPA: https://github.com/egovernments/digit-bpa.git
Folder Structure:
Private Repositories: Usually our Implementation/Customer specific Projects goes under the private repo.
With some exceptions, eGov Platform projects were made private like our DIGIT-BPA-DCR.
DIGIT DCR: https://github.com/egovernments/digit-dcr.git
Folder Structure:
Creating an ERP cluster:
Spinning up VM on cloud provider/on-premise
Apache Web Server (Configuring Apache2 as a web server and Load Balancer)
Wildfly Application server
Elastic Search
DB setup
Redis (cache/token/session server) and NFS system (Filestore)
Step by Step cluster creation : ERP Stack Setup
Platform Build and it’s stages:
Checking out the code from GitHub
All the necessary packages, and dependencies where pushed/published in the package manager repository (Nexus). This contributes in the continuous integration.
The maven Build process (includes the JUnit tests) - Here maven helps to build EAR(Enterprise Application aRchive) file.
An artifact is an assembly of any project assets that you put together to test, deploy or distribute your software solution or its part.
> Examples are a collection of compiled Java classes or a Java application packaged in a Java archive, a Web application as a directory structure or a Web application archive, etc.Deploy the same to the respective environments:
CI Setup: Configuring Build Jobs - Jenkins, CI Job Structure, Build Flow
CD setup: Deploy a service, Continuous Delivery Pipeline, Deployment Flow.
Two ways of Deployments:
Manual Deployment - Copy the EAR files on deployment folder and start the server.
Hot Deployment - using WildFly management console(it always listens at 9990), and using curl upload and publish the EAR.