2009-06-30
2009-06-30 Tuesday - Programming Scala, Chpt. 12
2009-06-27
2009-06-27 Saturday - Links
One Day in Kanban Land
Kanban vs. Scrum
Jonas is the founder of the consulting firm Scalable Solutions, based out of Sweden.
"Scalable Solutions is a small boutique consultancy providing consultancy, mentoring, coaching and training in areas such as scalability and high-availability, fault-tolerance and robustness, system hardening and stabilization, concurrency as well as agile practices and techniques."
2009-06-26
2009-06-23
2009-06-23 Tuesday - Presentations / Communications
blog.duarte.com/
decker.com/continuous-learning/products.php
Decker: The Five Biggest Mistakes CEO's Make in Speaking
2009-07-03 Friday Update
williamgurstelle.com/
Scott Berkun: How to give a great ignite talk (his speakerconfessions.com/\ blog)
2009-06-16
2009-06-16 Tuesday - Java JVM Garbage Collector Tuning
Their initial execution time was approximately 38 minutes. The latest version of the refactored code is now running in approximately 8 minutes.
One layer of the interface invokes a 3rd party vendor's Java Web Services API. Under nominal load, one of the Java Web Services throws an OutOfMemoryError - as the size of a batch file is increased during load testing. Thus far, they have relied on increasing the Java JVM Heap size parameters. They are running JDK 1.5 due to a 3rd party library dependency.
A bit of investigating came across what appeared to be somewhat similiarly reported problem:
This discussion thread indicates that this might be resolved in JDK 1.6
http://www.nabble.com/What-the-...--%22java.lang.OutOfMemoryError%3A-GC-overhead-limit-exceeded%22-tt12058809.html
This summary description seems to be in line with what I suspect to be the root cause:
Excessive GC Time and OutOfMemoryError
http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom
"The parallel collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. This feature is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small. If necessary, this feature can be disabled by adding the option -XX:-UseGCOverheadLimit to the command line."
In preparing to do further diagnosis, I've assembled the following links to share with the client's technical staff:
2009 JavaOne Technical Session: Garbage Collection Tuning in the Java HotSpot Virtual Machine TS-4887
http://72.5.124.65/learning/javaoneonline/j1sessn.jsp?sessn=TS-4887&yr=2009&track=javase
Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
Frequently Asked Questions bout Garbage Collection in the HotspotTM JavaTM Virtual Machine (1.4.2)
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html
Java theory and practice: Garbage collection in the HotSpot JVM (2003)
http://www.ibm.com/developerworks/java/library/j-jtp11253/
Garbage collection tuning in Java 5.0 is a breath of fresh air
http://articles.techrepublic.com.com/5100-10878_11-6108296.html
4 Easy Ways to do Java Garbage Collection Tuning
http://developer.amd.com/documentation/articles/pages/4EasyWaystodoJavaGarbageCollectionTuning.aspx
Java Garbage Collection Tuning
http://www.jivesoftware.com/jivespace/docs/DOC-1486
http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp
There are essentially two GC threads running. One is a very lightweight thread which does "little" collections primarily on the Eden (a.k.a. Young) generation of the heap. The other is the Full GC thread which traverses the entire heap when there is not enough memory left to allocate space for objects which get promoted from the Eden to the older generation(s).
If there is a memory leak or inadequate heap allocated, eventually the older generation will start to run out of room causing the Full GC thread to run (nearly)continuously. Since this process "stops the world", {your application} won't be able to respond to requests and they'll start to back up.
The amount allocated for the Eden generation is the value specified with -Xmn. The amount allocated for the older generation is the value of -Xmx minus the -Xmn. Generally, you don't want the Eden to be too big or it will take too long for the GC to look through it for space that can be reclaimed
Troubleshooting/FAQ
http://www.caucho.com/resin-3.0/troubleshoot/technique.xtp#garbage-collector
java.lang.OutOfMemoryError exception, application runs out of memory
http://www.caucho.com/resin-3.0/troubleshoot/symptoms.xtp#memory-leaks
"An OutOfMemoryError exception is usually an indication that heap memory is being used up. Often this is from application code keeping references to objects that are no longer needed, and the garbage collector does not free them"
CPU spikes, excessive CPU usage Obtain a thread dump and check for threads that are caught in tight loops. Check for garbage collection issues.
Out of Memory and Garbage Collection
http://www.caucho.com/resin-3.0/troubleshoot/technique.xtp#out-of-memory
Most memory problems are due to memory leaks in the application program. For example, a cache or a vector that fills up with stale data, or a singleton or static variable which doesn't properly detect a web-app reload. Some more exotic memory issues relate to running out of heap memory or virtual memory when using a large number of threads (> 256).
The steps to track down a memory problem are:
1. Enable -J-verbosegc with the httpd.sh start or httpd -install. The -verbosegc flag logs the garbage collection of the heap, which will let you know if you're running out of heap memory (the most common case).2. Get a heap profiler or use the heap dump in the JVM. JProfiler is an inexpensive commercial heap profiler. Although the JVM's heap dump is not very user friendly, it's always available. You should be using a heap profiler as part of your development process and certainly use one before any production launch.
3. With the heap profiler, find the 2-3 top memory users and fix those memory leaks.
4. Common application errors include:
+ ThreadLocal variables that are not properly cleared at the end of each request.
+ Singleton or static hash maps and caches, esp check for clearing web-app restarts.
+ Spawned threads which are not stopped on web-app restart.
+ web-app variables (like the "application" variable), stored in a static variable.5. If the heap is clean, i.e. -verbosegc shows a steady heap, you'll need to look at non-heap memory:
+ Thread stack usage (-Xss1m). Each thread takes up some non-heap memory. The default on some systems is 8 meg. Because of 32-bit virtual memory limits of about 2G on some systems, even 256 threads with 8 meg stacks can chew up the virtual memory. You can drop the stack size with the -Xss directive.
+ JNI memory. If you're using JNI libraries or drivers that use JNI, it's possible that the JNI can allocate more memory than is available.
+ fork/exec and OS limits. If the OS does not have enough available swap space, for example, the OS might refuse a "jikes" compilation.
+ NIO, memory mapping, and .jar files. The JDK memory-maps .jar files. In some cases with very large numbers of jars, this can result in running out of virtual memory. The same issue can appear for NIO memory mapping.6. If all of these are eliminated, it might be an {application} bug. However, you will
need to have located the memory leak as {application}-related before any memory-related bug report, i.e. it's necessary to go through the above steps before reporting a bug. Bug reports that complain about OutOfMemory errors, but have not even gotten a JDK memory dump are most likely application errors. You must provide a heap dump when reporting any potential Resin memory problems.
Tuning the Java Runtime System
http://docs.sun.com/source/817-2180-10/pt_chap5.html
Tuning JVM switches for performance
http://performance.netbeans.org/howto/jvmswitches/index.html
More exotic switches
-XX:+UseAdaptiveSizePolicy - this switch may help
improve garbage collector throughput and memory footprint. It is part of garbage
collector ergonomics implemented in JDK5.0.
JDK 1.5 Garbage Collector Ergonomics
http://java.sun.com/j2se/1.5.0/docs/guide/vm/gc-ergonomics.html
(…)
On server-class machines running the server VM, the garbage collector (GC) has changed from the previous serial collector (-XX:+UseSerialGC) to a parallel collector (-XX:+UseParallelGC). You can override this default by using the -XX:+UseSerialGC command-line option to the java command.
(…)
The parallel garbage collector (UseParallelGC) throws an out-of-memory exception if an excessive amount of time is being spent collecting a small amount of the heap. To avoid this exception, you can increase the size of the heap. You can also set the parameters -XX:GCTimeLimit=time-limit and -XX:GCHeapFreeLimit=space-limitwhere:
time-limit:
The upper limit on the amount of time spent in garbage collection in percent of total time (default is 98).
space-limit:
The lower limit on the amount of space freed during a garbage collection in percent of the maximum heap (default is 2).
(…)
-XX:GCTimeRatio=nnn
A hint to the virtual machine that it's desirable that not more than 1 / (1 + nnn) of the application execution time be spent in the collector.
For example -XX:GCTimeRatio=19 sets a goal of 5% of the total time for GC and throughput goal of 95%. That is, the application should get 19 times as much time as the collector.
By default the value is 99, meaning the application should get at least 99 times as
much time as the collector. That is, the collector should run for not more than 1% of the total time. This was selected as a good choice for server applications. A value that is too high will cause the size of the heap to grow to its maximum.
The client environment includes running JBoss Application Server:
JBoss Enterprise Portal Platform 4.3 Tuning Guide
http://www.redhat.com/docs/en-US/Enterprise_Portal_Platform/4.3/pdf/Tuning_Guide.pdf
6.2. Garbage Collection (GC) Tuning
"Depending on nature of your application, adding XX:+UseConcMarkSweepGC
-XX:+UseParNewGC may optimize GC collection behavior. "
Jboss 4.2 - TuneVMGarbageCollection
http://www.jboss.org/community/wiki/TuneVMGarbageCollection
JBoss Enterprise Application Platform Tuning (Jboss World 2008)
http://www.jbossworld.com/2008/downloads/pdf/thursday/JBOSS_10-1050am_JBoss_Enterprise_Application_Platform_Tuning_v2_Andy_Miller.pdf
Scaling Up the JBoss Application Server (LinuxWorld Open Solutions Summit 2007)
http://www.linuxworld.com/events/2007/slideshows/A2-johnson.pdf
Set the heap sizes
– Set min and max sizes to same value
– Set young
generation to 1/3 size of heap
2009-06-13
2009-06-13 Saturday - Business Intelligence Reporting Tool (BIRT)
Here's the main BIRT page where you can download the latest release:
http://www.eclipse.org/birt/phoenix/
This is the link to their simple tutorial page:
http://www.eclipse.org/birt/phoenix/tutorial/
These BIRT Examples may help:
http://www.eclipse.org/birt/phoenix/examples/
Introduction to BIRT
http://www.cs.aau.dk/~dolog/courses/erp2007/lecture3_technology.pdf
IBM Introduction to BIRT Part 1
http://www.ibm.com/developerworks/offers/lp/demos/summary/os-birt1.html
IBM Introduction to BIRT Part 2
http://www.ibm.com/developerworks/offers/lp/demos/summary/os-birt2.html
BIRT Exchange Community Forum
http://www.birt-exchange.org/forum/
These YouTube videos may be of some use too:
http://www.youtube.com/watch?v=iOXAfXSRysQ
http://www.youtube.com/watch?v=s-BnKA7e2Bc&feature=related
Two Amazon BIRT titles I would recommend:
Practical Data Analysis and Reporting with BIRT: Use the open-source Eclipse-based Business Intelligence and Reporting Tools system to design and create reports quickly, by John Ward:
and, Diana Peh's, BIRT: A Field Guide to Reporting (2nd Edition)
2009-06-13 Saturday - New Book Received, Programming in Scala
At roughly ~700 pages, this looks to be a comprehensive treatment of Scala. Of particluar note, Martin Odersky (creator of the Scala language), and Lex Spoon are also co-authors.
Chapter Outline:
1. A Scalable Language
2. First Steps in Scala
3. Next Steps in Scala
4. Classes and Objects
5. Basic Types and Operations
6. Functional Objects
7. Built-in Control Structures
8. Functions and Closures
9. Control Abstractions
10. Composition and Inheritance
11. Scala's Hierarchy
12. Traits
13. Packages and Imports
14. Assertions and Unit Testing
15. Case Classes and Pattern Matching
16. Working with Lists
17. Collections
18. Stateful Objects
19. Type Parameterization
20. Abstract Members
21. Implicit Conversions and Parameters
22. Implementing Lists
23. For Expressions Revisited
24. Extractors
25. Annotations
26. Working with XML
27. Modular Programming Using Objects
28. Object Equality
29. Combining Scala and Java
30. Actors and Concurrency
31. Combinator Parsing
32. GUI Programming
33. The SCell Spreadsheet
A. Scala scripts on Unix and Windows
Wow.
2009-06-13 Saturday - Sony ICD-PX720 Digital Voice Recorder
I am very pleased with the quality of the recordings, and the battery life is very good. I used this device to record all of the interviews I conducted at JavaOne 2009.
I plan to begin using this to record requirements discussions with clients.
2009-06-10
2009-06-10 Wednesday - International Semantic Web Conference
The 8th International Semantic Web Conference (ISWC 2009) will be held 25-29 October 2009 at the Westfields Conference Center near Washington, DC.
2009-06-10 Wedensday - SAP Resources
UN/CEFACT - SAP Developer Network (SDN)
UN/CEFACT Core Components Technical Specification (UN/CEFACT CCTS)
ISO 15000-5 CCTS developed by UN/CEFACT and ISO Technical Committee (TC) 154 provides a methodology for semantic data modeling that achieves a common understanding of data structures and message types on a syntax independent level.
SAP uses ISO 15000-5 CCTS to define SAP Global Data Types (GDTs) as the basis for Business Objects and Enterprise Services. ISO 15000-5 CCTS is gaining widespread adoption in vertical and horizontal standards development organizations around the globe and will enable SAP to provide the highest level of semantic interoperability possible between SAP and non-SAP applications.
SAP Network Blogs
2009-06-08
2009-06-08 Monday - JavaOne 2009 - Interesting Presentations
Monitoring and Troubleshooting Java™ Platform Applications with JDK™ Software
Mandy Chung, Tomas Hurka, Sun Microsystems, Inc.
Kohsuke Kawaguchi's (Sun Microsystems, Inc.) Hudson presentation
(more links/updates to follow)
2009-06-06
2009-06-06 Saturday - Finally Succumbed to Twitter
(I would have liked to use "intltechventures" - but it appears that Twitter has a maximum length of 16 characters for an account name)
2009-06-05 Friday - JavaOne 2009 - That's a wrap!
2009-06-05
2009-06-05 Friday - JavaOne 2009 - James Gosling's Toy Show
Robot Competitions: http://usfirst.org/
- Winner of a Duke's Choice Award
Satellite Control Systems
Chris Boone
- Visual Search Engine
- R&D Team in Moscow
Grameen Bank, Methos.org - Open Source Project
- Winner of a Duke's Choice Award
- micro-finance web application, loan/saving portfolios
- uses tomcat / struts / Spring Framework
- serves over 150M world-wide served
- 99.9% repayment on loans with no collateral
2009-06-04
2009-06-04 Thursday - Bay Area Scala Enthusiasts at Twitter HQ
Martin Odersky, the creator of the Scala programming language, is giving a talk tonight.
Alex Miller, from St. Louis, announced he is organizing a conference to be held in St. Louis later this Fall
http://www.strangeloop.com
Martin's Talk: What's New in Scala 2.8
Next version will be 2.8
Some extended & modified libraries: swing, collections
New Language Features: named args, specializations, generics, package objects
Optional plugins, continuations
Redesigned compiler/IDE interface
New Language Features:
Named and default arguments:
- Defaults can be arbitrary expressions, not just constants
- Default evaluation is dynamic
Copy Method
Defining a copy
Using a copy
Nested annotations
- annotations can now be nested
- named arguments syntax is re-used
Package Objects
implemented to deal with collection libraries
refactored the class space
Package objects make packages more like objects
Old Scala Collections (pre 2.8): grew over time, gradually, lacked a uniform structure
New Scala Collections: Uniform structure, every operation is implemented only once, selection of building blocks now in package scala.collection.generic
Generics cause a performance hit if you are dealing with primitive types - because they require a uniform representation - everything needs to be boxed...@specialized can be used to avoid the boxing/unboxing problem.
Better Tools
- REPL with command completion
- Newly designed IDE/Compiler interfaces
New control abstractions
- Continuations plugin
More Features:
- extended swing library
- performance improvements
-- structural type dispatch
-- actors
-- vectors, sets and maps
- standardized comopiler plugin architecture
How to get it
- available now via /trunk (bleeding edge)
- final version planned for September/October
Beyond 2.8
- common focus: parallelism and concurrency
- developing a rich library of concurrency abstractions
-- actors
-- transactions
-- data parallelism
-- stream processing
- work with Doug Lea on concurrency datastructures
- advanced tyhpe systems to gurantee isolation and effect tracking
- Goal: in 5 years, Scala should be language of choice for the creation of concurrent and parallel systems.
Breaking News: The meeting organizer mentioned that he just had a phone conversation with Joshua Bloch tonight - and that he said he may finally have to take a look at Scala.
2009-06-04 Thursday - JavaOne 2009 - Actor-Based Concurrency in Scala
Speakers:
Phillipp Haller, EPFL
Frank Sommers, Artima
Actor Principles:
- Shared-nothing
-- Actor's state is private
-- No synchronization on private state
- Actors communicate through messages
-- Messages are (mostly) immutable objects
- Actors can be local or remote
-- Same programming model
-- Scales "from multicore to cloud"
An established concurrency paradigm
Long history of research
-- started at MIT in the 70's (Hewitt, Agha)
--- insipred by Smalltalk and Simula
- Motivation for the development for Scheme
Actors in Erlang
"a pure message-passing language"
- Supportive language features
- Special, process-oriented virtual machine
-- Manage VM processes
-- Cheap proceses: creates them fast, have lots of them
- OTP: library of Erlang modules for building reliable distributed systems
Actors in Scala
- Closest implementation of the Erlang model on the JVM
- Leverages Scala language features
-- pattern matching, closures
-- traits and mutliple inheritance
-- Full Java interoperability
- Event-based Actors
-- Not tied to Java threads
-- allows you to scale to millions of Actors / Threads
- Local and remote
-- same programming model
- Implementable as an embedded DSL
- Part of Scala's standard library
-- scala.actors, scala.actors.remote
- used by Twitter's kestrel message system (?)
Creating an Actor
- extend class by Actor class
- implement act() method
- define message types (case classes)
- Receiving messages, use the "receive" command
WOW - I get Actors now
Pattern matching: switch on steroids
- List of alternatives:
-- case pattern => expression
- Patterns are tried in order, the first match is evaluated
- Patterns look like factory method calls
Handling subscriptions
Sending a subscription message:
chatroom ! Subscribe(User("bob"))
"!" method to send a message
Nono-blocking, returns immediately
Implicity passes a reference to the sender
Syncrhonous send
val res = chatRoom !? Subscribe(User("bob"))
"!?" sychronous send method
Blocks sender until reply is received
Futures (callback?)
val future = chatRoom !! Subscribe(User("bob"))
Message send does not block
Future: handle that represents the reply
Sender waits for the....?
Timeouts: receiveWithin(ms)
self.receiveWithin (1800 * 1000)
Scala Actors work across Virtual Machines - using remote Actors
import scala.actor.remote._
import RemoteActor._
Sending message to remote Actors
select(Node(, 8000), 'chatRoom)
select returns a proxy to the Actor
Reference to caller transfers to remote node:
- sender is valid reference in remote Actor
Event-based (aka thread-less) Actors
Event-based actors do not consume a thread while waiting for a message
Replace:
- receive {} with react{}
- receiveWithin {} with reactWithin() {}
- while(cond) {} with loopWhile(cond) {}
Massive gains in scalability
Event-based (aka thread-less) Actors
Receive vs. react
- Use react whenever possible
- Use receive when necessary (e.g. to receive a value returned by an Actor)
Act II: Under the hood
- Event-based actors
-- decoupling threads and actors
- Lightweight execution environment
-- work-stealing thread pool
- Implementing the DSL
-- Creating actors using actor {}
-- Receiving messages using react {}
Event-based Actors
- Naive thread-per-actor implementation
-- thread creation and context-swtiching overhead
-- high memory consumption
- Implementation in Scala Actors is event-driven
-- Decouple actors from JVM threads
-- Execute actors on thread pool
Lightweight execution environment
- Thread pool
- Work stealing
-- Load balancing
- Local work queues
Thread pools and work stealing
-- map Actors (man) to Thread Pool
-- worker threads (few)
JSR 166 thread pool implementation (?)
Implementing the DSL
Creating Actors
Starting an Actor cretes a task that is submitted to a scheduler managing a thread pool.
Customizing Actor execution
Executing Actors on the AWT event dispatch thread
Scala 2.8 and beyond
- pluggable schedulers
- integrating exceptions and Erlang-style error handling
- Continuations support
-- using optional compiler-plugin
-- More flexible control structures, Actor migration
- Static checking: @immutable, Actor isolation
2009-06-04 Thursday - JavaOne - Breaking News
Microsoft and Sun demonstrated a very interesting level of interoperability between .NET 3.5 layers of a StockTrader implementation - and the GlassFish/Metro implementation of the StocTrader implementation.
Very impressive.
WS02 implementation of the StockTrader application
2009-06-03
2009-06-03 Wednesday - JavaOne 2009 - BOF-4638
Ronald Bowers, The Army Research Laboratory
Dennis Reedy, Elastic Grid LLC
SLAD performs both experimentation and modeling
MUVES3
- provide the next generation simulation system for the V/L analyst community
- mostly Java
- Dynamic distributed and service-oriented
- will support over 100 concurrent users
- incorporates a computation grid, parallelized system that distrubtes tasks and computes results that are graphically displayed
- will operate in both "batch" and interactive modes
Interesting Challenges
- few servers - budget constrained, but many powerful workstations
- heterogenous deployment environment
- architecture must exploit analyst community machines (diversity of OSs)
- must be able to route functionality to machines that are best capable of executing tasks/functions
- must be able to scale on demand based on real time need and use of the system
- legacy of performance issues and nightmares
Solution Approach
- choose technology that embraces dynamic distributed capabilities
- craft a loosely coupled service oriented architecture that segments the system into functional roles
- choose persistence technologies and approaches that allow for low latency and high concurrency
- ....?
What's Underneath
- Domain-specific Services and Algorithms
- Application Infrastructure
- Dyanamic Container / Quality of Service <== Rio (open source, will take a set of resources and create a grid ?)
- Monitoring and Management
- Persistence Management
Gomez(?)
Architecture
client --> Gateway --> Sim
V
--> Persistence
MUVES 3 UI
- built on NetBeans Platform
Biggest Issue
- integrating libraries that are updated frequently
2009-06-03 Wednesday - JavaOne 2009 - BOF-5048
There was some interesting usage of the Spring Framework demonstrated...
2009-06-03 Wednesday - JavaOne 2009 - ZeroTurnAround.com
2009-06-03 Wednesday - JavaOne 2009 - Fiorana
2009-06-03 Wednesday - JavaOne 2009 - Terracotta
2009-06-03 Wednesday - JavaOne 2009 - Java Utopia Panel
Moderator: Eric Klein, Vice President, Java Marketing, Sun
Panelists:
Jeet Kaul, Senior Vice President, Java Technology, Sun
Steve Glagow, Vice President, Orange Partner
Bill Maggs, Head of Developer and Partner Engagement, North
America, Sony Ericsson Mobile Communications
Chris Danzig, Executive Vice President - Product and Technology
Development, Founder at Indaba Music
---------------------------------------
I asked two questions:
1) Do you have any planned competitions to seed the developer interest in spending time to develop applications for the App Store?
Answer: Not yet.
2) Have they given any thought to providing an Affiliate Program to turbo-charge the viral nature of the community to promote the sale of applications?
Answer: May have something like this in the future.
Summary: Their view of the big draw of the app store? It is free for the developer?
It seems strange that they haven't jammed the app store announcement with a more compelling promotion. It seems to me to be a possible example of "if we build it, they will come".
Hmmm...
2009-06-03 Wednesday - JavaOne 2009 - Rethinking the ESB
Sitting in session TS-5341, Rethinking the ESB: Lessons Learned from Challenginging the Limitations and Pitfalls.
Presenters:
Andreas Egloff, Sun Microsystems, Inc.
Frank Kieviet, Sun Microsystems, Inc.
Two interesting ESB clustering concepts / points made:
- homogenous clustering topology
- heterogenous clustering topology
Read more about: OpenESB at JavaOne 2009
2009-06-02
2009-06-01
2009-06-01 Monday - JavaOne - in the Pavilion
My friend Dean Wampler just suggested a Ruby site: futureruby.com
I'm waiting for a confirmation on a schedule for an interview with the Terracotta executives sometime Tuesday or Wednesday morning.
I have an interview setup with SpringSource executives for this Thursday.
This morning I interviewed Omer Trajman, Senior Director, Cloud and Virtualization, for Vertica Systems, Inc. (vertica.com)
2009-06-01 Monday - JavaOne 2009 - Cloud Computing Patterns
Cloud Compute Instance Provisioning
Provisioning Elements
- Base OS
- Utilities & agents
- Platforms and frameworks
- Custom application code
- configuration files
- Data and volumes
Provisioning Participants
- Console
- Cloud interface
- Comopute instance
- Image repository
- ...
Static Image Provisioning
- very simple scripted provisioning
- deploys full stack to cloud compute image with little customization
- appropriate for low-complexity, low volatility code
- easy integration into existing monitoring processes
- may be more secure - could run keyless
- external orchestration left to console (load balancer)
- requires very good Test/QA procedures
Push Provisioning
- Builds on static pattern by "pushing" additional provisioning informaiton / configuration
- still have to do a fair amount of error checking in the deployment script
- have to know a fair amount of OS and platform / environment
Pull Provisioning
- builds on static pattern / introduces client/server interactions
- appropriate for high codebase volatility and architectural complexity at great scale
- adds several new participants which introduce administrative overhead and points of failure
- provisioning server handles external orchestration
Monitoring Apps in the Cloud
- Crucial Function of Application Service Operations
- Forces (Business Inputs)
-- SLA
-- Margin Analysis
- Primary Strategies (some overlap)
-- Agent Based: detects events in real-time
-- Polling: simple health checks, synthetic round-trip
Agent Based:
Pros:
- Rich data
- HIgh control over what is observed
- Realtime event detection
Cons:
- Resource overhead on every instance
- Data traverses public network
- Lifecycle sustaining implications
Watch Polling (example: Amazon Cloud Watch)
Pros
- No resource overhead
- Simple
- Scope is dimensionable
- No sustaining implications
Cons
- Costs 0.015 / Instance / hour (Amazon?)
- Limited data
- Lock-in
2009-06-01 Monday - JavaOne 2009 - Press/Analyst Briefing on Cloud Computing
Moderated by Ray Valdez (sp?) - Gartner
Panel:
Lou Tucker, Sun Microsystems, CTO of Cloud Computing
Todd Fast, Sun Microsystems, Chief Architect, Platform-as-a-Service, (CTO, zembly.com)
Tim Bray, Sun Microsystems
Geir Magnusson Jr., Apache Foundation
The following are some snippets of the presentation that I've hopefully captured without too many errors...
...the idea of "nano-services" or "micro-services"...to fill in the niche needs
"cloud food chain"
"facebook is a channel", "mypace is a channel"
...As you move up the stack, to be a true cloud...there is more value [offered], you [as the customer] also have to willing to give up more [things]...
"[multi-tennancy is a requirement to be a true cloud]"
programmatic control over provisioning must be there...
Elasticity is considered important
Architecture: what is actually shared?
Tim Bray: Amazon doesn't tell you anything about the underlying architecture...[and does that really matter?]
Todd: Architecture or Programming Model?
Monetization...