Just Thinkin About DevOps Stuff (and Dune)
“In this time, the most precious substance in the universe is the spice (DevOps)… The spice is vital to (Agility). The (IT Dept) and its (engineers), who the spice has mutated over (10) years, use the spice (Code), which gives them the ability to fold (time).”
DevOps enables high speed evolution.
DevOps eliminates wasted resources.
“Software is Eating the World”, “Everything Is Code”, therefore DevOps is key to all success.
- Planning docs should be in version control
TDD (Test Driven Design)
TDD is key to AI Assisted/No Code future. Took me a bit to come around, but GitHub Copilot AI was the last straw because it will clearly someday be able to write code to pass your tests, so ultimately, software development will consist of designing tests using some sort of high level language plus drag-and-drop.
Programmers will write DDD libraries to translate domain definitions and diagrams to generate the test for TDD. The human in the loop can approve or overwrite the autogenerated test conditions.
- Design docs need to clearly define exactly what success looks like in the form of tests and expected results. Written by product managers.
- Eventually, changing DDD and/or TDD code will automatically kick off the entire dev lifecycle. AI will handle implementation.
- Diagrams.net formerly Draw.io
- RedHat Portfolio Arch Center
- MS Visio
- FigJam Figma team whiteboard
- Mermaid Works on GitHub
Diagram As Code
UI Design Tools
Manage Tasks, Issues
- Azure Boards Part of Azure DevOps Server (was MS TFS).
- Trello Kanban, bought by Atlassian (Jira).
- GitHub Issues
- UrbanCode Velocity
Source Code, Designs and Docs
- Workflows For Devs
- Workflows for Ops
- Github Package Registry (GPR)
- NPM, Maven Java. Container Registry moved to GHCR (below)
- Artifactory: JFrog. Universal Artifact Mgt.
- UrbanCode Release
- Azure Artifacts
- Nexus: Sonatype. Repository. Containers.
- Language Specific Artifacts
CLI First and Automation
- Everything should be code; therefore software should have codeable API’s or SDKSs so that it can be automatable.
- If an app offers a GUI, try not to use it. Use the CLI.
- If a solution looks good but it does not offer a CLI, an SDK, or at least a REST API, skip it.
- VSCode is my default because it was conceptually built from the ground up to run in a web browser. They made a desktop version while they worked out the pure web kinks. Terminals are first class citizens.
- Learn VI or VIM because they are available on most Linux distros. Nano is easier but less likely to be installed.
Hamcrest: Matchers that can be combined to create flexible expressions of intent. Was just Java, now available for most languages.
- Unit Testing
GoLang: builtin. Lean Go with Tests
- Nancy: Dependency vulnerabilities
WebApp Run Time Testing: language neutral
- Selenium: many language options
- Puppeteer: (NOT Puppet)
- LogRocket: Web client js logging and usage analytics.
- Load Testing
- A11y (Accessibility)
- LightHouse Build time score generation with Lighthouse CLI for Node. Consider as “code quality” tool.
Leverages local build scripting and runtime testing tools, adds integration, optional deployment and delivery
- SonarQube Static code analysis
- GitHub Actions
- CloudBees (CodeShip)
- TeamCity: JetBrains
- Travis CI
- Circle CI
- AWS CodePipeline
- Azure DevOps
- Security Scan
- SysOps practices and tooling overlap with DevOps.
- For more details, see my SysOps and/or Containers pages.
- Remote monitoring should include anonymous monitoring agents in webapps.
New tickets or new issues on old tickets feed back into the Plan phase.