Web Development Web development never ends: 1.Find out what the stakeholders need (sponsors, users, etc.) 2.Investigate available technology 3.Plan the project 4.Build/update the web site 5.Test functionality in all browsers 6.Release the site 7.Monitor and maintain 8.Go to 1.
Technical Issues Keeping a web site available Maintaining a server Getting “hacked” Performance problems
Bottom Line If your web site is not available: –You don’t exist!
What is a web server? Has a “hard IP”. –An IP address that never changes Runs “web server” software –Typically IIS or Apache Typically: –Is in a “rack” in a protected space that is: Is environmentally controlled (air conditioned) Has “conditioned” power (a UPS) –Has redundant components
Maintaining a server You can “rent” space on a server –DropBox offers a “Public” folder A server costs from $500 to $100,000 –Don’t listen to what the manufacturers tell you what you need! Talk to other developers. It costs $100 to $200 per month to have someone “host” your server. In theory, you could have a server at your house but it is not recommended
Software Keep the server as simple as possible –Complexity = more failures Limit access Do required updates There are web site that will monitor your server and you if it goes down
Getting Hacked Common Types: –SQL Injection –“Stealing Bandwidth” –Web Server breach –Uploading viruses –Denial of server
SQL Injection In a query string, enter: –“Query; DELETE FROM ‘ ’” –Deletes the entire contents of the table Can also steal info from DB Easy to protect from: –Check for single quotes and replace them with two single quotes –Don’t allow “delete from” in a query –Don’t allow sensitive information in your database
Stealing Bandwidth Someone breaks into your server and puts a bunch of data there. Then, they make you their download site Causes a massive spike in bandwidth which you have to pay for! Preventing: –Don’t have FTP sites –Keep web software up to date –Make sure your ISP monitors for them
Web Server Breach An HTML steam that breaks your web server and then takes over your server. Used to steal band width and corrupt your server’s contents Preventing: –These are rare and can only be prevented by the web server software provider –Keep web server software up to date
Uploading Viruses User’s upload a file that than runs a program or “sleeps” until users download it to their computer –Allows others to get you to distributed viruses! Don’t allow “scripts” to be uploaded. This includes: –“xls”, “doc”, “ppt” files!
Denial of Server A web service is written that calls your web site over and over again to “bring it down”. IIS can crash with these Preventing: –Don’t attract attention If you do, get a lot of servers –Block abusive users –Education and only allow reasonable web service calls
Reality Getting hacked today is rare –Twice in last 6 years (never in last 4) Keep the OS and web software up to date Don’t let a lot of folks edit the contents of your server Keep an eye on it Other problems (like performance) will be bigger.
GIS Web Sites GIS web sites “go bad” because of: –Poor user design –Poor performance New issues: –Scripting performance –Database performance –Geospatial data access
Scripting Performance Use a “modern” language Make sure there is minimal recursion –Functions calling functions –Scripts calling scripts –Including files that include the same files Find the “bottlenecks” and fix them Don’t use ArcGIS (you’re not allowed to in a server environment anyway).
Database Performance Don’t use MS-Access or MySQL Use indexes (search trees) Minimize string searches –Index if needed Minimize hierarchical queries Do performance analysis on key queries and add redundant data if needed
Geospatial Issues Pixels.vs geographic systems Cartesian vs. tiles Tiled data Transfer speeds
Width in Pixels Height in Pixels
10,000,000 meters 6,600,000 meters UTM, Zone 10
0,0 Positive X Positive Y Pixels Easting, Northing Positive X Negative Y Geospatial Coordinates
Raster Pyramids Problem: –Rasters can be huge! –The Internet is slow Analysis: –Users can only view about 1000 x 1000 pixels at time –Options: Large area at low resolution Small area at high resolution Solution: –Create a “pyramid” of tiles and only transfer the tiles that are needed
Raster Pyramid
0,0 256,256 Zoom Level 0
0,0 512,512 Zoom Level Columns Rows
0,0 512,512 Zoom Level Columns Rows
0,0 512,512 Zoom Level Columns Rows
Zoom LevelPixel WidthNum Columns Size (Pixels)Num Tiles E E E E E E E E E E E Sum:6.0048E
Vector Pyramids Vector data is getting later –Millions of points –Complex, global polygons Vector Pyramids are coming –Each tile contains GeoJSON data for that tile