Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The New Enterprise: RabbitMq, Akka and AWS at G...

The New Enterprise: RabbitMq, Akka and AWS at Getty Images

Slide deck from a NYC Tech Talk Meetup in NYC on how Getty Images uses RabbitMq, Scala/Akka and AWS automation. The images are all available on Getty Images (http://www.gettyimages.com/Account/MediaBin/LightboxDetail.aspx?Id=13728186&MediaBinUserId=4670194)

Avatar for Michael Hamrah

Michael Hamrah

April 21, 2014
Tweet

More Decks by Michael Hamrah

Other Decks in Programming

Transcript

  1. GETTY IMAGES We sell photos (and videos, music, illustrations) Photo:

    Pascal Le Segretain / Getty Images Entertainment
  2. You maybe see a dozen of our images a day?

    Photo: Christopher Polk / Getty Images Entertainment
  3. ENTERPRISE WHAT? More complicated then they need to be Usually

    a mess Many different users A ton of use cases A common problem? Photo: Justin Lewis/Stone
  4. WHAT DO WE WANT? Loosely-coupled systems Easy evolution Leverage OSS

    Simplify Databases Easy infrastructure / HA Horizontal Scale Photo: Michael Hamrah/Moment Open
  5. RABBITMQ Messaging that just works Various messaging semantics We do

    Pub/Sub Publish to Exchange Consumers declare queues, bind to routing keys Ack/Nack messages Photo: 4FR / Vetta
  6. MESSAGES Routing keys: *scope*.*entity*.*action* MessageId: Unique per message CorrelationId: Connect

    messages Header: Primary Key Header: Sender System Identifier Payload: Send Complete Entity (in Bytes) Photo: Michael Steele / Getty Images Sport
  7. HOW TO HANDLE? Get -> Validate -> Process -> Persist

    -> Publish -> Ack Idempotent Messaging == Your BFF Treat as forward-only transactions Photo: Oli Scarff / Getty Images Entertainment
  8. PERSISTENCE: EVENT SOURCING Simplify Persistence Save events, not state Save

    events, not commands Slick: collection-like API Schema Changes Actor == Aggregate Cluster for Uniqueness Photo: Donald Miralle / Getty Images Sport
  9. BUT WHAT ABOUT... Server Configs? Network topology? Databases, Queue Servers?

    Load Balancers? Fine-grain control? Photo: Tyler Olson / Hemera / 360
  10. ALWAYS BE LAUNCHING Define your topology Pre-bake a server Launch

    DIY PaaS Photo: Cameron Spencer / Getty Images Sport
  11. PACKER SUPERCHARGED VAGRANT Builds Amis, Docker VMware, VBox, more. Supports

    Chef/Puppet/Scripts Minimize startup times Predictable Photo: Scott Heavey / Getty Images Sport
  12. CLOUDFORMATION INFRASTRUCTURE AS CODE (JSON) Defines network, elb's, asg's, r53's,

    db's, everything Pass data via cloud-init Environment variables are helpful Launch multiple stacks, destroy at will Photo: Steve Allen/Digital Vision
  13. JENKINS DOES ALL Merge = AMI Packer via Puppet Passed

    to CFN template Update/Create Stack Roll in new AMIs Cutover DNS Enjoy Photo: Chris Hyde / Getty Images Sport