Top Banner
Iron.io Technical Overview
36
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Iron.io Technical Overview

Iron.io Technical Overview

Page 2: 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.

Page 3: Iron.io Technical Overview

IronWorker

Highly Scalable Event-Driven Async Processing

Page 4: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker is "serverless" to end user

IronWorker is “serverless” to End User

Page 5: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker is Higher Abstraction

Physical Infrastructure

Virtualized IaaS

Containerized Jobs / Tasks

Page 6: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker is "serverless" to end user

IronWorker is Big Compute

Page 7: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker is Multi-Tenant

API

Page 8: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker is Plain Ole’ Code

Page 9: Iron.io Technical Overview

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.

Page 10: Iron.io Technical Overview

IronWorker API

RESTful Scheduling and Task Processing

Page 11: Iron.io Technical Overview

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

Page 12: Iron.io Technical Overview

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

Page 13: Iron.io Technical Overview

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

Page 14: Iron.io Technical Overview

IronWorker Architecture

Industrial-strength platform for massive scale

Page 15: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

Page 16: Iron.io Technical Overview

IronWorker HUD

Advanced Dashboard for Managing Tasks & Schedules

Page 17: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

Tasks List

Page 18: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

Scheduled Tasks

Page 19: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

Task Details

Page 20: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

Worker Analytics

Page 21: Iron.io Technical Overview

Key Features & Benefits

Advanced Feature Set for Flexible Capabilities

Page 22: Iron.io Technical Overview

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

Page 23: Iron.io Technical Overview

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

Page 24: Iron.io Technical Overview

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.

Page 25: Iron.io Technical Overview

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.

Page 26: Iron.io Technical Overview

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.

Page 27: Iron.io Technical Overview

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.

Page 28: Iron.io Technical Overview

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.

Page 29: Iron.io Technical Overview

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.

Page 30: Iron.io Technical Overview

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

Page 31: Iron.io Technical Overview

APPENDIX

Page 32: Iron.io Technical Overview

IronWorker Code Example

Page 33: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker - MasterMaster Worker

Page 34: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker - SlaveSlave Worker

Page 35: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker - SchedulingCreate Schedule

Page 36: Iron.io Technical Overview

Confidential & Proprietary - Iron.io

IronWorker - Upload Code PackageUpload Code Package