iron.io technical overview

36
Iron.io Technical Overview

Upload: chad-arimura

Post on 27-Jul-2015

148 views

Category:

Technology


0 download

TRANSCRIPT

Iron.io Technical Overview

Confidential & Proprietary - Iron.io

Infrastructure Services for the Modern Cloud

Reliable message queue service that lets you connect

systems and decouple components.

Multi-language worker platform that runs parallel tasks in the background at

massive scale.

IronWorker

Highly Scalable Event-Driven Async Processing

Confidential & Proprietary - Iron.io

IronWorker is "serverless" to end user

IronWorker is “serverless” to End User

Confidential & Proprietary - Iron.io

IronWorker is Higher Abstraction

Physical Infrastructure

Virtualized IaaS

Containerized Jobs / Tasks

Confidential & Proprietary - Iron.io

IronWorker is "serverless" to end user

IronWorker is Big Compute

Confidential & Proprietary - Iron.io

IronWorker is Multi-Tenant

API

Confidential & Proprietary - Iron.io

IronWorker is Plain Ole’ Code

Confidential & Proprietary - Iron.io

How It Works

Write Your Worker: IronWorker's environment is a Docker container sandbox that your task is executed in. Anything you write that runs on your machine should be able to be run in IronWorker.

Create Your Code Package: Package all your code and its dependencies together and upload it to IronWorker so your code can run entirely on IronWorker's servers.

Upload Your Code Package: Once you've defined your worker and its dependencies with a .worker file, you can upload it using the command line tool for IronWorker.

Queue or Schedule Your Task: You can either queue your tasks to run in parallel, or schedule them to run at specific times from the command line or directly from your application.

Inspect Your Worker: To aid in debugging, everything that is printed to STDOUT in a worker is logged to your dashboard or you can hook up an external service to collect your logs.

IronWorker API

RESTful Scheduling and Task Processing

Confidential & Proprietary - Iron.io

Code API

URL HTTP Verb Purpose

/projects/{Project ID}/codes GET List Code Packages

/projects/{Project ID}/codes POST Upload or Update a Code Package

/projects/{Project ID}/codes/{Code ID} GET Get Info About a Code Package

/projects/{Project ID}/codes/{Code ID} DELETE Delete a Code Package

/projects/{Project ID}/codes/{Code ID}/download

GET Download a Code Package

/projects/{Project ID}/codes/{Code ID}/revisions

GET List Code Package Revisions

IronWorker makes it easy to write, package, and upload code to our system

Confidential & Proprietary - Iron.io

Task API

URL HTTP Verb Purpose

/projects/{Project ID}/tasks GET List Tasks

/projects/{Project ID}/tasks POST Queue a Task

/projects/{Project ID}/tasks/webhook POST Queue a Task From a Webhook

/projects/{Project ID}/tasks/{Task ID} GET Get Info About a Task

/projects/{Project ID}/tasks/{Task ID}/log GET Get a Task's Log

/projects/{Project ID}/tasks/{Task ID}/cancel POST Cancel a Task

/projects/{Project ID}/tasks/{Task ID}/progress POST Set a Task's Progress

/projects/{Project ID}/tasks/{Task ID}/retry POST Retry a Task

IronWorker provides detailed insight into task state

Confidential & Proprietary - Iron.io

Schedule API

URL HTTP Verb

Purpose

/projects/{Project ID}/schedules GET List Scheduled Tasks

/projects/{Project ID}/schedules POST Schedule a Task

/projects/{Project ID}/schedules/{Schedule ID} GET Get Info About a Scheduled Task

/projects/{Project ID}/schedules/{Schedule ID}/cancel

POST Cancel a Scheduled Task

IronWorker provides a scheduling service for managing CRON-like tasks

IronWorker Architecture

Industrial-strength platform for massive scale

Confidential & Proprietary - Iron.io

IronWorker HUD

Advanced Dashboard for Managing Tasks & Schedules

