Bank of America Quartz Worldmap Infrastructure Monitoring
Total Page:16
File Type:pdf, Size:1020Kb
Bank of America Quartz WorldMap Infrastructure Monitoring A Major Qualifying Project submitted to the Faculty of the WORCESTER POLYTECHNIC INSTITUTE in partial fulfillment of the requirements for the Degree of Bachelor of Science by Jun Liang Zhaokun Xue October 14, 2013 Approved Professor Micha Hofri Major Advisor 1 Abstract Bank of America’s Quartz platform, which is used for developing all internal applications by the company, is made up of over 600 application and database servers deployed in over 25 data centers globally. There are many variables that can contribute to issues in the environment for example CPU/memory consumption, disk space, network latency, replication latency, etc. Our team was responsible for building a web based interactive world map, named “Quartz WorldMap Infrastructure Monitoring”, which could graphically show the environment and alert when key performance thresholds are breached. In this project, our team kept focused on building a reliable back-end server and designing a user- friendly front-end client. Our team built two back-end services to poll data from databases in real time, and used modern jQuery open source libraries to construct functionalities and user interface of the front- end. We proposed and implemented the well-tested two-way data binding method to automatically synchronize data between databases and front-end display. 2 Acknowledgments From Bank of America, we would like to acknowledge the guidance of Brian Petix, Marquis Rahman and Michael Covington. From Worcester Polytechnic Institute, we would like to thank our advisors Arthur Gerstenfeld and Micha Hofri for their help throughout the process of the project. 3 Executive Summary After the merger with Merrill Lynch, Bank of America has become the largest financial institution in the world. With a global workforce in more than 40 countries, Bank of America is all about providing people, companies and institutional investors the financial products and services they need to help achieve their goals at every stage of their financial lives. Our team worked on the bank’s Global Markets Technology Team which provides end-to-end technology solutions and operations support for the Global Markets businesses. In addition, the team is also responsible for establishing an Architecture and Strategy framework for consistency across the Global Markets platforms. After years working of the team, Bank of America Merrill Lynch Global Markets built up the next generation, cross-asset technology platform, Quartz. The Quartz platform is made up of over 600 application and database servers deployed in over 25 data centers globally. There are many variables that can contribute to issues in the environment for example CPU/memory consumption, disk space, network latency, replication latency, etc. In order to keep tracking these variables, we are responsible for building a web based interactive world map that would graphically show the environment and alert when key performance thresholds are breached. After interviewing with the bank’s Quartz Develop Team members, Marquis Rahman in Chicago and Michael Covington in Houston, specifically, we have decided on the objective of building a web based monitoring application to provide the ability for users tracking, searching and making comments on alerts reported by each data center. So far, on the Quartz Platform, web based monitoring applications just start at the very beginning. This project could help the Quartz Develop Team to fill this gap on the Quartz Platform. In order to achieve this objective, we divided the application into two parts, back-end programming and front-end design. For the application’s back-end server (more details in section 3.1.1 and section 4.1.1), we wrote all the code in Python on the company’s Quartz platform. 4 First, to get alerts reported by 25 data centers, our team built a service called “Valkyrie Alert Service” which is used to retrieve alerts from Valkyrie Server by calling the Valkyrie API. Valkyrie Server is an alert message center that collects all the issues from Bank of America internal services. In order to get the latest alerts in real-time, our team set the “Valkyrie Alert Service” call the Valkyrie API every 5 seconds. After polling data from Valkyrie, the service publishes data into the AMPS server “alerts_in_valkyrie” topic. Second, we do not only just want get details of alerts, but we also want to combine more information of the corresponding data center like, line of business (LOB), region, organization, etc. Therefore, our team built the “Alert Engine and Decorator”. This service polls additional information of data centers from the Hardware Diagram Caches, then combines them with new alerts from the “alerts_in_valkyrie” topic, and publishes alerts to the “reported_alerts” topic. As for the front-end part (more details in section 3.1.2 and 4.1.2), we built it in JavaScript, HTML code and Flask pattern. First, for the major part--the map, after online search and testing the source given by our managers, we recommended to use an external open source called JVectorMap JQuery Plugin which not only supports all the features required for our project, but is easy to implement. On the map, we use 25 markers to represent the locations of the 25 data centers globally. Red markers stand for data centers having alerts reported; green markers stand for data centers without alerts. Hovering with a mouse over markers, a label above the marker will show the data center’s name and the number of alerts that have been reported in this data center so far. To synchronize the number of alerts in the data center in real time, we recommended using JSON and Two-Way Data Binding methods. By using JSON and Two-Way Data Binding, we could just update part of the page without refreshing the whole page. Second, clicking on one of the red markers, a grid will show the details of alerts below the map. For the gird, we recommended building it on the PQgrid JQuery open library. For each of the alerts shown in the grid, users have the ability to disable it for a given period of time. Users also have the choices to view all the alerts collected in the database and all the disabled alerts. On the disabled grid, 5 users can reactivate disabled alerts. Disabled alerts could also be automatically reactivated after the disabling period expires For the page layout (more details in section 4.2), above the map, we display a set of world clocks and user login information. On the right side of the map, a scrolling panel shows the latest five PAPA tickets. The PAPA ticket is another error tracking tool used by the bank. Below the map, we use a scrolling bar to show all the news about alerts in real time. Below the news bar, a filter panel provides the feature to do multi-selection search for alerts based on specific properties of data centers and alerts. In addition, user could also do the historical search by giving a period of time. Our creation of a new alerts monitoring tool was aimed to give the Quartz Develop Team at Bank of America the ability to track and make comments on alerts reported by each data center. In this way, the Quartz Develop Team was given the means by which they can keep records of alerts reported by each data center. 6 Table of Contents Abstract ......................................................................................................................................................... 2 Acknowledgments ......................................................................................................................................... 3 Executive Summary ...................................................................................................................................... 4 Chapter 1 Introduction ................................................................................................................................ 10 Chapter 2 Background ................................................................................................................................ 11 2.1 Sponsor Description .......................................................................................................................... 11 2.1.1 Global Research of Bank of America Merrill Lynch ................................................................. 11 2.1.2 Global Markets Technology Team in Bank of America ............................................................ 12 2.2 Quartz Development Platform .......................................................................................................... 12 2.2.1 Introduction to Quartz Platform ................................................................................................. 12 2.2.2 Sandra and AMPS ...................................................................................................................... 13 2.2.3 QZDevelop ................................................................................................................................. 13 2.2.4 QSP – Web Apps on Quartz ...................................................................................................... 13 2.3 Programming Languages .................................................................................................................. 14 2.3.1 Python ........................................................................................................................................ 14 2.3.2 JavaScript ..................................................................................................................................