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
POST
to 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.yaml
YAML files; just like AppEngineAppScale 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 thedeis
CLI 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
n
instance 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