Used to do DevOps before they even called it that way: Linux. Python. Perl. Java. Docker. For fun and profit. CTO level generalist working for a mid-sized tech-centric company.
Dresden, Germany
Though it might make things a bit bigger or more complex to handle: We moved to containers, specifically Docker, also for this purpose which provides a certain level of abstraction whether an application runs on-premise or within some cloud as long as you manage to provide it with all the resources needed. I am unsure however whether this is of real help here as this would require the in-cloud services you use to be easily replaceable with on-premise implementations - not sure if there is an "on-premise Azure Storage" in example. So while this worked in our environment (in example while using postgresql), not sure whether it works for you.
Second strategy, if this is not possible: Have a look at your codebase, try to introduce some layer of abstraction and try to keep all the "environment specific" code in one or two small modules below well-defined interfaces. This, however, may be considerable effort as well, depending upon your code quality (which you already mentioned) and the overall complexity of your application.
I'd definitely, at first, try very hard to get the "cloud" application to run on-premise by providing the required infrastructure locally. Maybe you have someone (Microsoft? Docker?) to help you with that, too, if there's a budget for consulting in that project.
Thanks! I'v heard a lot of good things about Docker, but haven't had the chance to try it. Jeff Atwood in the podcast mentionted by @ben
was also very positive about it.
Didn't think of possibility to have Azure Storage run internally, will check out if possible. Ok, I have some digging to do now, thanks!
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Though it might make things a bit bigger or more complex to handle: We moved to containers, specifically Docker, also for this purpose which provides a certain level of abstraction whether an application runs on-premise or within some cloud as long as you manage to provide it with all the resources needed. I am unsure however whether this is of real help here as this would require the in-cloud services you use to be easily replaceable with on-premise implementations - not sure if there is an "on-premise Azure Storage" in example. So while this worked in our environment (in example while using postgresql), not sure whether it works for you.
Second strategy, if this is not possible: Have a look at your codebase, try to introduce some layer of abstraction and try to keep all the "environment specific" code in one or two small modules below well-defined interfaces. This, however, may be considerable effort as well, depending upon your code quality (which you already mentioned) and the overall complexity of your application.
I'd definitely, at first, try very hard to get the "cloud" application to run on-premise by providing the required infrastructure locally. Maybe you have someone (Microsoft? Docker?) to help you with that, too, if there's a budget for consulting in that project.
Thanks! I'v heard a lot of good things about Docker, but haven't had the chance to try it. Jeff Atwood in the podcast mentionted by @ben was also very positive about it.
Didn't think of possibility to have Azure Storage run internally, will check out if possible. Ok, I have some digging to do now, thanks!