Friday, September 18, 2015

Optimizing your cloud

Recently I've been "forced" to look into some of those cloud optimization services (no name disclosed here) by the upper management. 
After investigation, I came to the conclusion of we are doing pretty good on all aspects. How did we do it with/without purchases another services?
The key to success is understand your business activities on top of IT. Let's look common features from cloud optimzation services for AWS and how you can mastery it. 
  • Cloud Resource Optimzation - Enable Detailed billing report with resources and tags, and Detailed billing report in Billing. With this, you can easily sort your cost by tags, on multiple levels (department, environment, business unit, anything you can imagine). Enable cloudwatch or other monitoring to understand your utilization. Read your usage report monthly.
  • Scheduling & Automation - Invest a tool you or your team can manage. Chef, Puppet, Ansible or Stackdriver, maybe combines with Zapier or homebrew script, anything you feel comfortable with. Don't over/under do it. Scheduling & Automation is to avoid human error, in Chinese idiom "either success or failure boils down to the same person".
  • Disaster Recovery Management - Everything fails! If you are not Netflix and are able to run chaos monkey, at least have a disaster playbook for all IT components. What if Route53 is not working? What to do web servers are down? How to fix capacity problem on RDS? Remember to include likelihood and impact, this can help you to improve systems/services later.
  •  Multi AWS regions and accounts - If your business don't have geographical restriction. Feel free to use different AWS regions to gain better resilience. AWS offer excellent support for multi AWS regions. To manage multiple accounts, I'm traditional and conservative for security reasons. Don't do it from same/shared computer. Use different VM or isolated environment. Many company do it for disaster recovery/backup in another account.
  • Server Grouping & Bulk action - if you have done Cloud Resource Optimzation and Scheduling & Automation correctly, this is resolved already. If not, AWS cli + ansible will help you get very far.
  • Easy Server Interface - Go with AWS cli + ansible
  • Server Build Wizard - Many services are doing this for free or a small price. Personally, server should abstract more as-a-service. Understand your distro/OS, only tune when you must.
  • Permission Management - Security is never stronger than the weakest link. Build the security process before you considering a tool for Permission Management. Use least privilege princip and a password tool will keep you relative safe for a long while.
  • Image & Snapshot management - This is similar to Server Build Wizard, but in most case, simple script and AWS cli will get your very far. If not, simplify the complicity. Do you really need all the images and snapshots? Is it must have or nice to have?
  • Manage Clients & Billing - If you done tags and permission management correctly. This should not be much work. I'd introduce some log service or simple DB to store historical data points. E.g. ELK or graphite. 
To summary, I'm not saying those services/tools are useless. Every organization must understand business activities on top of IT first, before you can optimizing IT. Don't fall for the cloud-hype marketing tricks.
Finish this blog from the air. Safe flight above your cloud & keep the lights on!

No comments: