http://www.caucho.com/resin-application-server/resin-professional-application-server/
In this interview Charles Humble talks to Paul Cowan about the Resin Application Server architecture, capabilities, and where it fits in the Cloud market.
Resin Application Server and Cloud discussed by Paul Cowan
1. Resin Application Server
Paul Cowan - InfoQ
Interview
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
2. InfoQ - Paul Cowan Discusses the Resin
Application Server and Cloud
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
3. About Paul Cowan
• Software Engineer working on the Resin
application server at Caucho Technology
• Focusing on dependency injection,
concurrency, high-speed messaging, and
distributed caching
• 11 years of experience
• Started with NetDynamics
• Prior to Caucho worked as Senior Architect
with NAVTEQ
• Traffic.com division
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
4. “Where do you see Resin
in terms of the wider
Cloud landscape?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
5. Resin and the Cloud
Landscape
• Resin fits on the elastic JEE application layer
• We don’t sell the service or provide it to you
• Not PaaS
• Not SaaS
• We are a infrastructure provider/vendor
• You get the Resin software
• You build your Cloud on it
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
6. “Can you tell us a little bit
about how your Cloud
support is architected?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
7. Resin Cloud Support
Architected
• Triad hub-and-spoke
architecture
• Hub
• Three Primary Servers
• Constantly
communicating with
each other
• Spoke
• Elastic Spoke Servers
• Add or Remove as
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
8. “Why did you go for a
hub-and-spoke rather
than say a peer-to-peer
cluster?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
9. Hub-and-Spoke vs. Peer-
to-Peer
• Most cases easier to have 3 primary servers
• IP addresses are known
• No need for auto-discovery
• Creates problems in EC2 environments
• Hub architecture with 3 primary servers
• Responsible for caching data
• Maintaining the knowledge of Cloud architecture
• Eliminates a lot of issues you get with true peer-to-
peer network
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
10. Basic Hub-and-Spoke
Configuration
Dynamic&&
Spoke&
Server&
Triad& Triad&
A&
Server& Server&
1& 2&
Triad&
Server& Dynamic&&
3& Spoke&
Server&
B&
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
11. Basic Hub-and-Spoke
Configuration
Load(increases.(
Spin(a(new(server((
Dynamic&& Dynamic(( up(
Spoke& Spoke(
Server& Server(
Triad& Triad&
A& C(
Server& Server&
1& 2&
Triad&
Server& Dynamic&&
3& Spoke&
Server&
B&
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
12. “How do you keep the network
traffic to a reasonable level as
the number of spikes grows?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
13. Keeping Network Traffic at
Reasonable Level as Spikes
Grow
• Messaging based on Hessian Network Protocol
(HMTP)
• During distributed sessions
• Only update your session data when the data
changes
• Hashing session
• Triad master will have a hash of what current data is
• Spoke server verifies latest data
• “Here is my hash, do I have the latest data?”
• If hashes match very little data needs to be sent
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
14. New Server Dynamically Joining
Cloud
Dynamic((
Spoke(
Triad&Server&1& Server(
192.168.1.10& A(
Triad&Server&2&
192.168.1.11&
Triad&Server&3&
192.168.1.12&
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
15. New Server Dynamically Joining
Cloud
Spin up a new VM instance and add it to the cluster. It talks to the triad to
join
Dynamic((
Spoke(
Dynamic((
Spoke(
Ask for latest
Triad&Server&1&
192.168.1.10&
Server( Server(
B(
application
versions
A(
Triad&Server&2&
192.168.1.11&
Triad&Server&3&
192.168.1.12&
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
16. “How do I configure the
typology of the cluster?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
17. Configuring Typology of
Cluster
• Resin keeps it simple
• Primarily a single JAR file with configuration file
• Same configuration file
• Triad
• Web tier
• Any cluster tiers
• Spokes
• Triad servers spun up
• Usually static on different machines
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
18. Configuring Typology of
Cluster
• Elastic servers spun up
(continued)
• Using single command line
• Easy to bring them up and down as needed
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
19. “How does Resin support Cloud
deployment and distributed
versioning?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
20. Cloud Deployment and
Distributed Versioning on Resin
• Based on HMTP messaging system
• Forms basis for distributed cache
• Distributed versioning based in Git
• Internal version of Git library
• Pushing a WAR or an application to Triad servers
• Git is used to internally push out to all other servers
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
21. Cloud Deployment and
Distributed Versioning on Resin
(continued)
• Sessions in Cloud are tied to Git version of
application
• A number of sessions running off one version of
application
• Push a new version
• Resin keeps that version of application until all
sessions are over
• New sessions coming in will get new version of
application
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
22. “You’ve got replicated session
state across the machines?
What’s the overhead like for
that; for actually replicating the
session?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
23. Overhead for Replicated Session
State Across Machines
• Pretty low
• Only need to replicate to the server that is handling that
session
• Using sticky sessions
• With a lease
• Same session goes to the same server and push session
update to Triad
• Configurable
• When to Push
• Push after every update
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
24. Overhead for Replicated Session
State Across Machines (continued)
• Hashing sessions and comparison with master
and spoke servers
• Cuts down on network traffic
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
25. “What’s the Watchdog
system and why is that
important for Cloud
deployment?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
26. Watchdog System
• Resin always runs with two processes
• Watchdog is the secondary process that
controls Resin
• When you start up a Resin server
• Watchdog starts up first and starts up Resin for you
• Monitors health of Resin system
• Automatically restarts if there is an issue
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
27. Watchdog System
(continued)
• Cloud environment advantage
• Watchdog system maintains health of servers
• Prevents losing track of elastic servers
• Reports any noticed issues
• Health system is external process
• Can detect when Resin is having issues
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
28. “Can you describe some
of the other reports I can
get out of the health
system? You have post-
mortem reports for
instance.”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
29. Health System Reports
• Watchdog Report
• Prior to or leading up to a restart
• Produce a report from the data we were tracking at the
time
• PDF Report
• Tread dump
• Heap dump
• Stack dump
• JMX dump
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
30. Health System Reports
(continued)
• PDF Report (continued)
• Goes through all JMX
• Dump out attributes and values
• Can do profiling if you want
• Internal native profiling library
• Can profile for a period of time
• Monitoring other attributes in system, for example:
• CPU Usage
• Memory usage
• File descriptors
• Produces a “snapshot” PDF
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
31. “And you do JIT profiling
as well, I think I’m right in
saying?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
32. JIT Profiling
• Health system is very configurable
• Any period of time
• From a certain end response to a certain issue
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
33. “How does what you offer
compare to some of the other
JavaEE vendors? WebLogic has
some similar features, for
instance.”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
34. Comparing Resin to other
JavaEE Vendors
• Positioned between Tomcat and WebLogic
• Enterprise quality server
• Elastic
• Health System
• Administration System
• More lightweight
• Only 23 MB download
• 6 second start-up time
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
35. Comparing Resin to other
JavaEE Vendors (continued)
• For customers who want enterprise quality that
don’t need the heavyweight full JEE stack
• Support JEE 6 Web Profile
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
36. “You also have an
anomaly detection
feature. Could you tell us
a bit about that and where
that idea came from?”
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
37. Anomaly Detection
Feature
• Organically rose from need to support
customers
• As well as a lot of our health system
• Result from an actual customer having thread
spike issues
• Noticed the issue in produced graphs
• Unable to tell what was happening
• Needed a snapshot at the time of issue
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
38. Anomaly Detection
Feature
• Monitors virtually any statistic in your JMS
(continued)
• i.e. number of threads
• Sees unusual spike in amount of threads
• Snapshot report is triggered
• Invaluable in providing support
• Detecting something unusual happening while its
happening
• Creating a snapshot of the system to use for
debugging
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
39. Title
• Caucho Technology | Home Page
• Resin | Application Server
• Resin | Java EE Web Profile Application Server
• Resin - Cloud Support | 3G - Java Clustering
• Resin | Java CDI | Dependency Injection / IoC
• Resin - Health System | Java Monitoring and Server
Monitoring
• Download Resin | Application Server
• Watch Resin | Application Server Featured Video
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server