Jump to: navigation, search

Difference between revisions of "Solum/HighLevelRoadmap"

(Milestone 2014.2.3: Juno-3)
(Milestone: Mitaka)
 
(19 intermediate revisions by 3 users not shown)
Line 21: Line 21:
  
 
==Solum Roadmap==
 
==Solum Roadmap==
=== Milestone 2014.1.2: [[Solum/Milestone1|Basic app deployment functionality]] ===
+
=== Previous milestones ===
 
* [[Solum/FeatureBlueprints/ApplicationDeploymentAndManagement|SOLUM-R1]]: Application deployment/management [R1.1 (Story 1 and 2 only), R1.2, R1.3]
 
* [[Solum/FeatureBlueprints/ApplicationDeploymentAndManagement|SOLUM-R1]]: Application deployment/management [R1.1 (Story 1 and 2 only), R1.2, R1.3]
* [[Solum/FeatureBlueprints/LanguagePackFramework|SOLUM-R2]]: Capability: Language pack framework along with automatic selection of packs [R2.1]
 
* [https://blueprints.launchpad.net/solum/+spec/enable-languages SOLUM-R3]: Enable language ‘X’ via the language pack framework [Pick any of Java, Ruby, Python, Node.js, PHP]
 
 
* [https://blueprints.launchpad.net/solum/+spec/user-authentication SOLUM-R4]: User Authentication
 
* [https://blueprints.launchpad.net/solum/+spec/user-authentication SOLUM-R4]: User Authentication
 
* Blueprints: https://launchpad.net/solum/+milestone/milestone-1
 
* Blueprints: https://launchpad.net/solum/+milestone/milestone-1
 
=== '''Milestone 2014.1.3: Get Ready for Atlanta Summit''' ===
 
* UI mockup to reflect program vision
 
 
* Reliability improvements: bug fixes
 
* Reliability improvements: bug fixes
* Usability improvements: documentation, sample apps, better logging
+
* 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 2014.2: Juno-1: Source to Image Pipeline-phase 1''' ===
+
=== '''Milestone: Kilo''' ===
 +
* '''[[Solum/FeatureBlueprints/NewCLI|New CLI]]''': as an app developer, I have access to user friendly CLI commands for managing my apps on Solum
 +
- 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   
  
[[File:Solum-SourceToImagePipeline.png|framed|center]]
+
* '''Git Experience'''
 +
- 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.
  
* Ability to configure unit tests to be run as part of CI pipeline
+
* '''Custom Language Pack'''
* Postpone: Ability to configure functional tests to be run as part of CI pipeline, via spinning up a temporary test assembly
+
- '''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).
* Postpone: Custom language packs
+
- '''as an application developer''', I can codify setup of my custom language stack, and have Solum use my custom stack for CI+CD.
* Nova docker driver improvements
+
 
* Logging improvements (for operator persona)
+
* '''Predefined language packs'''
  
=== '''Milestone 2014.2.2: Juno-2: Source to Image Pipeline-phase 2''' ===
+
- Implement Python language pack + sample app
* Postpone: Historical status of CI pipeline runs: status of build, unit tests, functional tests [success/failures, time metrics, execution logs]
+
- Implement Java Tomcat 7 language pack + sample app
* Postpone: Streaming logs – consolidated view of logs for a given app (user/developer persona)
+
- Implement Ruby on rails language pack + sample app
* Ability for user to configure source to image pipeline (Pipeline resource)
 
* CLI operations to support source to image pipeline
 
* UI console to support source to image pipeline
 
  
=== '''Milestone 2014.2.3: Juno-3''' ===
+
* '''MySQL Trove'''
 +
-  Demonstrate MySQL Trove integration with an app deployed on Solum
  
* '''Custom Language Pack'''
 
- '''As an operator''', I can codify setup of custom build+language stack, and make it available to application developers so that they can start using the custom stack for CI (build, run tests, generate DU).
 
- '''as an application developer''', I can codify setup of my custom build+language stack, and have Solum use my custom stack for CI.
 
  
* '''Access to logs''' : as an application developer, I would be able to access build and test logs for my CI invocations on Solum.
+
* '''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
  - I want my logs to be accessible only to me.
+
- 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 be able to view summary log data (build pass/pail, test pass/fail, number of tests passed/failed etc)
  - I want to be able to drill down into details logs
+
- 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
  
* ''Retry on failures''': as an application developer, if the CI tests faiI I would be able to trigger rerun of the tests without resubmitting the code.
+
* '''Sever version''': show server version in the CLI
  
* '''Jenkins Integration''': as a customer already using Jenkins for my CI needs, I would be able to integrate my Jenkins CI instance with Solum and have access to Solum features (i.e. persist build output produced by Jenkins in glance via Solum, automated deployments, etc.)
+
=== '''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)
  
* '''Trove Integration''': as an application developer, I would be able to deploy apps that have ready access to trove MySQL service.
+
=== '''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)
  
=== '''Milestone 2015.1''' ===
+
=== Future milestones ===
* .Net support (via Mono)
 
 
* Service Add-on framework
 
* Service Add-on framework
* Enable following services via the Add-on framework: MongoDB, NewRelic, Trove, MemCache
+
* Enable following services via the Add-on framework: MongoDB, NewRelic, MemCache
 
* Application performance monitoring (CPU, memory utilization, etc.)
 
* Application performance monitoring (CPU, memory utilization, etc.)
* Manual scaling
+
* Secure store of secrets (if operator choice is anything other than barbican, ensure user secrets are stored encrypted in the database
* Dense packing
 
* Application Isolation
 
* Complete application deployment and management API + CLI listed @ https://wiki.openstack.org/wiki/Solum/FeatureBlueprints/ApplicationDeploymentAndManagement
 
 
 
=== '''Milestone 2015.1.2''' ===
 
* Auto scaling
 
* Self-healing
 
 
* Custom SSL Certificates
 
* Custom SSL Certificates
* Container Sleep/Wake
+
* 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.
* Blue/green deployments
 
 
 
=== '''Milestone 2015.1.3''' ===
 
* Environments (Dev, Test, Prod, custom)
 
** Application Lifecycle Management (promote code from dev to test to prod)
 
* SDK for interfacing with the PaaS REST API
 
* Roles and privileges
 
 
 
 
 
=== '''Milestone 2015.2''' ===
 
* Non-web workloads (Background and scheduled jobs)
 
* HA via distributed placement of load balanced set of code container instances
 
* Network isolation - dedicated private network for applications
 
* IDE Plugins for Eclipse, IntelliJ, JBoss Studio, Komodo
 
* Integration with online IDE
 
* Online developer sandbox
 
* Additional services
 

Latest revision as of 16:26, 24 November 2015

System Overview

SolumOverview.png

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

Solum Roadmap

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

  • New CLI: as an app developer, I have access to user friendly CLI commands for managing my apps on Solum
- 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     
  • Git Experience
- 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.
  • Custom Language Pack
- 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. 
  • 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
  • MySQL Trove
-  Demonstrate MySQL Trove integration with an app deployed on Solum


  • 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
- 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
  • 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.