Information Systems

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:

ROI

The investment should be justified by gains in productivity & efficiency.

Productivity & Efficiency:

output / input
returns / costs

Units and ratios:

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

  • Platform Layer

  • Infrastructure Layer (“provisioning”)

    • Resource Pool (“instances” of {virtual machines, containers, task workers})

      • Cobbler (libvirt virtualization)
      • Docker Swarm
      • Kubernetes Docker pods
      • Kubernetes-Mesos: Mesos schedulers and Kubernetes Docker pods
      • Mesos schedulers (Aurora, Chronos, Marathon)
      • OpenStack
    • 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)
      • #PRF: http://www.brendangregg.com/linuxperf.html
      • Docs: https://www.opsschool.org/en/latest/
    • Physical and Virtual Servers (“servers”, “racks”, “machines”)

    • Physical and Software Networks

      • Internet connections
      • VLANs, IPv6 6to4 tunnels
      • SDN — Software Defined Networking
        • OpenStack Neutron
        • Docker networking
        • Docker Swarm networking
        • Vagrant networking
        • Virtualbox networking
      • DNS (BIND, dnsmasq, Cobbler, OpenStack, Vagrant, Docker)
    • Physical and Virtual Storage

      • Virtual storage:

      • Physical storage

      • 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:

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:

AppScale

AppScale is a completely Open Source PaaS platform for developing and scaling web applications written in Python, Java, Go, and PHP.

adapted from https://github.com/AppScale/appscale/wiki/How-AppScale-implements-the-Google-App-Engine-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
Mail 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.

See also: Heroku, Kubernetes, Kubernetes-Mesos

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:

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

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

Business Systems

https://en.wikipedia.org/wiki/Online_office_suite

https://en.wikipedia.org/wiki/Comparison_of_office_suites

Google Apps

Handling Money

https://en.wikipedia.org/wiki/Transaction_processing

https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard

Payments

Square

https://squareup.com/

  • 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)