How (and why!) we built Packet

Post on 24-Jan-2017

92 views 1 download

Transcript of How (and why!) we built Packet

OUR PASSION:

BUILD A BETTER INTERNET.

A Premium Bare Metal Cloud Built for Automation

● Fully dedicated servers, no co-tenancy● Billed by the hour & available in minutes via API

● No hypervisor, no virtualization● Backed by our global, IPv6 network

Wait, no virtualization at all?

Nope.(unless you bring your own)

Which, when building a cloud platform, presents some unique challenges...

Public clouds (AWS, Digital Ocean, GCE) all rely on a hypervisor or containers to automate the provisioning of virtual machines to end users.

THE CHALLENGE

In order to automate “Layer 0” for developers, we we had to build core infrastructure components from the ground up.

But first we tried to do it with OpenStack.

THE FAILURE

( our now infamous blog post about this available here: https://www.packet.net/blog/how-we-failed-at-openstack/ )

Learning from the limitations in OpenStack, we decided to start over with an api-driven microservices framework strategy. This meant developing purpose-built services for each requirement.

Micro services for each component of the physical datacenter.

PACKET PLATFORM

➢ Built in golang and Ruby

➢ Everything in Docker and CoreOS

➢ Orchestrated and managed with Rancher

➢ Testing with shippable, image builds with quay.io

Micro services for each component of the physical datacenter.

PACKET PLATFORM

Power and Boot Control

PB&J

EC2 Style Metadata

Kant

iPXE Server & Imaging

Tinkerbell

Netflow Agg & Analysis

Soren

Multi-Tenant IPAM

Magnum IP

Physical Switch SDN

Narwhal

Device, Project, Billing, Token Management

Client Portal

Internal and External Services

APISerial Console

Out of Band Access

S.O.S.

Image Building

Casper

Let’s review a selection of the more interesting microservices...

KANTEC2 Compatible Metadata Service

Security challenge: IP based authentication, no hypervisor, our layer 3 acl solution

KANTEC2 Compatible Metadata Service

EC2 has a problematic url structure / IP address (eg: http://169.254.169.254/latest/meta-data/ )

Available at https://metadata.packet.net from all hosts

TinkerbelliPXE Server & Imaging

pxe server… tinkerbell … get it? :D

API driven DHCP and iPXE server

TinkerbelliPXE Server & Imaging

Handles delivery and selection of both end user operating system images, and also our deprovision images

Replacement for cobbler, provides massive stability and speed improvements as well as better diagnostic data and visibility in every stage of provisioning

NarwhalPhysical Switch / Router “SDN”

apparently there aren’t any entertaining public domain pictures or gifs of narwhals. apologies.

Overcomes one of the biggest limitations of OpenStack for us, which is very vlan oriented

Configures the network ACLs and handles our elastic IP addressing, batches thousands of operations an hour

NarwhalPhysical Switch / Router “SDN”

Built to be “pluggable” to accommodate other vendors in the future, like Cisco and Arista

SorenNetflow Aggregation & Analysis

can you tell we have some philosophy majors on the team yet?

Ingests all of our network flow data and tags it

Allows us to do things like destination based bandwidth billing and tiered bandwidth

SorenNetflow Aggregation & Analysis

Gives us the ability to expose much more network intelligence to end users, such at top talkers and last mile reachability

PB&JPower and Boot Control (IPMI / DRAC)

this is our favorite result in google image search for “fucking ipmi”

Abstracts much of the ugliness of IPMI and DRAC from our API

Gives us access to health and other hardware monitoring as well

PB&JPower and Boot Control (IPMI / DRAC)

Roadmap to support redfish and potentially open source the library in the future

In summary, where we are now...

NO OVERLAYSFrom network to host, we provide elastic control without adding network or hardware abstraction.

MICROSERVICE BASEDShippable, immutable independent services that are easy to use, scale and troubleshoot.

REPRODUCIBLE & DEPENDABLE99% of our monthly installs succeed with an average provision time of ~8 minutes.

MODERN & SCALABLE

PLATFORM HIGHLIGHTSLaunched in August 2015. No Co-Tenancy. No Hypervisor. Full Automation.

CURRENT CONFIGS

We Also Offer High Performance Block Storage, Elastic IP Addressing and Self-Service BGP.

TYPE 0

TINY BUT MIGHTY

TYPE 1

FLEXIBLE WORKHORSE

TYPE 2

THE VIRTUALIZOR

TYPE 2A

ARM ‘NHAMMER

$0.05/hour

$0.40/hour

$1.25/hour

$0.50/hour

4 Physical Cores @ 2.4 GHz

(1 × Atom C2550)8 GB of RAM

1 x 120 GB SSD

4 Physical Cores @ 3.4 GHz

(1 × E3-1240 v3)32 GB of RAM

2 x 240 GB SSD

24 Physical Cores @ 2.2 GHz

(2 x E5-2650 v4)256 GB of RAM 6 x 480 GB SSD

96 Physical Cores @ 2.0 GHz

(2 × ThunderX)128 GB of RAM

1 x 320 GB M.2 SSD

TYPE 3

HIGH I/O MONSTER

$1.75/hour

16 Physical Cores @ 2.6 GHz

(2 × E5-2640 v3)128 GB of RAM

1 x 2.4 TB NVME

INTEGRATIONSWe offer developers a consistent infrastructure experience that

integrates with leading platforms and dev tools - but with the firepower and flexibility of bare metal.

THANKS!

Any questions?You can find us at @packethost & help@packet.net