Engineers Widely known for standards - 802.3, 802.11 World’s largest technology professional association - 400,000 engineers in 160 countries Publishes nearly a third of the world’s technical literature in EE/CS IEEE Spectrum http://spectrum.ieee.org - 100% Grails
Global data centers Treat hardware / infrastructure resources like software Consolidated service provisioning - using APIs Empowered business units / bypass traditional IT
- Platform as a Service IaaS - Infrastructure as a Service More automated, delegated, managed, inflexible Salesforce, Google Apps, iCloud Amazon EC2, Rackspace, Joyent GAE, Heroku, Amazon Beanstalk
process for provisioning services / resources (compared to IaaS) One-off use cases Experiment with services without upfront commitment Pre-configured integration with other services
from scratch Automated DNS Load balancing Scaling/autoscaling Application monitoring Hosted DB SSL support Support for multiple stacks/languages Log file management Limited customization
version management Remote log viewing and debugging Multiple environment creation / configuration Command-line tools and API access Integrated CI / build Integrated monitoring
console Developer tools Billing / pricing model Choice of IaaS providers Business maturity Breadth of additional services Support / prof. svcs ALM / source control SLAs Backups / storage mgt.
- Eclipse integration Useful set of proprietary APIs (image processing, email, memcache, task queue) Integration with other Google services - Google Accounts, Cloud SQL, Cloud Storage, App Engine Datastore (NoSQL)
slow startup limitations standard Java Threads not allowed, prevents use of libraries like Quartz Grails app-engine plugin abandoned, doesn't support Grails 2.0 (broken) Gaelyk - lightweight alternative
cloud Multi language, multi-cloud Pivotal backing, and of course SpringSource Eclipse / STS integration v2 recently launched with paid service Platform implemented / extended by other vendors
Focused solely on Java platform/JVM languages and frameworks Can target multiple IaaS, but AWS is primary First-class support for Grails DEV@cloud (hosted Jenkins), Continuous Deployment? Add-on marketplace, like Heroku
SLAs No additional cost All other AWS services are available to application (e.g. RDS, SES, CloudFront, etc.) Integrates with AWS security infrastructure (IAM, Security Groups, etc.) and other services (e.g. VPC, CloudWatch)
Supports Java and a web container (Tomcat or Jetty) Which JDK implementation? (OpenJDK vs. Oracle JDK) Application memory footprint Grails build support (maven/Gradle/grails wrapper)
and metrics for later retrieval Generate instance-level events Monitor the application log files for critical errors Monitor the application server Rotate your application’s log files and publish them to Amazon S3
Local storage is “ephemeral” - don't store to local disk, use “cloud storage”, ala S3 Don't treat cloud servers like data center - make your servers “disposable” Expect / plan for variations in service quality (e.g. Netflix Chaos Monkey)
for granted IT datacenter support May actually be more costly than traditional colocation How to handle billing / managing costs? Learning curve - many new unfamiliar services with different characteristics Need for governance / auditing
deployment from your CI Consider using PaaS only for Dev/QA but keep deploying to existing PROD environments Be aware of application architecture differences Carefully select cloud provider and run pilot project before migrating critical applications