Upgrading Methods#

Upgrading methods are strategies IT teams use to update software or systems with minimal disruption. Imagine trying to fix a car while driving it; these methods help do just that for computer systems. Let’s break them down into simpler terms with examples:

1. Rolling Upgrade#

  • Updating parts of a system one by one, instead of all at once, to keep everything running smoothly.
  • Example: Think of a train moving by swapping out old cars for new ones without stopping. If a website uses 10 servers, IT updates one server at a time so the website keeps working for visitors.

2. Blue/Green Deployment#

  • Having two identical systems (one active, one inactive) and updating the inactive one. Once it’s ready and tested, switch users to it.
  • Example: Like having two kitchens for a restaurant. Update and improve one kitchen while using the other. When the updated kitchen is ready, switch to using it without closing the restaurant.

3. Canary Release#

  • Releasing the update to a small group of users first. If no problems arise, then roll it out to everyone.
  • Example: A new ice cream flavor is first offered to a small group of regular customers. If they love it and no issues are found, it’s then offered to all customers.

4. Active/Passive Setup#

  • Two systems are set up, one is active (handling all the work), and the other is passive (on standby). Update the passive system, and if the active system fails or needs updating, switch roles.
  • Example: Like having two light bulbs in a room, but only one is on. If the lit bulb burns out, you switch to the other bulb without being left in the dark.

5. Active/Active Setup#

  • Both systems are active and share the workload. If one needs to be updated or fails, the other takes over all the work temporarily.
  • Example: Two boats sailing together carrying goods. If one boat needs to stop for repairs, the other can carry all the goods temporarily without stopping the delivery.

CI/CD#

CI/CD stands for Continuous Integration and Continuous Delivery or Continuous Deployment. These practices are aimed at enhancing the software development process, making it faster, more efficient, and more reliable.

  • Continuous Integration (CI): This is a practice where developers frequently merge their code changes into a central repository, preferably multiple times a day. Each merge triggers an automated build and testing process. The main goal here is to detect and fix integration errors quickly, maintain a high quality of code, and reduce the time it takes to validate and release new software updates.

    Example: Imagine a team working on a website. Every time a team member commits changes to the codebase (like fixing a bug or adding a new feature), the CI system automatically runs tests on those changes to ensure they don’t break anything. If the tests pass, the changes are considered good and can be merged into the main codebase.

  • Continuous Delivery (CD): This extends CI by automatically deploying all code changes to a testing and/or production environment after the build stage. This ensures that the software can be released to customers at any time with the push of a button, making it easier to release new changes to customers quickly and safely.

    Example: Continuing with the website team example, once the CI process is complete, the CD system automatically deploys the changes to a staging environment where the website can be tested in a production-like setting. After testing, with approval, the changes can be deployed to the production environment, making them visible to the website’s users.

  • Continuous Deployment (another CD): This is similar to Continuous Delivery, but the deployment to production happens automatically without explicit approval, assuming all automated tests pass. This approach aims for an even faster cycle of releasing new changes to users.

    Example: If our website team uses Continuous Deployment, then as soon as changes pass all automated tests in the CI process, those changes are immediately deployed to the production environment without needing a manual ‘green light’. This means new features, bug fixes, and updates are made available to users as quickly as possible.

In summary, CI/CD automates the software release process from code commit to production deployment, ensuring that software can be developed, tested, and released more quickly and with fewer errors.

Seven Migration Strategies#

Migration strategies refer to the different ways an organization can move its applications and services to a new environment, such as the cloud. Here’s a simple breakdown of each strategy with examples:

1. Relocate#

  • Moving an entire data center’s worth of applications to the cloud without significant changes.
  • Example: Imagine moving your entire folder of documents from a USB drive directly to a Dropbox folder.

2. Rehost#

  • Often called “lift and shift,” this is like taking an application from one computer and installing it on another without changing the application itself.
  • Example: Moving a website from an on-premises server directly to a cloud server.

3. Replatform#

  • This involves making a few adjustments to take advantage of new cloud capabilities without changing the core architecture of the application.
  • Example: Moving a database to the cloud and using the cloud provider’s database services for better performance.

4. Refactor/Rearchitect#

  • This is a more complex approach where you modify your application to fit well in the cloud environment, which allows it to be more scalable and resilient.
  • Example: Changing the code of an application so it can run on serverless computing services like AWS Lambda.

5. Repurchase#

  • Moving from a traditional licensed software model to a cloud-based subscription service.
  • Example: Switching from an on-premises CRM system to a subscription-based service like Salesforce.

6. Retain#

  • Keeping some applications as they are, usually on-premises, because they are not suitable for the cloud or it’s not cost-effective to move them.
  • Example: An old application that runs on outdated hardware that’s not supported in the cloud.

7. Retire#

  • Turning off applications that are no longer needed.
  • Example: Discontinuing an old application that has been replaced by a new cloud service.

These strategies help organizations decide the best approach to take when moving to the cloud based on cost, technical capabilities, business needs, and other factors.