Skip to content

Instantly share code, notes, and snippets.

@jahe
Last active June 15, 2020 09:04
Show Gist options
  • Save jahe/e2837984076123290e1ade9c000d12d8 to your computer and use it in GitHub Desktop.
Save jahe/e2837984076123290e1ade9c000d12d8 to your computer and use it in GitHub Desktop.
Software Engineering

Software Engineering

Continous Integration vs. Continous Delivery vs Continous Deployment

  • Continous Integration (CI)
    • Code is built + Unit/Integration tested on every check-in
    • Tests are executed on an environment that is downscaled in comparison to the production environment
    • Build artifacts are stored in a version controlled artifact repository
    • Build artifacts of a successful build are automatically deployed on a test environment
    • ... now you are ready for the next Step: Continous Delivery
  • Continous Delivery (CDel)
    • Your application is deployable every time
    • Your teams focus is on releasable software instead of focusing on features
    • Every team member gets a fast feedback on every change whether the artifact is releasable
    • On demand deployment of every version per mouseclick
    • ... now you are ready for the next Step: Continous Deployment
  • Continous Deployment (CDep)
    • CDel vs. CDep: CDel - You are decinding when to deploy into production. (You have the choice) CDep - Every successful build is getting deployed to production automatically.
    • Feature Toggles are making it possible to deploy to production without using the new (work in progress) features
    • Pro: Fast/Early Feedback also for the deployment of features that are currently in development

Principles

YAGNI (You aren't gonna need it)

"Always implement things when you actually need them, never when you just foresee that you need them." - Ron Jeffries

KISS (keep it simple, stupid)

Most systems work best if they are kept simple rather than made complicated; therefore, simplicity should be a key goal in design, and unnecessary complexity should be avoided.

Overengineering

The act of designing a product to be more robust or have more features than often necessary for its intended use.

Technical debt

Reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment