Unify disparate logging systems (file system, event log, database)
Gain useful application insights (usage, errors, statistics)
Flexible enough to store data unique to each application
Report on that data in real-time
Alert us on critical application errors or epochs
We already have similar systems in place for our infrastructure
It's time we bring this concept to our applications
Elasticsearch + Logstash + Kibana
Visual Studio Online + Application Insights
Exchanges are authored via web interface
Define a series of steps that make up an exchange
Steps are based on configuration and reusable scripts
Emphasizes configuration over code
Glorified IFTTT (If This Then That)
Direct source for third parties to access public information
Dissuade others from scraping our sites and services
Support for multiple data formats (JSON, XML, CSV, etc.)
Charge fractions of a penny for each API call as a convenience fee
Control data access on a per-agency basis, and empower agencies to solve their own problems
https://data.oscn.net/cleveland/cases/1000.json
{ "Id": 1000, "County": "Cleveland" "CaseNumber": "XY-2015-1", "Style": "John Doe v. Oklahoma", "FilingDate": "1/1/2015", "Parties": [ { "Id": 9000, "FirstName": "John", "LastName": "Doe", }, ... ], ... }
https://data.oscn.net/cleveland/warrants.json?{"IssuedDate": "10/1/2015"}
[ { "Id": 6001, "Name": "John Doe", "IssuedDate": "10/1/2015", ... }, { "Id": 6039, "Name": "Jane Doe", "IssuedDate": "10/1/2015", ... }, ... ]
API for accessing legislative data from the NY State Senate
Empower local developers through open data
Crowdsource development efforts
Get cool apps and publicity for free
Email updates when a case is updated, anyone?Built on Google's V8 JavaScript engine - incredibly fast
Asynchronous - thousands of concurrent connections
Efficient - uses virtually no CPU or RAM when there is no activity
Unified language (JavaScript) across the stack
Publically available, reusable components
Greatly simplifies dependency management
Large community of contributors
Nearly 200,000 packages available
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(myJavascriptObject.getSomeStatusInfo()); }).listen(1337, "127.0.0.1");
Designed for speed and throughput, not computation
Written in JavaScript
Works best with NoSQL data stores
Named after the word huMONGOus
NoSQL data store
Built for scalability and high availability
Documents can be nested or linked
{ "_id": "AF567G78B5723", "title": "Sgt. Pepper's Lonely Hearts Club Band", "artist": ObjectId("507f191e810c19729de860ea"), "tracks": [ { "trackId": 1, "title": "Sgt. Pepper's Lonely Hearts Club Band", "length": "2:02", "composer": [ {"last": "Lennon", "first": "John"}, {"last": "McCartney", "first": "Paul"} ] }, { "trackId": 2, "title": "With a Little Help From My Friends", "length": "2:44", "composer": [ {"last": "Lennon", "first": "John"}, {"last": "McCartney", "first": "Paul"} ] }, ... ], "year": 1967, "cover": "AF567G78B5723.jpg" }
3,000 Physicists
10 petabytes of data
Per year!
6,000 documents per second throughput
The question should be:
Similar to virtualization
Houses standardized units called containers
Runs on host kernel, boots in seconds
Base OS files
Application
App dependencies
That's it!
Containers will work on any Docker host, from DEV to QA to PROD
No need to worry about environment inconsistencies
All dependencies are packaged within the container
Containers can be scaled out to many hosts quickly
Service for storing and sharing Docker images
Get the latest (or any) version of an app via CLI
It's like apt-get or yum, but for all of our applications
Extends Docker functionality
Management console for Docker environments
Granular access control
Integrated load-balancing and availabilitys
Health checks and container monitoring
Set up multiple environments, each with their own access levels
Package dependent containers as services for easy deployment
Automatically scale services across hosts based on load or schedule
Easily set up high availability across hosts for each service
BAs provide documentation and training materials in the form of disparate documents and emails
Provide a better delivery mechanism for documentation
Allow BAs to author and publish materials easily
Easy to access, search, and customize
Internal knowledge base for teams or clerks
Write documents using Markdown, a lightweight markup language used on sites like StackOverflow and reddit
New generation CMS on top of React and Node.js
Collect and surface ideas from users
Transparent - all ideas are tied to users
Users vote up the best ideas
Users can leave comments on ideas