Nanite is a new way to build scalable backends for web applications using RabbitMQ. It allows services called Nanite agents to advertise themselves and be discovered. Nanite mappers track agents and can dispatch work to them based on factors like load. This provides presence of agents, ability for agents to come and go dynamically, and load-based dispatch. Engine Yard As A Service (EYAAS) aims to abstract infrastructure management and provide a highly automated cloud platform using state-based configuration management. It will initially target Amazon Web Services but also allow deploying to other providers and internal data centers.
21. Nanite is a new way of
building scalable
backends for web apps
22. Built around RabbitMQ
• Written in erlang, clusterable, highly
scalable, fast as hell.
• AMQP protocol provides many nice
features
• Transient, Persistent and Transactional
semantics
24. Nanite agents advertise
their services and status
Feeds#crawl
advertises:
/feeds/crawl
Load average is advertised
as default status
25. Nanite Mappers
Track nanites and their advertised services and status
Can do dispatch based on a number of factors
Run inside your Merb or Rails app
State of all nanites is replicated across all mappers
28. Agents ping the mapper exchange
every @ping_time seconds.
Mappers track the state of all
nanites and remove them from
mapping if they haven’t reported in
within a timeout
29. Nanite gives us:
• Presence, we know when nanites are ready
for requests or not.
• Self assembly, nanites can come and go and
can run anywhere with zero configuration
in the mappers.
• Dispatch based on load or any fitness
function that suits your app
• Easily take advantage of cloud
40. 1. State Based Configuration
Management
Repeatable
Idempotent
41. 1. State Based Configuration
Management
Treat an instance like a referentially transparent function
f(config) -> Fully Configured Instance
Calling f(config) will *always* create the same instance
whenever config == config
42. 1. State Based Configuration
Management
Treat instances as throw away
Prefer rebuilding from scratch
Only persist what truly needs to be persistent
43. EYAAS
Custom Gentoo or Ubuntu Linux
State based config management
Ad hoc Change
Extensive Monitoring
24/7 support
High Level Cloud
44. EYAAS
Bridge multiple providers
Highly tuned databases on EY
Elastic app servers on ec2
Will support any compelling new
cloud platforms
45.
46.
47. JSON “DNA” describes your deployments. Servers can
be built from bare metal to spec in a few minutes.