[mas 500] various topics

Post on 13-May-2015

324 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MAS.500 - Software Module - Rahul Bhargava

Various Topics 2014.11.27

Topics

❖ Homework Share-back

❖ Servers / CLI

❖ NecSys

❖ Security

❖ Client/Server Products

Servers / CLI

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

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

Security

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

Client/Server Products

An Example To Think With

Realtime Signage

Servers: Client/Server

Your AppClient

The Old WayOpen a custom socket and send data

back and forth in some format

The New Waya) ASync: Client make HTTP request,

your app returns JSON.b) Sync: Client opens a persistent WebSocket, data is sent back and

forth.

Data

Servers: Development Architecture

Server(Windows, Mac, Linux, etc.)

Your App

Hardware(your computer, VM, etc.)

Zero-configuration, opens its own port

and handles requests

Built-in Framework Server(Flask, Rails, Django etc)

Servers: Production Architecture

Server(Ubuntu)

Web Server(Apache2)

Gateway(mod_php, fastCGI, WSGI,

passenger)

Your App

Hardware(VM)

Server-specific application settings

Configuration files

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

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

Homework

❖ bit.ly/mas500f14

top related