Old Approach
Pros:
Sunbird was installed using a single script.
Very minimal set of variables to be defined prior to install (about 40 odd variables)
2 hours installation
- Very less technical knowledge required to setup
Cons:
Customization was tough
Customization possible only for docker images
No control on contents and frameworks
Cannot analyze data patterns
Only core components available for use but not Knowledge Platform and Data Pipeline
New Approach
Pros:
All components can be installed - LP, DP and Core service's
Easy customization of all components by forking the desired repository
Spin up a Jenkins instance and start building on your own
Everything is a Jenkinsfile
- Version control of build and deploy process using Jenkinsfile
- Visibility on how Sunbird does build and deploy by just looking at the Jenkinsfiles
- Docker images can be stored in any registry and artifacts in azure blobs or locally on Jenkins
- Seamless and quick rollbacks
- All features, updates and process of Sunbird available to end users
85% of ansible variables refactored
- Only about 100 odd variables need to initialized for entire setup
- 600 variables refactored to about 100 odd variables
- Every comfiguratuok can be overridden based on requirements
- Easy upgrades by just using the latest GA certified tag by one click build and deploy.
- Total control and content and frameworks
- Minimal hardware - Just 10 servers for entire setup
- Easy scaling of infrastructure - All through ansible inventory and Jenkinsfiles
- Production ready setup and easy promotion of code from dev to production
- Anyone can run a full stack sunbird with home brewed customizations
Cons:
- Takes a day's effort
- Medium level technical skills required to setup
- Only azure blobs supported to store artifacts at this point of time (can be skipped if stored locally on Jenkins)
How this was done?
- Converted every freestyle Jenkins job to a Jenkinsfile
- Constant and non mandatory variables were set to its default which is as per standards
- Setting up Jenkins and all required jobs using 3 scripts.
- Mandatory variables keys provided in a standard template along with detailed descriptions which needs to be filled