Over the years, building and testing software that runs on physical servers has become the status quo. The database is the most important part of the application. Usually, it’s the only dependency an application has. Testing has become a no-brainer. Most of the tests are unit-tests and we run end-2-end tests manually or with Selenium to see if everything integrates properly.
Moving an application to the cloud is usually not too difficult. It will require some minor modifications. So why change anything to the way we build software?
In the end, every application runs on a computer. The cloud, and on-premise both depend on physical servers in a datacenter. The difference is who owns them, who’s responsible for maintenance, and who pays for them. …
Applications automate processes. Somebody explains the process and someone else builds the application. Seems straight forward, right? Or is it? Perhaps this video changes your mind:
Describing a task as simple as making a sandwich seems simple, but as you can see, plenty of things that can go wrong. Ironically, many software development projects have a lot in common with this video.
It’s impossible to describe a process perfectly. As you can see, assumptions can have a big impact on the final product. It’s not just the person who writes the instructions who’s making the assumptions, the person who’s reading them does too. …
Canary-releasing or zero-downtime/blue-green deployments are made easy by the tools and techniques we have today. Running a second instance of a service is a piece of cake. Especially in the cloud. But aren’t we forgetting something?
Canary-releasing and blue-green deployments have something in common: They require two versions of the software to be up and running at the same time.
It’s not just a matter of running multiple instances of software somewhere. You’ve got to think about backward compatibility, too! One of the instances will break if it’s dependency isn’t compatible.
What’s the most common shared dependency? The database! Blue-green deployments and canary-releases require your database to be backward-compatible. Use a pattern called Expand and Contract, or Parallel Change to get it sorted! …