Solum/HighLevelRoadmap

Program Scope
For developers: Provide an easy to use, fast experience developing applications for OpenStack, by providing an automated CI/CD pipeline.

For release managers: Provide streamlined application lifetime management via Environments (dev,test,staging,prod), permissions(I.e. who can deploy to prod),what tests get run in which environment, usage/cost information per environment, etc

The program vision consists of the following 4 items-

1. CI: Source to image (continuous integration pipeline) - GIT, build+unit test, generate image, run functional tests, persist image for deployment via Heat 2. CD - automated deployment, management of running apps(monitoring, autoscaling, self-healing), blue green deployments, application versioning and rollbacks 3. Environments - permissions(I.e. who can deploy to prod),what tests get run in which environment, usage/cost information per environment, etc 4. Developer tooling - IDE plugins, SDK's, CLI, UI console

Previous milestones

 * SOLUM-R1: Application deployment/management [R1.1 (Story 1 and 2 only), R1.2, R1.3]
 * SOLUM-R4: User Authentication
 * Blueprints: https://launchpad.net/solum/+milestone/milestone-1
 * Reliability improvements: bug fixes
 * Ability to configure unit tests to be run as part of CI pipeline
 * Retry on failures: as an application developer, if the CI invocation faiIs due to any reason, I would be able to trigger rerun of the CI workflow without resubmitting the code.

Milestone: Kilo
- I can register a new app with Solum - I can have automated unit tests executed on my latest code in git - I can invoke unit tests + auto deployment of my latest code in git - I can view list of my apps registered with Solum - I can view detail status of individual apps registered with Solum - I can delete an app from Solum - I can register a new custom language pack to support deployment of my app needing a custom runtime
 * New CLI: as an app developer, I have access to user friendly CLI commands for managing my apps on Solum

- As an app developer, I want to view all the possible trigger URLs available for my app, so that I can can manually configure my code repository to trigger specific workflows on my code in response to events on my codebase. - As an app developer, I want the CLI to provide an option to set up such a trigger on my repository when I register a new app to Solum, requesting minimal credentials from me to access the repository. - As an app developer, I want the CLI to provide an option to set up such a trigger on my repository after my app has been registered, likely as part of the "solum app update" command.
 * Git Experience

- As an operator, I can codify setup of custom language stack, and make it available to application developers so that they can start using the custom stack for CI+CD (build, run tests, generate DU). - as an application developer, I can codify setup of my custom language stack, and have Solum use my custom stack for CI+CD.
 * Custom Language Pack


 * Predefined language packs

- Implement Python language pack + sample app - Implement Java Tomcat 7 language pack + sample app - Implement Ruby on rails language pack + sample app

- Demonstrate MySQL Trove integration with an app deployed on Solum
 * MySQL Trove

- When any errors occur in unit testing, build, or deploy, I have access to meaningful log info so that I can effectively troubleshoot what went wrong - I want my logs to be accessible only to me - I want to be able to view summary log data (build pass/pail, test pass/fail, number of tests passed/failed etc) - I want to view my logs scoped to individual pull requests - I want to be able to drill down into detail logs - I would like to see user friendly logs i.e. logs meant to be consumed by an app developer persona - I want to access real time streaming logs from within the CLI console
 * Access to user friendly logs: AppDev : as an application developer, I would be able to access build, test and deployment logs for my apps on Solum


 * Sever version: show server version in the CLI

Milestone: Liberty

 * Convert to new API resource objects + deprecate old ones (e.g. assemblies)
 * Update CLI to use new API objects
 * Convert bash scripts to python for more reliability and easier debugging (tech debt reduction)
 * Non-destructive app updates (app keeps same IP, no more than couple second blip in availability is the goal)

Milestone: Mitaka

 * API/CLI support for user to view app deployment history
 * Non-destructive app updates (app keeps same IP across successive app deployments)
 * Scale up/down web tier instances (manual for now, will tie in to Heat-autoscaling with customer choice of reference architectures)
 * Convert bash scripts to python for more reliability and easier debugging (tech debt reduction)
 * Support for micro-service based multi-tier application architectures
 * Support setting of app parameters both at app create time and app deploy time
 * Ability to configure Container/VM size and/or ratio (the ratio part is up for debate, but on a 1:1 we need a way for the user to configure what flavor class they need/want). I'd also like to see choice of infrastructure beyond just Nova (such as Ironic bare metal... serviced via swapping out the appropriate Heat template for the chosen deployment form factor)

Future milestones

 * Service Add-on framework
 * Enable following services via the Add-on framework: MongoDB, NewRelic, MemCache
 * Application performance monitoring (CPU, memory utilization, etc.)
 * Secure store of secrets (if operator choice is anything other than barbican, ensure user secrets are stored encrypted in the database
 * Custom SSL Certificates
 * Reference architecture selection. Ability to allow user to pick from a few pre-set architectures (which Solum would instantiate via different Heat templates), and eventually allow customer full ability to modify/edit Heat template for ultimate customizability.