Goals |
Commercial software and services |
Research software development, use, and distribution |
People |
Industry software engineers |
Research software engineers |
Accessibility |
Freedom to access from browsers, and anywhere with an internet connection |
More secured access from possibly a limited set of internet connections |
Maintenance |
Request, use, and throw away when done |
Constantly running resources that require maintenance and monitoring |
Staffing |
No staffing required |
Requires Linux administrators and user support specialists |
Scientific Software |
Software and services can be modular, and optimized for the application or service. |
Requires complex software stacks with conflicting dependencies and variable architectures to co-exist on a resource. |
Scaling |
Scaling is typically automated. |
Many options for scaling, and manual practices make it challenging for a cluster user or developer to know best practices. |
Software Distribution |
Complete freedom to use any software distribution or package manager. |
Software is likely to come from external resources to be installed via a package manager or module system for the user. |
Permissions |
Complete freedom |
Logically, only administrators can have elevated privileges to install software or otherwise interact with resources. |
Accessibility |
Browser and command line, even from mobile |
Accessibility is primarily by way of the command line, with limited access to interactive notebooks. This is a huge potential area for development for rse-ops |
Testing |
Automated testing and deployment alongside and integrated with cloud resources |
Automated testing typically separate from the HPC resources |
Dependency Management |
Easy to use bleeding edge software, and install only what you need when you need it |
A hodge-podge of dependencies (versions and for different architectures) must co-exist on the resource |
Community Standards |
Significant time and effort to establish standards for containers |
Traditionally not as involved in the same efforts |
Continuous Integration |
Well established practices and integration of version control with build, test, deploy |
Limited interaction with traditional CI services, local deployment and custom runners is promising |
Continuous Deployment |
Comes down to pushing containers to registries for production systems |
No best practice established, but can interact with resources in some situations to deploy |
Monitoring |
Monitoring is well integrated into services |
Must "roll your own" monitoring, but DevOps services (e.g., Grafana, Prometheus) are used sometimes. |
Security |
DevSecOps is leading the way to make security an automated part of the development lifecycle |
Security is unlikely to be automated, and a greater challenge with many users sharing the same space. |