Improving FOLIO's SDLC
This is a working document on improving FOLIO’s software development lifecycle(SDLC). There are some blockers that forces the current state of FOLIO’s SDLC. Removal of these blockers will help FOLIO guarantee quality releases and improve development speed.
NB: In the table below, Integration tests is synonymous with Karate tests. The solutions listed are not the only solutions possible.
Category | Problem | Solution(s) | Effort |
|---|---|---|---|
Build |
| Develop resource efficient dev environment. Busybee environment uses 10GB of RAM instead of >24GB RAM. Currently under trial with Folijet and Thunderjet. | S |
Test |
| create testing SIG or delegate to similar group create standards for Karate test investigate karate test framework viability monitor overall health of integration tests investigate cross-cutting concerns for integration tests | L |
Test |
| require 100% pass rate at many points during development and release | M |
Test |
| engineering collaborates with kitfox to resolve stability issues | M |
Test |
| Propose methodology for testing modules with heavy kafka usage | M |
Test |
|
| L |
Test |
| require completion of performance before a flower release | S |
Test |
| provide build of FOLIO with 100% pass on integration and e2e tests. | S |
Test |
| We need to bring production scenarios into the SDLC. This could be different on a per module basis. for Data Import, have a repository of job profiles from production systems. We only need to store the “shape”, doesn’t require actual production reference data. More details incoming. | XL |
Test |
|
| L |
Deploy |
| If we take away these environments, what left of the SDLC? How can we function without them? Turn them to nice to have rather than mandatory? | L |
Deploy |
| introduce standards on modules for inclusion of correlation identifier have OKAPI return a correlation identifier for every request | M |
Release |
| start having monthly releases. We could call them sanity/prerelease/alpha. It will not result in official artifacts. It could result in a deployment to bugfest. This allows us to optimize the steps needed for release, provide interim builds that can be tested. Eventually, these mini releases could be converted to full blown releases. | L |
Release |
| create release SIG or designate existing group Introduce enough release tooling and repo standards such that one person can perform a FOLIO release. | L |
Release |
| provide dashboard for release build health | S |