Gaining Visibility Into Enterprise Spring Applications with tc Server Spring EditionSteve Mayzak – SpringSource
- tc Server — enterprise version of Tomcat developed by SpringSource
- Built on Tomcat
- Survey in 2008: 68% of companies surveyed using Tomcat; most popular lightweight container
tc Server editions
- developer edition — can get it when you download STS
- standard edition — application provisioning, server administration, advanced diagnostics
- spring edition — spring + tomcat stack, spring application visibility, spring performance management
tc Server: Key Highlights
- Developer efficiency
- operational control
- deployment flexibility
Spring Insight
- Spring Insight — knows about Spring and Grails applications, so can provide specific information about your apps as they’re running
- When you deploy a WAR to tc Server, Spring Insight gets involved and get get specific information from your apps
- Spring Insight is currently intended for development use only
- DEMO: huge amount of details come out of Spring Insight, from the HTTP request details down to the JDBC statements that were run and timings on the various actions during the request
- can use Insight with other frameworks, etc. as well by adding annotations to your code
Operational Control
- performance & sla management of spring apps
- application provisioning and server administration
- rich alert definition, workflows, and control actions
- group availability & event dashboards
- secure unidirectional agent communications
- tc Server is a combination of Hyperic and Tomcat
- monitoring is done via valves in Tomcat–isn’t a fork or modified version of Tomcat
- Hyperic monitors web servers, app servers, databases, caching, messaging, directories, virtualization, etc.
- Hyperic is also a management tool–admin, provisioning, groups, metrics, alerts, events, access control, upgrades, etc.
- hyperic is jmx based, runs as an agent on each server
Enterprise Capabilities in tc Server
- Run multiple instances per install — creates tc Server install updates
- tc Server instances can point to a central set of binaries so upgrades are simpler
- advanced scalability options
- non-blocking (NIO) conectors
- high-concurrency connection pool
- JDBC Pool — open source (ASF), blog posts on tomcatexpert.com
- Can create tc Server templates and create multiple instances from a base template
- Advanced diagnostics–detects deadlocks and slow-running requests
Hyperic
- monitoring and deployment
- can see what apps are running on tc Server, number of sessions on the apps, up/down times, etc.
- can deploy war files and change context path as you deploy
- can schedule deployments and have the server auto-restart
- can deploy from a remote machine (e.g. build server)
- can remotely stop/start/restart instances
- can set up scheduled restarts–e.g. make configuration changes during the day, have server auto-restart after hours
- can schedule recurring restarts (e.g. restart daily at 1 am)
- hyperic consumes jmx metrics and can show them in context, meaning it shows application metrics in the context of the overall server health (cpu, memory, etc.)
- with the metrics coming in you can look at the specifics of your application and tune according to what your specific application is doing
- has everything from cpu, memory, disk I/O metrics, to request metrics, down to spring-specific metrics
- can add JMX instrumentation to your own classes without having to write your own MBeans–just annotate with @ManagedResource, @ManagedMetric, @ManagedOperation, @ManagedAttribute
- this lets you get down to questions like “how many bookings per second can I handle in my travel booking application?” which lets you plan infrastructure and scalability in a very granular way
- hyperic does metric baselining for your specific app so you’ll get alerts based on the baseline metrics for your application
- can enable/disable metrics and alerts across multiple servers from a single interface
- can see metrics globally (across a cluster) or individually on each server
Deployment Flexibility
- Lean server (10MB) for virtual environments
- template-drive server instance creation
- integrated experience with vmware environments
- open, secure API for all operations
- server-specific settings like ports, etc. have been taken out and put into a catalina properties file, so server.xml can be applicable to all servers
- streamlines process of spinning up new server instances
- shared binaries for upgrades
- multiple server versions can be installed per machine
- complete flexibility for various “sizes” of VMs