CS6320:  SW Engineering of Web Based Systems

 

Startup Engineering (coined from a Stanford Class)

 

How do you setup an infrastructure for a web-based or the web part of a company?

 

After understanding what your needs are ---you will look for solutions in each sector (sales, marketing, etc)

 

HOWEVER, if you are delivering content or sales directly on the web here is a structure you might consider

 

Goals: Easy, Cheap/Free when makes sense, minimize personnel initially

1) Decide on if you want Cloud as IAAS or PAAS: Select a Cloud service to host your systems (best to keep to one platform)

 

IAAS players

 

 

PAAS players

 

 

  • note: there are times when software as a service like Salesforce may make sense for you but, those are specific needs and we are trying to talk very generally here

 

2) You should create the notice of minimally development/ test/ production services/machines.

  • you don't roll out some new code right away without testing it.

  • you don't develop on your test or production machines

  • typically you seperate development machines form test from production

 

3) You need to similarly manage your code ---having development and master/production branches in a versioning, software management system like github or bitbucket or ??

  • bitbucket (free account does not have to be opensource)

  • github (free account must agree to opensource)

 

 

4) Data - what are your needs persistent, content delivery networks (CDN --about performance not only data)

  • generally recommend that you use the same si

 

5) Performance and tools -Cache, distirbuted systems, tools ---what are your needs

  • most of the players in #1 offer solutions but, you if you have big plans or needs you might rightfully think that companies like Amazon and Google are in this business...so they could offer you solutions to grow...but, are they more $$

 

 

 

Here is an example where you use Amazon EC2 for development and have 2 different instances for testing/staging and production on Heroku

 

My comments

---not sure it is wise or needed to have development cloud platform different than Staging and Production ---the support could cause problems
even in cloud as IAAS. Note: Heroku is PAAS and EC2 is IAAS. How might differences in the setup cause issues?

Develop on Laptop or a remote machine (below EC2)

---develop on Laptop may be convinient (no ssh) and maybe faster, but, negative is you must setup the Laptop. What if your co-developers have the wrong setup or wrong versions of software? your versioning control may help but, there is more possiblities to have problems. It may be cheaper to develop on a laptop.

---develop on EC2 means you can setup an AMI (amazon machine instance) that all developers use with pre-installed and configured development tools. So, this saves time from having to do this for each laptop. However, doing ssh to EC2 means it is slower and may not be as easy to develop.

 

from sw engineering classa at stanford

 

 

© Lynne Grewe