| Have your business applications given you | | | | as its technical architecture. This lets you to plan |
| performance headaches at some point during their | | | | for the future with your systems. It helps you |
| lifecycle? Maybe you resolved the problems and | | | | act proactively rather than reactively. |
| the application was able to keep servicing your | | | | RULE: Find a consultant who's a big-picture thinker, |
| customers and performing its business function | | | | someone who can see beyond your immediate |
| for you. | | | | needs and give you insightful recommendations |
| But no doubt there were other times when you | | | | for the best-practices approach to running your |
| tried to solve the performance problems | | | | applications. |
| internally, but sadly-and expensively-you didn't | | | | 5) GOOD BEDSIDE MANNER: One of the most |
| succeed. To keep future hassles away, you | | | | valuable assets of a top consultant is excellent |
| probably (a) added more hardware or, worse yet, | | | | people skills. Production problems put extreme |
| (b) started a server recycle program to minimize | | | | stress on people, so when you're bringing in a |
| the damage to your production. | | | | consultant, it's vital to find one who can |
| As a result, the performance is still sub-optimum, | | | | communicate effectively and build instant rapport |
| your company is losing money, and your | | | | with your team. Getting a handle quickly on what's |
| customer satisfaction keeps sinking. To get your | | | | happening with your system requires good |
| application back on track, you've decided it's time | | | | communication skills all around. This means the |
| to bring in a professional performance consultant. | | | | ability not only to communicate with others but to |
| You've made a smart decision. But now you face | | | | interact well with them and build a positive |
| the challenge of finding the right person. You must | | | | relationship with your team. You need someone |
| find someone who can quickly identify the | | | | who can come in and quickly add value to your |
| performance problems, resolve them, and | | | | team. |
| implement a plan to bring stability to the | | | | I've lost count of how many times I've heard |
| application. | | | | someone complain that a consultant simply came |
| But that's just for starters. You also need | | | | in, asked some questions and produced a report. |
| someone who'll work well with your team and can | | | | This benefits the company hardly at all, and will |
| put standard operating procedures in place to | | | | leave a team working to bring stability to the |
| stabilize the current environment and prevent | | | | system feeling alienated. |
| future problems. Plus, this person must be able to | | | | RULE: You want someone technical who can |
| transition the best practices to your team clearly | | | | diagnose your situation, but most important, be |
| and effectively. | | | | able to communicate those findings well to the |
| As you can imagine, it's tough to find all these | | | | team they're working with. |
| qualifications in one person. Performance | | | | 6) SELECTIVITY: It's better to hire no consultant |
| consultants are not all created equal. When the | | | | than a bad one. Hiring the wrong person for the |
| time comes to look for your professional | | | | job can cause you more problems than solutions. |
| performance consultant, here are the 10 key | | | | A good rule of thumb: if you have any |
| things to keep in mind: | | | | reservations about the consultant, then follow |
| 1) SOLVABILITY: The performance troubles | | | | your instinct and don't hire them. |
| you're facing are common, and cost many | | | | Sure, you're under pressure to clear up the |
| companies money. The good news is these | | | | trouble, but think about who you're bringing in to |
| problems are solvable. But companies often have | | | | do it before you give the green light. Not only are |
| a consultant look at an application and he or she | | | | you bringing in a consultant to tackle performance |
| decides the problems are just too complex or | | | | problems, but you're also going to need one or |
| aren't solvable. | | | | more dedicated resources to assist. If you adopt |
| For example, one company had a software pricing | | | | the recommendations of someone you were |
| engine that was critical to the business: if the | | | | wary of to start with, you might end up with |
| pricing engine was down, the company lost | | | | more headaches than if you hadn't brought |
| revenue. The CIO admitted that to remedy these | | | | anyone in. |
| problems, they'd have to add more servers. The | | | | RULE: Make sure the consultant you choose is |
| standing architect said he'd need 240 new servers | | | | technically qualified to address your particular |
| to handle the load volume. | | | | problems. Be picky and get the best consultant. |
| I came in, did some testing and found that the | | | | 7) DOMAIN EXPERTISE: Besides the ability to |
| performance troubles stemmed from the amount | | | | troubleshoot, customers usually look for a specific |
| of memory the current application was using. My | | | | application skill. It's actually a mistake to narrow |
| options in this case were limited: I couldn't rewrite | | | | your focus only to such skills. The engineers might |
| code or change architecture, but I was able to | | | | focus on a specific application, but what you really |
| change the Java Virtual Machine for the poorly | | | | need is a different skill set to help turn the |
| performing application. This alternative JVM was | | | | situation around. You need someone who can |
| more forgiving on memory consumption. With | | | | think outside of the application to bring light to the |
| new settings, the company was able to scale | | | | system as a whole, not just the application in |
| back from buying the 240 new servers to only | | | | question. |
| 10. Imagine the cost savings! | | | | You probably haven't found the application skill set |
| RULE: Performance problems are common and | | | | for the problems you're having, or the |
| above all solvable. Sometimes the creative | | | | performance-troubleshooting skills, either. |
| solutions are the ones that offer the most cost | | | | Application specialists might have the business logic |
| effective results. | | | | understanding, but most of them are light on the |
| 2) FUNDAMENTALS: A performance consultant | | | | troubleshooting aspect. |
| must possess a certain amount of common | | | | RULE: You've probably identified the right skill |
| knowledge. Ultimately, you're looking for a | | | | set(s) to handle technical or business problems |
| specialist in identifying and resolving performance | | | | with your application. Consider looking for a |
| issues. This person must be well-rounded | | | | consultant who can augment your internal |
| technically. Here are some basic qualifications to | | | | knowledge. |
| look for:a. JAVA: the foundation of the application | | | | 8) MANAGING EXCEPTIONS: Suppose you've |
| server. Don't hire someone to identify and solve | | | | narrowed your field of consultants and have |
| Java Application Server issues if they don't have | | | | found the perfect one for the job. You're ready |
| a strong foundation in JAVA. At a minimum, they | | | | to bring this person on board. Make sure you've |
| must understand threads, know how Java uses | | | | both explained and documented your expectations |
| memory, and be able to read stack traces and | | | | with the consultant before starting the |
| write test cases.b. Networking: includes Load | | | | engagement. You must identify, up front, the |
| Balancers, Network Interface Cards (NICS) on the | | | | deliverables and artifacts that you expect before |
| boxes, firewalls and anything that's responsible for | | | | the work starts. If a report or a recommendation |
| routing traffic to your applications. Your consultant | | | | is due, make sure you negotiate this up front. |
| must be up to speed on these.c. N-Tier: These | | | | Have regular checkpoints during the engagement |
| architectural designs add complexity to any | | | | to ensure you're getting what you expect. |
| system Java Application Servers. Having solid | | | | If you expect any deliverables, bear in mind that |
| experience with other n-tier applications will help | | | | this usually adds time to an engagement. Allocate |
| the consultant look at your big picture.d. J2EE | | | | time during the engagement, with checkpoints, to |
| Specifications and Standards: having someone | | | | finalize reports and deliverables. |
| who understands the J2EE specifications is a | | | | RULE: Manage the expectations up front by |
| must.e. Operating Systems: make sure the | | | | determining exactly what the consultant will do. |
| consultant has experience with your platform. If | | | | Specify verbally and in writing any deliverables and |
| you're UNIX, make sure they have Unix skills.f. | | | | checkpoints that the consultant must meet during |
| Database: At a minimum, your consultant should | | | | the engagement. |
| understand Structured Query Language (SQL), | | | | 9) SOFTWARE SOLUTIONS: Customers are |
| and be able to identify long-running queries with | | | | always buying expensive software, hoping this will |
| your database version. | | | | solve the performance problems on their |
| RULE: Understanding basic fundamentals will enable | | | | systems. Be wary of consultants who want to |
| your consultant to adapt to your unique | | | | install software they say will cure the ills in your |
| environment quicker and cure your ills in a shorter | | | | environment. The truth is, installing a software |
| time. | | | | package usually adds overhead to the system |
| 3) SKILL SET: Systems are so complex that it's | | | | and opens the door to increased instability. |
| understandable why companies bring in the wrong | | | | If a consultant needs to install software to help |
| consultants to find and fix performance | | | | identify the issue, limit the footprint to one server |
| headaches. The problems could range from a | | | | in the cluster or to a non-production environment |
| code bug, a vendor code or a tuning issue to | | | | first. In some cases, you do need to install |
| technical architecture troubles and sometimes an | | | | software. Consultants might also need to install |
| application architecture issue. Consultants have | | | | tools to find the root cause of a problem. Those |
| varying levels of skill and expertise. Some are | | | | tools are only as helpful as the person who's going |
| strong in architecture and others excel in | | | | to analyze the data. Installing the software won't |
| systems. They could have a development | | | | necessarily lead to the correct action. |
| background or something totally different. | | | | RULE: Software packages add overhead and can |
| Before you start interviewing consultants, | | | | actually worsen instability. Remember, once you |
| consider nailing down the skill set you're looking | | | | let a consultant install the software, you'll l also |
| for. I once had a customer who hired a consultant | | | | need someone who can interpret the data and |
| with a strong architecture background to come in | | | | take action on them. |
| and look at the company's performance problems. | | | | 10) PROCESS: Solving problems in any |
| After doing some analysis, the consultant told | | | | environment will give you some immediate relief |
| them the architecture for the application was | | | | from performance headaches. There are usually |
| wrong and that they'd have to re-architect their | | | | multiple reasons for performance problems. |
| systems. I took a look at the same system and | | | | Imagine you resolve an issue and send the |
| found the trouble: a combination of application | | | | consultant home, having new confidence in your |
| settings and a bug in the underlying operating | | | | system. Then two months later you launch a |
| system. Once I fixed those, the system | | | | large marketing effort and find yourself with your |
| performed much better and didn't need | | | | site down again. Or imagine you brought the |
| re-architecting. | | | | consultant in during non-seasonal loads and are |
| If you hire a specialist in a particular area, expect | | | | now in the middle of your busy season. |
| the recommendations you get to reflect their field | | | | Solving the problem is not the most crucial goal of |
| of expertise. Understand what you're looking for | | | | the engagement. The most crucial goal is to |
| before you open your door to any consultant. | | | | understand how the problem was solved. What |
| RULE: Identify the focal point of where the | | | | tools did the consultant use? Is this something |
| problems are, and then hire the best generalist to | | | | you can build into your best practices to minimize |
| help you find where they are. | | | | performance troubles early in the development |
| 4) BIG-PICTURE THINKER: One of the | | | | lifecycle? And how can you put a process in place |
| advantages of bringing in a consultant is seeing | | | | for continual improvement? |
| your operation from a new and different point of | | | | RULE: Create a process to improve your system |
| view. Plus, it's a great way to learn the latest | | | | continually. Fixing a problem one time only sets |
| about what other companies are doing or new | | | | you up for your next fire drill. |
| trends that are changing your industry. These | | | | SUMMARY |
| insights can enable you to see the big picture and | | | | First, find a strong technical professional who has |
| how your environment(s) compare with others'. A | | | | superior communication skills and can understand |
| big-picture thinker can help you understand how | | | | the big picture, in terms of what n-tier application |
| other companies are managing their Java | | | | architecture looks like. |
| Application Servers. | | | | Second, look for a consultant who isn't afraid of |
| The true big-picture thinker can look at your | | | | challenges, has worked through similar problems in |
| environment and help make recommendations | | | | the past, and has a well-rounded track record of |
| beyond your current performance difficulties. You'll | | | | experience. |
| discover solutions for problems related to | | | | And third, as I stressed above, it's often better |
| architecture, systems selection, load-testing | | | | to bring in no consultant than the wrong |
| capacity and other aspects of the system, such | | | | consultant. |