SOFTWARE DEVELOPMENT

The Process and Price of Software Releases

It’s easy to get caught up in the plan­ning and build­ing of your soft­ware. Naturally, that’s where all the con­cen­trated ef­fort should be at the be­gin­ning of the process. But it’s im­por­tant to con­sider the process of turn­ing what is built into a prod­uct that your mar­ket can en­gage with. This ar­ti­cle is fo­cused on the re­lease process of the soft­ware life­cy­cle and specif­i­cally how WorkingMouse en­sures that the soft­ware built is de­ployed and hosted ef­fec­tively.

Types of Cloud Hosting

Cloud host­ing is how we make your soft­ware avail­able over the in­ter­net. Broadly speak­ing, there are two key types of host­ing - pri­vate or pub­lic cloud host­ing.

What is pri­vate host­ing?

Private host­ing is where the ap­pli­ca­tion is de­ployed on a pri­vate server. To try and put it sim­ply, you use pri­vate servers which may be owned and op­er­ated by your com­pany (or a pri­vate cloud host­ing provider) in­stead of gen­eral pub­lic servers (discussed be­low). The ben­e­fit of us­ing pri­vate cloud is the ex­tra con­trol and se­cu­rity cus­tomi­sa­tions avail­able. The trade-off is that it is gen­er­ally more ex­pen­sive than pub­lic host­ing and the in­abil­ity to use au­toma­tion tools may mean it’s slower to setup.

WorkingMouse ap­pli­ca­tions can be hosted pri­vately. However we do not setup the en­vi­ron­ment. There are some pri­vate host­ing com­pa­nies that pro­vide this ser­vice or al­ter­na­tively WorkingMouse can be con­tracted on a time and ma­te­ri­als ba­sis.

What is pub­lic host­ing?

Public host­ing com­pa­nies like AWS and Azure pro­vide servers where any­one can host their ap­pli­ca­tion (for a fee of course). While there is less con­trol and cus­tomi­sa­tions, the use of au­toma­tion tools like Kubernetes and RDS (both ref­er­enced be­low) can help speed up the process of set­ting up a pub­lic cloud en­vi­ron­ment and re­duce costs. WorkingMouse cov­ers the cost of cre­at­ing a stan­dard en­vi­ron­ment on AWS and Azure.

Cost of re­leas­ing soft­ware

The cost of re­leas­ing the soft­ware is com­prised of set­ting up the cloud en­vi­ron­ment and the ap­pli­ca­tion re­lease process. Let’s ig­nore the ap­pli­ca­tion re­lease process for now.

The ques­tion we’re ask­ing is how much does it cost to setup a se­cure, load bal­anced, dis­trib­uted cloud en­vi­ron­ment. This is a loaded ques­tion and will de­pend en­tirely on the re­quire­ments of the en­vi­ron­ment. But for the pur­poses of pro­vid­ing an an­swer and not skirt­ing around the ques­tion, we’ll use our com­mu­nity server setup as an ex­am­ple.

The scope of the setup in­cludes:

  • 3x web servers - they han­dle HTTP(S) re­quests from the clients and serve up the web page/​app.
  • 3x file servers - a clus­tered file sys­tem con­tain­ing both the source code of the ap­pli­ca­tion, as well as any ap­pli­ca­tion-spe­cific files (eg up­loaded pro­file pho­tos).
  • 3x caching servers - stores and re­turns fre­quently used bits of information” so that the web servers don’t need to con­stantly re-evaluate” com­pu­ta­tion­ally com­plex tasks. (ie it can do it once, then save that in the cache).
  • 3x data­base servers.

A very rea­son­able ques­tion would be why do we have three of each? For each group, you al­ways have an odd num­ber of servers. This is so that if one server goes down, all the re­main­ing servers can form a ma­jor­ity vote” on whether or not they think the downed server is ac­tu­ally down, and re­act ac­cord­ingly. For re­dun­dancy, we need more than one. That means if one server fails, your ap­pli­ca­tion does­n’t fail.

How much does that setup cost?

Let’s firstly as­sume we are do­ing this the tra­di­tional, man­ual way. If you have a de­vel­oper that knows ex­actly what they’re do­ing and knows every sin­gle com­mand and con­fig­u­ra­tion off the top of their head, it might take a cou­ple weeks. At $1200 per day for a DevOps en­gi­neer, you’re look­ing at around $12K. If you have a de­vel­oper that has a pretty good idea of what they’re do­ing, but needs to google some ref­er­ence doc­u­men­ta­tion around com­mands or cer­tain con­fig­u­ra­tion, it may take about 4-6 weeks ($24K-$36K). If the de­vel­oper does­n’t have any ex­pe­ri­ence that time­frame may ex­tend out to 2 months ($48K). Now re­mem­ber, this is on top of the cost of de­vel­op­ing the ac­tual soft­ware.

For some­thing this com­plex you also need a few main­te­nance scripts to keep every­thing in sync. On top of that, if a server goes down you’ll need to spend time re-cre­at­ing that server. We won’t dive into this now but you can start see­ing the mag­ni­tude of the work re­quired.

WorkingMouse’s process

As an ex­pe­ri­enced soft­ware de­vel­op­ment com­pany, we have found more ef­fi­cient ways of re­leas­ing soft­ware. Previously it was through the use of Remote Desktop Services (RDS) and cur­rently it is through Kubernetes. By us­ing these tech­nolo­gies we have been able to au­to­mate what may have pre­vi­ously been a 4-6 week process into 1 day.

We also cre­ate scripts that al­low us to eas­ily re-cre­ate any servers that go down.

The process com­mences be­fore de­vel­op­ment starts. In the ma­jor­ity of cases (where host­ing does not re­quire spe­cial con­sid­er­a­tion) the client will cre­ate their AWS or Azure ac­count be­fore de­vel­op­ment starts. That is shared with WorkingMouse who cre­ate a beta and pro­duc­tion en­vi­ron­ment dur­ing Iteration 0 (the first week of de­vel­op­ment). From that point on all beta and pro­duc­tion re­leases are made to the clients en­vi­ron­ment.

Cost to clients

For pub­lic cloud de­ploy­ments to AWS or Azure, WorkingMouse cov­ers the cost of set­ting up the server en­vi­ron­ment. This is sig­nif­i­cant ben­e­fit when the al­ter­na­tive could be spend­ing 2 months set­ting up your pro­duc­tion en­vi­ron­ment. For pri­vate cloud re­quire­ments or cus­tomised pub­lic cloud de­ploy­ments, WorkingMouse can be con­tracted on a time and ma­te­ri­als ba­sis.

The only costs are those in­curred di­rectly from the cloud provider (AWS or Azure). To get an idea of what to ex­pect, see the monthly op­er­a­tional ex­penses as­so­ci­ated with a soft­ware pro­ject.

ABOUT THE AUTHOR

Yianni Stergou

Marketing en­thu­si­ast and FIFA ex­tra­or­di­naire

Get cu­rated con­tent on soft­ware de­vel­op­ment, straight to your in­box.

How to Budget for an Agile Software Development Project

11 September 2019

What are the monthly op­er­a­tional ex­penses to bud­get for a soft­ware ap­pli­ca­tion pro­ject?

02 March 2020

What are soft­ware es­ti­ma­tions: tra­di­tional vs sci­en­tific es­ti­mates

28 July 2020

Your vi­sion,

our ex­per­tise

Book an con­sul­ta­tion