[Mas 500] Various Topics


Published on

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

[Mas 500] Various Topics

  1. 1. MAS.500 - Software Module - Rahul Bhargava Various Topics 2014.11.27
  2. 2. Topics ❖ Homework Share-back ❖ Servers / CLI ❖ NecSys ❖ Security ❖ Client/Server Products
  3. 3. Servers / CLI
  4. 4. Servers ❖ Virtual Server vs. On-Demand Cloud Server vs. Physical Server ❖ Lots of unix options ❖ APT: Debian, Ubuntu ❖ RPM: Redhat, CentOS, Fedora ❖ Decide based on ability to get help ❖ most folks I know in the lab use Ubuntu ❖ lots use S3 for flexible hosting
  5. 5. CLI ❖ Commands: ❖ each command does one thing ❖ commands can be chained together by piping them ❖ Permissions ❖ users can be in one or more groups ❖ permissions can be set for owner, group, other ❖ read, write, and execute are controlled independently ❖ super-user can do anything, let users pretend to be root via “sudo” ❖ Cron is useful to schedule things ❖ live tour of Ubuntu
  6. 6. Security
  7. 7. Security ❖ key-based login demo ❖ never commit passwords in code ❖ database, api, etc. ❖ config via template file ❖ security audit - have someone outside the team do it ❖ ssl certificates for secure communications with clients
  8. 8. Client/Server Products
  9. 9. An Example To Think With Realtime Signage
  10. 10. Servers: Client/Server The Old Way Open a custom socket and send data back and forth in some format Client Your App Data The New Way a) ASync: Client make HTTP request, your app returns JSON. b) Sync: Client opens a persistent WebSocket, data is sent back and forth.
  11. 11. Servers: Development Architecture Your App Server (Windows, Mac, Linux, etc.) Hardware (your computer, VM, etc.) Zero-configuration, opens its own port and handles requests Built-in Framework Server (Flask, Rails, Django etc)
  12. 12. Servers: Production Architecture Your App Gateway (mod_php, fastCGI, WSGI, passenger) Web Server (Apache2) Server (Ubuntu) Hardware (VM) Server-specific application settings Configuration files
  13. 13. Deployment: Ideas ❖ Release Early, Release Often ❖ Extreme Programming is one methodology ❖ Managing like a Product ❖ Have development, staging & production copies ❖ Follow a release process ❖ Automate so you don’t mess it up
  14. 14. Deployment: Managing a Product ❖ Playground to develop code ❖ Commit when code works Local Machine Development System Staging System Production System ❖ Resembles the production system ❖ Updated frequently with latest code as an integration point between multiple developers ❖ Duplicate of the production system ❖ When ready to release: freeze/tag code, push to staging ❖ Once verified on staging system, push to production and test again
  15. 15. Homework ❖ bit.ly/mas500f14