Information Systems¶
- https://en.wikipedia.org/wiki/Information_systems#Types_of_information_systems 
- https://en.wikipedia.org/wiki/List_of_collaborative_software 
See also:
Information Systems Glossary¶
- System¶
- An interconnected graph of nodes linked with edges through which flow produces predictable and unpredictable behaviors. 
- Infrastructure¶
- Core system components. 
- Information¶
- Not noise. - See: Data Science > Information Theory, Knowledge Engineering 
- Information System¶
- A system with information inputs and outputs designed to solve a problem. 
- Information Technology¶
- Hardware and software information systems for solving business problems. 
- Application¶
- An application of technology for a particular domain. 
- App¶
- See Application 
- Operating System¶
- Software for running applications and working with devices. 
- API¶
- Advanced Programming Interface. A specification for inputs and outputs provided by a system component. - An API specification is specified, versioned, updated, and deprecated. - A reference implementation implements a model copy of an API. - If a component utilizes an API it is said to be written against, with, or on top of said API. - An API abstracts a lower-level in order to provide a higher-level API. - One primary advantage of an API is that, ideally, system components are loosely coupled and thus interchangeable and incrementally upgradeable. 
- Operating System API¶
- An API provided by one or more Operating Systems. - Examples: 
- Language API¶
- An API provided by or for one or more programming languages through a standard library or a third-party component. - Examples: 
- Web API¶
- An API for interacting with local (browser) or remote (e.g. HTTP) components. - One primary advantage of a Web API is that downstream components do not need to know anything about the underlying Operating System APIs and Language APIs. 
- Web Service¶
- A Web API with a formal specification. - Generally provided over HTTP, traditionally (as in the enterprisey - WS-*standards) with XML, but, more recently, with JSON.
- Webhook¶
- A webhook is an HTTP message for an event. - web services and applications can send webhooks when e.g. a change occurs. - For example, when GitHub, ReadTheDocs, and Travis-CI are configured (with webhooks) a change pushed to a GitHub repository branch or pull request enqueues a build at e.g. ReadTheDocs and/or Travis-CI (and GitHub can show the build status as a linked icon). - In terms of web services, a webhook is usually just a JSON - POSTto a URL; with an access token.
- RESTful API¶
- A RESTful API (REST API) is a Web API that abides by best-practice guidelines for interacting with resources through standard HTTP methods like - PUT/- POST,- GET,- POST/- PUT,- DELETE.- Many web developers prefer RESTful APIs because the standard methods and error messages specified by HTTP are already implemented by existing, well-tested libraries available for most languages. 
Criteria¶
seeAlso:
- Computer Science Curricula (Criteria) 
- Information Security (Risk) 
ROI¶
The investment should be justified by gains in productivity & efficiency.
Productivity & Efficiency:
output / input
returns / costs
widgets / hours ---**---> widgets/hour
** curves
reduction in {risk, error, loss} / time spent on {workflow, automation}
seeAlso:
Need / Want¶
Communication and collaboration are essential to success.
Maintainability¶
Choosing Components
- In n-years, will I be able to find someone who can maintain this? - Locally? Globally? 
- Job listing keyword search [rough approximation] 
- Job board search 
 
- In n-years, will there still be a community supporting these components? 
- Is it open source? How do we find/pay/train someone to understand how it works? 
- Is there a non-profit software foundation behind this component? 
Clouds¶
https://en.wikipedia.org/wiki/Cloud_computing#Service_models
Cloud Questions¶
- Why would I want to run my business “in the cloud”? 
- What are our core competencies? 
- Do we need/want to run this all ourselves? 
- Would it be more safe/secure to outsource the management of these business systems? 
Cloud Application Layers¶
- Applications Layer - https://github.com/wrdrd/wrd/blob/master/app.yaml (AppEngine/AppScale) 
 
