July 11, 2009

Cloud architecture: Notes from an Amazon talk

 

Some notes from a talk I was at. Didn’t get time to write it in detail. But hey, something is better than nothing… right ?

Design for failure

        - handle failure
            - use elastic ip addresses
            - use multiple amazon ec2 availability zones
            - create mutliple database slaves across multiple zones
            - use real-time monitoring (amazon cloudwatch)
            - use amazon EBS for persistent file system
                - snapshot database to s3 (from ebs)
  

Loose coupling sets you free

        - independent components
        - design everything as a blackbox
        - de-coupling for hybrid models
        - loadbalance-clusters
        - use SQS as buffers to queue messages. Allows elasticity
  

Design for dynamism


        - build for changes in infrastructure 
            - Don't assume health of fixed location of components
            - Use designs that are resilient to reboot and re-launch
            - Bootstrap your instances
            - Enable dynamic configuration
                - Enable Self discovery
                    (puttet, chef, ?)
            - Free auto-scaling features (by triggers)
            - Use Elastic loadbalancing on multiple layers
            - Use configurations in SimnpleDB to bootstrap instances

Build security in every layerider encrypted files


        - Physical is free
        - network is easy
            - Can confider app to talk to only web and db layer... etc. Everything can be automated.
        - The rest can be added
            - Create distinct Security Groups for each Amazon EC2 cluster
            - Use group-based rules for controlling access between layers
            - Restrict external access to specific IP ranges
            - Encrypt data "at-rest" in Amazon S3
            - Encrypt data "in-transit" (SSL)
            - Consider encrypted file systems in EC2 for sensitive data

Dont fear constraints

        - More RAM ?
            Distribute load across machines. Shared distributed cache
        - Better IOPS on my database ?
            Multiple read0only / sharding / DB clustering
        - Your server has better config ?
            Implement elasticity
        - Static IP ?
            Boot script for software reconfiguration from SimpleDB

        -
  

Leverage aws storage solutions


        - Amazon S3: for large static objects (whats the maximum size per object ?)
        - Amazon Coudfront: content distribution
        - Amazon SimpleDB: simple data indexing/querying
        - Amazon EC2 local disk drive: transient data
        - Amazon EBS: RDBMS persistent storage + S3 Snapshots

1 comment:

Nadya said...

I am wondering if you can check out my very own tool CloudBerry Explorer that helps to manage S3 on Windows . It is a freeware. http://cloudberrylab.com/