Monthly Archives: February 2010

Your Feedback, My Passion – BLRCTD2010

Had a great time presenting at Community Tech Days. This was the first time I was doing opening session. Normally, I avoid doing it to get some buffer time, in case things go wrong. Nevertheless, it was an awesome experience. Thanks to the audience for making it so early on weekends. Hope the session was worth your time. You can find the presentation and demos here. Demos were largely from AppFabric SDK tweaked to convey a scenario. If you enjoyed the video I got the link from Vittorio’s Blog. Until next time, keep learning & sharing. Love you all :) .

Verint Architecture

This is an offbeat post. Recently I was attending Verint training which happens to be a COTS product for managing your Call Center requirements. These requirements include the ones like Call Recording, Screen Capture, Quality management of calls / Scoring, Reports, etc. In this post I will jot down the basics of Verint Architecture I could collect from session.

Verint like any other Call Center Management related product taps into your incoming PSTN network via PBX and CTI interface. CTI interface raises events on various activities, for instance whenever there is an incoming call to your contact center. From here Verint takes over and starts recording the call. Verint also supports Screen capture in case your business needs one.

Verint has a tiered architecture in form of – Acquisition Server, Hub & Data Center. Verint distinguishes between Hub & Data Center for high volume scenarios, otherwise it bundles both together into something called AIO (All-In-One) Server.

Acquisition Server is where modules like VAM (Voice Acquisition Module) & SAM (Screen Acquisition Module) run. Recorded calls are stored here temporarily, and corresponding call detail is captured (Verint calls it as Contact detail). The recorded call files are moved from Acquisition Server to Hub Server via FTP. And the Contact details which are stored in SQL Server are transferred to Hub Server via MSMQ. There is a purging service on Acquisition Server which can purge recorded calls data on disk space available, duration, etc.

Hub Servers appeal seems to be there from a Latency (performance) standpoint. They get Contact details & recorded voice calls from Acquisition Server. Acquisition server has a relatively small storage and relies on Hub for larger storage. All the recorded voice calls needs to be backed up (archived) from Hub Server itself. But unlike them Contact details are synced with Data Center again via MSMQ. I am not quite sure of the motivation in handling these two differently. Verint Portal is also deployed on Hub Server.

Data Center Servers are the ones that have entire Contact database available with them. They also have reporting tools, data warehouse, application database (scoring for instance), speech analytics etc. as part of their system. Data Center seems to handling everything apart from recorded calls which are archived at Hub level.

Food For Thought – Do you take your bugs to stretcher directly?

A critical bug comes to your support team. They try reproducing it and are unable to do so. Business guys get impatient. They escalate issue to the group President. You get a call at midnight from your boss. He tells that he is on a fire call with his boss and his boss’s boss. Your credibility is at stake.

You try understanding the error. Error turns out to be the ubiquitous one – “Object Reference not set to an instance of a Object”. You pull out the source code but don’t find any valid reason for the error. Debug builds are rolled out, PDBs are shipped, Logging is all over the place. A team member leaves for the site visit hoping to find something relevant. You start flipping through Release It, start browsing through Tess’s Blog entries – hoping to get some breakthrough. You start preparing your arsenal – WinDbg + SOS, Memory Profilers, Fiddler, Wireshark, CLR Profiler, etc. Somehow you want to get through this one, hoping it might result in a promotion. Suddenly a thought pops up in your mind – could this be because of missing Service Packs? Unfortunately, not all .NET Service Packs are as popular as .NET 3.5 SP1. You hit a bullseye. Production confirms they don’t have .NET 2.0 Service Pack 2 on their machine (.NET seems to have an innate trouble with handling circular references). Plans are chalked out, approvals are sought. Things start falling back to normalcy. Of course, the promotion you dreamed of never comes through :D .

This calls for an interesting analogy. When you visit a doctor he checks you with a stethoscope and doesn’t take you directly to OT. We as developers are technically motivated to do latter. We want to analyze every bug by taking dumps or using profilers. Alas, that would only benefit Airlines using which we do emergency travel.

(P.S. Framework detector is a good tool to troubleshoot such issues. Word – “You” is used here to create thrill and hide my infallible mindset :) ).

Follow

Get every new post delivered to your Inbox.

Join 80 other followers