Confidential & Proprietary - Iron.io

Tasks List

Confidential & Proprietary - Iron.io

Scheduled Tasks

Confidential & Proprietary - Iron.io

Task Details

Confidential & Proprietary - Iron.io

Worker Analytics

Key Features & Benefits

Advanced Feature Set for Flexible Capabilities

Confidential & Proprietary - Iron.io

Task Priorities

IronWorker includes a built-in priority manager, allowing users to specify the importance of specific tasks to be queued and run

API

P0: Low Priority

P1: Medium Priority

P2: High Priority

Confidential & Proprietary - Iron.io

IronWorker Stacks

Name Language/Tool Version OS

DefaultRuby-1.9.3p194, java-1.7, scala-2.9, mono-2.10, php-5.3, node-0.8, python-2.7

Ubuntu 12.10

ruby-1.9 Ruby 1.9.3p194 Ubuntu 12.10

ruby-2.1 Ruby 2.1.0p0 Ubuntu 12.10

java-1.7 Java 1.7.0_51 OpenJDK Ubuntu 12.10

java-1.8 Java 1.8.0_20 Ubuntu 12.04.5

scala 2.9 Scala 2.92 Ubuntu 12.10

mono-2.10 Mono JIT 2.10.8.1 Ubuntu 12.10

mono-3.0 Mono JIT 3.0 Ubuntu 12.10

mono-3.6 Mono JIT 3.6 Ubuntu 12.10

... ... ...

IronWorker includes a number of base stacks to support multiple languages and libraries

Confidential & Proprietary - Iron.io

Custom Stacks

Developers can define runtime environments and

write workers for specific language versions of

Ruby, Python, PHP, Node, Java, Scala, and Go.

Worker environments are built on Docker

containers, allowing for ease of customization and

configuration.

Confidential & Proprietary - Iron.io

Webhooks

Make the most of the evented web by hooking your

workers up to an HTTP Post endpoint, another

worker, or an IronMQ queue. The use of webhooks

allows you to create a really powerful workflow

across several distinct applications without the need

of official integrations.

Confidential & Proprietary - Iron.io

Logging Integrations

To aid in debugging, everything that is printed to

STDOUT in a worker is logged to your dashboard,

and can be configured to log to an external service.

We also offer integrations with popular monitoring

and logging services such as PaperTrail, New Relic,

DataDog, and StatHat.

Confidential & Proprietary - Iron.io

Scheduling & Prioritization

IronWorker tasks are flexible to either be run

immediately or scheduled at a specific time via a

client library, the CLI, or you directly within the

IronWorker dashboard. Larger IronWorker plans also

allow you to set your tasks to be run at a higher

priority, to ensure it gets queued up within an

acceptable timeframe within our cloud environment.

Confidential & Proprietary - Iron.io

High Memory / CPU Instances

For advanced users with heavy processing needs,

we offer more robust machines for your workers to

run, giving you maximum performance with the

elastic provisioning benefits of a cloud service.

Confidential & Proprietary - Iron.io

Dedicated Clusters

For users with custom SLA requirements and high

volume processing, we offer fully dedicated worker

environments that provision resources for your

tasks and your tasks only, providing you with your

own virtual private cloud with all the benefits of

IronWorker.

Iron.io

325 9th St

San Francisco, CA 94103

1-888-939-4623

www.iron.io

[email protected]

Thank You

Chad ArimuraCEO, Iron.io

Further Reading:

http://dev.iron.iohttp://iron.io

APPENDIX

IronWorker Code Example

Confidential & Proprietary - Iron.io

IronWorker - MasterMaster Worker

Confidential & Proprietary - Iron.io

IronWorker - SlaveSlave Worker

Confidential & Proprietary - Iron.io

IronWorker - SchedulingCreate Schedule

Confidential & Proprietary - Iron.io

IronWorker - Upload Code PackageUpload Code Package