What is a stack? Do I need to know?
WIMP, WAMP, LAMP, LIMP A collection of software that inter-operates to complete a task.
Why think about it?
Standards
Scale
Security
61.240.144.67 - "GET / HTTP/1.0" 200 6086 -" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)" 112.210.135.17 - "GET / HTTP/1.1" 200 2746 "http://best-seo-solution.com/try.php?u=http://ihavealwayswanted.com"
212.109.219.118 -"GET /wp-login.php HTTP/1.1" 404 512 "-" "Mozilla/5.0 (Windows NT 5.1) 212.109.219.118 - "GET /administrator/ HTTP/1.1" 404 513 "-" "Mozilla/5.0 (Windows NT 5.1) 212.109.219.118 - "GET /admin.php HTTP/1.1" 404 508 "-" "Mozilla/5.0 (Windows NT 5.1) 188.120.253.236 - "GET /wp-login.php HTTP/1.0" 404 505 "-" "Mozilla/5.0 (Windows NT 6.1; rv:19.0)
71.187.219.210 - "GET /robots.txt HTTP/1.1" 404 514 "-" "panscient.com" 71.187.219.210 -"GET / HTTP/1.1" 200 2746 "-" "panscient.com" 71.187.219.210 - "GET /js/bootstrap.min.js HTTP/1.1" 200 9792 "-" "panscient.com" 71.187.219.210 - "GET /robots.txt HTTP/1.1" 404 513 "-" "panscient.com" 71.187.219.210 - "GET /details.html HTTP/1.1" 200 2967 "-" "panscient.com" 71.187.219.210 - "GET /signup.html HTTP/1.1" 200 2122 "-" "panscient.com" 71.187.219.210 - "GET /js/?);if(!(e&e.length&(b=e.data( HTTP/1.1" 200 745 "-" "panscient.com" 71.187.219.210 -"GET /js/npm.js HTTP/1.1" 200 551 "-" "panscient.com" 71.187.219.210 - "GET /js/bootstrap.js HTTP/1.1" 200 14076 "-" "panscient.com" 71.187.219.210 - "GET /js/tab.js HTTP/1.1" 404 512 "-" "panscient.com" 71.187.219.210 - "GET /js/carousel.js HTTP/1.1" 404 518 "-" "panscient.com" 71.187.219.210 - "GET /js/alert.js HTTP/1.1" 404 515 "-" panscient.com" 71.187.219.210 -"GET /js/tooltip.js HTTP/1.1" 404 517 "-" "panscient.com 71.187.219.210 -"GET /js/dropdown.js HTTP/1.1" 404 518 "-" "panscient.com" 71.187.219.210 - "GET /js/popover.js HTTP/1.1" 404 517 "-" "panscient.com" 71.187.219.210 - "GET /js/scrollspy.js HTTP/1.1" 404 519 "-" "panscient.com" 71.187.219.210 -"GET /js/affix.js HTTP/1.1" 404 515 "-" "panscient.com" 71.187.219.210 - "GET /js/transition.js HTTP/1.1" 404 520 "-" "panscient.com" 71.187.219.210 - "GET /js/bootstrap.min.js HTTP/1.1" 200 9792 "-" "panscient.com" 71.187.219.210 - "GET /signup.html HTTP/1.1" 200 2122 "-" "panscient.com" 71.187.219.210 - "GET /includes/core/signup.php HTTP/1.1" 404 527 "-" "panscient.com" 71.187.219.210 -"GET /index.html HTTP/1.1" 200 2746 "-" "panscient.com" 71.187.219.210 - "GET /js/?);if(!(e&e.length&(b=e.data( HTTP/1.1" 200 745 "-" "panscient.com" 71.187.219.210 - "GET /robots.txt HTTP/1.1" 404 513 "-" "panscient.com" 71.187.219.210 -"GET /js/npm.js HTTP/1.1" 200 552 "-" "panscient.com" 71.187.219.210 -"GET /js/bootstrap.js HTTP/1.1" 200 14077 "-" "panscient.com" 71.187.219.210 - - [08/Apr/2015:03:51:28-0400] "GET /js/alert.js HTTP/1.1" 404 514 "-" "panscient.com" 71.187.219.210 - - [08/Apr/2015:03:51:29-0400] "GET /js/collapse.js HTTP/1.1" 404 518 "-" "panscient.com
Develop locally, publish globally
Why think about it? Standards Scale Security Develop locally, publish globally
And still
Development Allows dev to prototype on local machine Test with local web server Transfer files via FTP to server No need to worry about intruders.
Any computer Op requires a stack. Blogs Business Logic Web Services (SAAS) Subscriptions, Media, Sales
Minimum OS Run time packages Application software
Web Based OS Webserver Scripting Language Database Presentation tools
Operating System
Operating System Local Windows Linux/Unix Citrix Chrome?
Operating System Linux/Unix Windows Citrix
Operating System The 40 largest hosting companies 100,000,000 names 90,000,000 active sites
Operating System 26 Unix/Linux 3 BSD 4 Windows Server 2008,2012 1 Citrix Netscale 1 F% Big-Ip 4 Unknown
Webservers Apache nginx IIS Google
Webservers Apache 49.3% nginx 21.2% IIS 12.2% Google 2.4% Source netcraft.com
Scripting Tool Programming languages used in most websites.
Client-side Javascript Every popular browser runs a version of Javascript.
Interpreted Server-side Languges Used by the 10 biggest sites JS as Node.JS Python - Django Ruby - ROR PHP - Wordpress, FB Perl(CGI)
Compiled Serverside Java - Scala c/c++ GoLang Erlang
What About Data Relational MySQL (7) MariaDB(2) Postgres(2) SQLite
What About Data
What About Data NoSQL? Document store key value store Schema-less
nosql document
What About Data nosql-style CouchDB MongoDB Cassandra Arango
Presentation tools Simply Standards Based HTML(5) CSS(3)
What I have decided to use? Server - Minimal for development 512MB 20 GB SSD
Server Why so small? If everything runs there, it will scale easily Quickly and Cheaply provisioned One phone call will expand capacity 4 to 10 times
Webserver nginx fast small footprint
Scripting Tried Node/Meteor/Express Ugh, slow memory hog Tools came from different sources
Scripting PHP NO, because it is interpreted Versions roll out quickly but support may be behind Ditto ROR and Python
Scripting Still a toss up Between GoLang, Erlang, and Java
Scripting But, Java is losing Erlang is pretty esoteric
Scripting GoLang Developed and backed by Google Compiled with a baked in runtime Builtin web libraries One smallish program per web page Multiple DB bindings
Scripting Gorilla, a JS Go go-with Several small packages, included as needed Sessions, routing, security
Database Postgres I have a history reasonable size Cleaner and more stable/forgiving than MySQL Has added NoSQL data Under continuos professional development but OSS
My Tool Choices SublimeText, Brackets, Coda Bootstrap, BootstrapJS full blown on dev machine minified on the server Customized CSS files Hand rolled standard JS
So That s a Full STack