- Platform Layer 
- Databases (Relational Databases, SQL, NoSQL Databases, Graph Databases, RDF Triplestores, SPARQL) 
- Authz: Authentication, Authorization - Servers: OpenLDAP, 389, FreeIPA, ActiveDirectory, Samba4 
- Standards: WebID, OAuth, SASL, SAML, LDAP 
- Infrastructure Layer: OpenStack Keystone 
 
- Email - AppEngine/AppScale Email API 
 
- Logging / Monitoring - AppEngine/AppScale Logging 
- Sentry, Raven (POST JSON) 
 
- Message Queue (Task Queue, Channels, WebSockets, AMQP, Worker Pools) - Celery: https://celery.readthedocs.io/en/latest/getting-started/brokers/ 
- AppEngine/AppScale Tasks API 
- Mesos schedulers (Aurora, Chronos, Marathon) 
 
- Search Indexing (JSON, JSON-LD, JSON-LD) 
- AppEngine/AppScale Search API 
 
- Big Data storage and data local iterators: 
- HTTP Object Storage 
 
- Infrastructure Layer (“provisioning”) - Resource Pool (“instances” of {virtual machines, containers, task workers}) 
- Docker Swarm 
- Kubernetes Docker pods 
- Kubernetes-Mesos: Mesos schedulers and Kubernetes Docker pods 
- Mesos schedulers (Aurora, Chronos, Marathon) 
 
- Inventory / Monitoring - #ConfigMgmt: Packages 
- #ConfigMgmt: Ansible, Puppet, Salt, Configuration Management 
- #ConfigMgmt #Instances: Cobbler Web Dashboard 
- #ConfigMgmt #Instances: OpenStack Horizon Dashboard 
- #Inventory: Cobbler JSON, Salt Grains, Puppet Facts, osquery SQL tables 
- #Monitoring: #ConfigMgmt events 
- #Monitoring: Nagios, Shinken, Icinga 
- #Monitoring: Monitd, Collectd, RRD 
- #Logging: Syslog, LogStash, Heka (logtailers) 
- #Logviz: Kibana, Grafana, Graphite, RRD (Data Visualization Tools) 
 
