Saturday, January 24, 2009

Notes from Houston Techfest, Part 2

After lunch we had three more sessions.

Darin Marple
Topic: Using java to solve capacity issues


What can we do from a design perspective to identify or prevent capacity issues.

Transaction Model: Move transactions to as low of level as possible. Avoid two phase commits. Consolidate transactions at the db layer with stored procedures or DAO patterns.

Dependency Management: primary concern is dependency is not available at the time its needed Solutions caching dependency using any of the caching methods Workflow management: Provide alternative business path to using the data using possible older data.

Application Metrics:
Metrics via JMX: Monitoring with logging, JMX can publish metrics for mbeans

Persisting Metrics: Save metrics for analysis over time. Preferably to a database for persistence. Watch for extra load on database. Can output logs to file then batch load them into the database.

Validation: Load testing with LoadRunner: Validates application will work on a test system. Allows capture of true SLA and ability to tune and retest. Try to simulate real load as close as possible.

Deployment
Horizontal Scalability. Use JMS Distributed Batch. Use singleton at low level and workers at a higher level to pass information to the lower level.

---------------------------------
David Neal
Topic: Coding Considerations for Production Support: Instrumenting your code to reduce your support headaches

Carnegie Mellon University's Software Engineering Institute
Capacity Maturity Model

Avoid the standalone application mindset. Use useful error message. Dynamic adjusted diagnostic levels, Use progressive level of detail. If your using threading applications make sure that you include a key to be able to get the output back out of the logs for that one. Check log4j to output thread information. Log4j can also watch the logging level and if it changes in the properties it will update.

Aggregate the data from the method level to the caller level. Make sure that the context of the work is logged. If you return 100 records or 1M records put that in the logging so another user will know what the context of the results are.

Recoverable: Make sure the processing has the ability to recover preferably in stages especially for the larger jobs that need to be completed. Fuego is used for common recovery procedures.

JP Morgan uses a dashboard system to aggregate the data from the monitoring systems and that needs to demonstrate SLA. That also gives the ability to drill down into various problems.

--------------------------
John Teague
Topic: Principals of Object Oriented Design

Principals based on Robert's Martin's book.

High Cohesion and Low Coupling helps to make a solid OO design.

Makes code: Maintainable, Easier to test, Less resistant to change, reduce repetition, allows for continuous improvement, allows for agile development with vertical design.

If your going to mock it put an interface around it.






SOLID

No comments: