techzim surge: important considerations for hosting web or mobile apps
DESCRIPTION
TRANSCRIPT
Anthony Somerset
IMPORTANT CONSIDERATIONS IN BUILDING AND HOSTING WEB AND MOBILE APPS
ABOUT
• Owner, Somerset Technical Solutions
• Started company in 2009
• Worked with and in 2 Startups in that time
• ello group
• W3 EDGE
• Primarily focused on managing webserver infrastructure
• Day to day work is supporting clients & manage there servers
• Some web hosting too
• Motorsport Nut (the 4 wheel variety!)
ROADMAP
• Good Coding Principles• Security• Hosting Considerations• Q & A
GOOD CODING PRINCIPLES
“There are two ways to write error-free programs; only the third one works.”
Alan Perlis, "Epigrams on Programming"
GOOD CODING PRINCIPLES
• Use Open Source where possible – chances are its easier to find developers
• We all like free right?
• Try to stick to known good coding standards
• Use a code framework - They usually have a mature code base
• Often allows you to get to writing your code quicker without worrying about low level stuff
• Think about the future where you can - Avoid Technical/Code debt
• Use Revision Control Systems like Git or SVN
• http://www.bitbucket.org - free for small teams
• Use GitHub if your project is open source – most people will have accounts
GOOD CODING PRINCIPLES
• Backup!• Put your code on an external disk or memory
stick• If its just another folder on disk that’s not
backup!• Useful as a basic way to copyright your code
if needed
SECURITY
“Securing an environment of Windows platforms from abuse - external or internal - is akin to trying to install sprinklers in a fireworks factory where smoking on the job is permitted. —
Gene Spafford (in e-mail to organizers of a workshop on insider misuse)”
Anonymous
SECURITY
• Start with Good Quality Frameworks
SECURITY
• Start with Good Quality Frameworks
• Make it easy to update core components in future
• Don’t overwrite core framework components (extend/override them as required)
• Make sure your code is as modular as possible – have clear small tasks to solve
• Don’t Forget – Keep the core framework up to date too!
• Plan to accept payments via your web app? – HTTPS/SSL Certificates are a MUST!
• Secure your computers
• Hard Drive encryption – TrueCrypt or BitLocker for Windows, FileVault for Mac
SECURITY
• Backup!
• Make sure your backup is physically secure
• Encrypt your backup volume if possible
• Make sure you keep your backup device as physically separate from your computer as much as you can
HOSTING CONSIDERATIONS
Q: how many programmers does it take to change a light bulb?
A: none, that's a hardware problem
HOSTING CONSIDERATIONS
• Location – Get it as close as you can to your target audience
• Reliability – more critical in Zimbabwe/Africa
• Don’t assume you can run a server off your consumer grade connection
• Security
• If its plain shared hosting – check that your host is keeping key software up to date
• If it’s a Dedicated or Virtual Hosting – its usually your responsibility
• Scaling – Treat your infrastructure like your code
• Use tools like Chef or Puppet (Infrastructure as Code)
SHARED, VIRTUAL OR DEDICATED HOSTING?
• In the bootstrap phase get the minimum needed to fulfill the requirements
• You can always upgrade later
• Try and avoid lengthy contracts or commitments - avoid anything longer than 12 months
• Physical Hardware has its own constraints and caveats
• Hardware failure takes longer to recover
• You cant be as flexible to quickly changing demand
• The sweet spot for most tends to be Virtual Servers
• If you know you will need a lot of servers over several locations – Amazon Web Services is your friend
HOSTING CONSIDERATIONS
• Backup!
• Confirm who is responsible for it? You or the Host
• Shared Hosting – usually backing up your code, environment specific files and database are enough
• Ideally automate your process to store it offsite – Something like Amazon S3
• Virtual or Dedicated – more complex as you have to backup server configuration as well
• Puppet or Chef help you here!
• Speak to your host – they may have good deals on reliable backup solutions
CONCLUSION
• Code to known standards and utilize popular open source frameworks as your base
• Try to make your code easy to maintain and secure – avoiding Technical Debt
• Choose a reliable host as close as you can get to your target market
• Make sure you have regular backups of everything valuable to you, and keep them just as safe too
QUESTIONS?