- Physical and Virtual Servers (“servers”, “racks”, “machines”) - #ConfigMgmt: Configuration Management (“infrastructure as code”, shell-escaping, task queues / ESBs, Distributed Computing Protocols, #Logging, worker pools) 
- Virtualization (full / para-virtualization) 
- Operating Systems (“OS”) 
- Manual Testing – PEBKAM (Between Keyboard and Monitor) 
- Computer Engineering (“computer”, #power AC/DC, BIOS, NIC, Ethernet, USB, RS232 Serial Console, KVM switch) 
 
- Physical and Software Networks 
- Physical and Virtual Storage - Virtual storage: 
- Physical storage - SAN – Storage Area Network (iSCSI, Fibre Channel, persistent block storage) 
- NAS – Network Attached Storage (FreeNAS, Synology, Network Filesystems, iSCSI) 
- Data Device Bus: (USB, SATA, SCSI, IDE, ATA Hard Drives) 
 
- Power, HVAC, Fire Suppression - #HVAC: Cooling (Active / Passive) 
- #HVAC: Heating (Active / Passive) 
- #Fire: Sprinklers 
- #Fire: Fire Extinguishers - Class A Fire Extinguisher – silver – water 
- Class C Fire Extinguisher – red – chemicals (e.g. CO2) - Do not pour water on an electrical fire until you have switched off the power source at the circuit breaker box. 
- Novels/films: 20,000 Leagues Under the Sea, Sphere 
- How to Extinguish a Fire at the Initial Stages: http://www.wikihow.com/Extinguish-a-Fire-at-the-Initial-Stages - Extinguishing Electrial Fires: Red Class C Extinguisher 
- Extinguishing Liquid/Oil Fires 
- Extinguishing Organic Fires 
 
 
- #Power: Power supplies (AC –> DC conversion) 
- #Power: Batteries (AC –> DC –> Batteries –> AC/DC) 
- #Power: Generators 
- #Power: Generator fuel for the generators 
- #Power: Renewable energy, Clean Energy, Sustainable Energy 
 
 
 
SaaS¶
SaaS (Software-as-a-Service) is a service provision, application lifecycle, and recurring billing model for providing hosted applications.
Examples of SaaS:
- ReadTheDocs is a SaaS which can integrate with GitHub (also a SaaS offering) through Webhooks: 
- Travis-CI is a SaaS Continuous Integration service which pulls and builds from a GitHub repository upon receipt of a Webhook, that is free for Open Source projects 
- Google Gmail is a SaaS webmail service: 
- Many Customer Relationship Management (CRM) software applications are offered as SaaS subscription services 
- See: Business Modeling - SaaS is distinct from e.g. subscription software licensing; because SaaS applications are usually hosted by the service provider 
PaaS¶
PaaS (Platform-as-a-Service) platforms offer platform APIs on top of which applications can be developed and marginally scaled if designed and developed for concurrency and asynchronicity.
Examples of PaaS Platforms:
- https://github.com/progrium/dokku – dokku is an extremely minimal (no firewall, etc.) “Docker powered mini-Heroku in around 100 lines of Bash” (see also: bashreduce) - https://news.ycombinator.com/item?id=9054503 – The original dokku developer now works with Deis 
- https://github.com/dokku-alt/dokku-alt – dokku-alt is a fork of dokku 
 
AppEngine¶
Google AppEngine is an PaaS platform for developing and scaling web applications written in Python, Java, Go, and PHP.
- AppEngine applications can interface with Google Cloud Platform Web APIs 
AppScale¶
AppScale is a completely Open Source PaaS platform for developing and scaling web applications written in Python, Java, Go, and PHP.
- AppScale Python apps deploy applications from - app.yamlYAML files; just like AppEngine
- AppScale development supporters include Google and NSF: http://googlecloudplatform.blogspot.com/2015/05/AppScale-and-App-Engine-Work-Together-to-Provide-Infrastructure-Flexibility.html 
- AppScale applications can interface with AppScale implementations of AppEngine Google Cloud Platform Web APIs 
| AppEngine API | AppScale implementation | 
| Datastore | AppDB { Cassandra, Thrift, Protocol Buffers } | 
| Memcache | memcached | 
| URL Fetch | urllib2 | 
| Blobstore API | custom server built on Tornado | 
| XMPP | ejabberd | 
| Channel API | ejabberd and strophejs | 
| sendmail | |
| Images | Python Imaging Library (PIL) | 
| Task Queue | RabbitMQ | 
| Cron | Vixie Cron | 
| Search | SOLR | 
| CloudSQL | MySQL | 
| Users | AppScale Dashboard | 
Deis¶
Deis is an Open Source PaaS platform built on Docker and CoreOS written in Python and Go.
- Apps are deployed to Deis with Git ( - git push) or the- deisCLI client.
- Configuration Management is useful but not necessary for provisioning Deis (e.g. creating and managing custom deis images and containers with extra libraries and configuration). 
- Deis builds with Make, Docker Dockerfiles, and CoreOS. 
- Deis can work with the Linux Ceph filesystem. - Deis supports Heroku Buildpacks: http://docs.deis.io/en/latest/using_deis/using-buildpacks/#included-buildpacks 
 
- Deis can scale to - ninstance of containers per process (e.g.- web):- deis scale web=3 
See also: Heroku, Kubernetes, Kubernetes-Mesos
Heroku¶
Heroku is a PaaS Platform.
IaaS¶
Infrastructure-as-a-Service providers provide a bit more than regular hosting services in that they offer something like virtual datacenter resource pools: servers, networks, and redundant storage systems on top of which IT systems can be developed, tested, and deployed.
Examples of IaaS:
- Libcloud implements a Python language api over very many IaaS and PaaS clouds: https://libcloud.readthedocs.io/en/latest/supported_providers.html 
Amazon AWS¶
- EC2 – Elastic Compute Cloud (CPU/GPU/RAM instances) 
- EBS – Elastic Block Store (persistent block storage) 
- S3 – Simple Storage Service (HTTP object storage) 
- SQS – Simple Queue Server 
- CloudFormation – EC2 [auto-]scaling 
- CloudFront – CDN 
- RDS: Managed MySQL, Oracle, SQL Server, PostgreSQL 
- DynamoDB: NoSQL Databases supercolumn cloud datastore 
Python and AWS
- boto, Libcloud 
Google Cloud¶
Google Cloud Platform (GCP) is an IaaS cloud platform.
Python and Google Cloud
Rackspace Cloud¶
Rackspace Cloud is an IaaS cloud platform built with OpenStack.
- Rackspace CloudFiles is now OpenStack Swift. 
- Rackspace Cloud is powered by OpenStack. 
- Cloud Servers – OpenStack Compute 
- Cloud Load Balancers 
- Cloud DNS 
- Cloud Networks 
- Cloud Block Storage – OpenStack Cinder 
- Cloud Files – OpenStack Swift 
- CDN 
- Cloud Databases (MySQL) 
- Cloud Big Data (Hadoop) 
- Cloud Queues 
- Rackspace Auto Scale 
- Rackspace Private Cloud v4, v9, v10 (OpenStack) 
Python and Rackspace Cloud
Configuration Management¶
https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software
Information Security¶
Managing risk and uncertainty.
Standards:
See: WebSec
Confidentiality¶
Integrity¶
Availability¶
Business Continuity¶
https://en.wikipedia.org/wiki/Business_continuity_planning
https://en.wikipedia.org/wiki/Disaster_recovery
See: Information Security (Availability)
Backups¶
Reliability¶
Scenarios¶
Business Systems¶
https://en.wikipedia.org/wiki/Online_office_suite
https://en.wikipedia.org/wiki/Comparison_of_office_suites
Google Apps¶
- $5/user/month // $50/user/year 
- gmail (e.g. username@example.org) - can add aliases (e.g. webmaster@example.org -> username@example.org) 
- can setup forwarding (e.g. username@example.org -> username@gmail.com) 
 
- mail, contacts, chat, calendar, drive, docs, sheets, slides, groups, sites - drive: online storage 
- sites: (e.g. employees.example.org) - update through web interface 
- file sharing (employee handbook pdf) 
 
- groups: [employee] emailing list - don’t need accounts for every employee, they can use their own email addresses (everything gets relayed) 
- basically like archived emails with always on reply-all 
 
 
Handling Money¶
https://en.wikipedia.org/wiki/Transaction_processing
https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard
Accounting¶
https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system
https://en.wikipedia.org/wiki/Accountant
https://en.wikipedia.org/wiki/Financial_statement
https://en.wikipedia.org/wiki/Business_valuation
GNUCash¶
- Free and Open Source 
- Personal Accounting 
- Small Business Accounting 
Quicken¶
- Personal Accounting 
- USA Version 
- International Versions 
QuickBooks¶
- Small Business Accounting 
- Square integrates with QuickBooks 
- http://www.google.com/enterprise/marketplace/search?query=quickbooks 
Payments¶
Amazon Payments¶
Apple Pay¶
Google Wallet¶
PayPal¶
Square¶
- Square Reader (plugs into headphone jack) 
- Square Stand (point of sale) 
- Square Register (iOS & Android app) 
- Square Market (online store) 
- Square Appointments (online scheduling) 
- Square Feedback (customer feedback) 
- Square Analytics (sales reporting) 
- Square Capital (business funding) 
- Square Invoices (online invoicing) 
- Square Payroll (employee payroll) 
Sales¶
See: CRM
Customer Relationship Management (CRM)¶
https://en.wikipedia.org/wiki/Customer_relationship_management
Business Intelligence¶
https://en.wikipedia.org/wiki/Business_intelligence
See: Data Science