Thursday, April 29, 2010

Not A Bad Year Afterall

Its easy as busy as we stay during a year to feel overwhelmed and think that you aren't accomplishing as much as you would like to. In preparation for my Annual Review I had to prepare and Accomplishments document to present to my manager. Preparing the document made me feel better ... it hasn't been a bad year after all :) Read below to see into a year of my professional life:

Accomplishments --


As a Systems Architect

Created the Software Architecture, Data Architecture, and Infrastructure Architecture to enable the TeleVox Notifications Platform to progress toward the goal to support 10X growth while upgrading to a new overall Platform Architecture utilizing new technologies and hardware to ensure Customer Trust in our ability to deliver their notifications and never miss a call (currently over 5 million distinct notification per week and growing). Championed and led strategic initiatives centered on platform reliability and scale, capacity and port expansion, business intelligence, enterprise application integration, business process improvement, customer data centralization, and Notifications Platform enhancement to support growth and position the company for agility in the future.

Software Architecture

Service Oriented Architecture

Designed an architecture to expose WCF and Web Services through a load balanced Services Tier to enable service composition to define business processes. The Services Tier exposes business functionality to processes and applications through a reusable component library that is maintained and versioned centrally within servers in the farm. The goal of this is to speed the development and deployment of future development initiatives through reuse and will help prevent component versioning issues across multiple tiers and servers within our enterprise.

This architecture also integrates WCF and Web Services with Microsoft UDDI 3.0 to enable service virtualization. Service Virtualization will allow us to maintain service configuration information in a central repository that is discoverable at runtime instead of being hard coded in multiple app.config and web.config files scattered throughout the enterprise.

Enterprise Service Bus

Designed an Architectural approach to utilize BizTalk 2009 and Microsoft ESB ToolKit 2.0 to enable BizTalk 2009 to serve as an Enterprise Service Bus that is at the core of our emerging redesigned Notifications Platform. Utilizing BizTalk in a middleware bus architecture will enable cross process data visibility and enrichment and will enable a development model where subsystems and services can be connected to the bus’s data flow in a decoupled asynchronous manner. The bus’s itinerary based messaging allows for the composition of multiple processes and services into a business or process workflow that can be modified based on changing business requirements at the message routing level dynamically. Also, the Pub/Sub architecture behind BizTalk will allow the company to develop solutions based on Event Driven Architectures and remove the multitude of  legacy heavy polling based applications that we have written to try and chain business processes across multiple tasks, executables, and servers.

Designed and specified the requirements for a two node BizTalk Cluster to enable both HTTP load balancing and host clustering to enable high availability and failover. I have developed near term and future looking designs to horizontally scale the current two node ESB to support near and long term projected growth.

Designed and specified requirements for three SQL 2008 database clusters to support the BizTalk OLTP and DSS/OLAP databases in a high availability manner.

Data Architecture

Physical Data Architecture

Cluster Design

Specified the Architecture, design and requirements for three new Windows 2008/ SQL 2008 64-Bit Clusters to support anticipated and ongoing Notifications Platform reliability and performance needs. These new SQL Clusters are dedicated to supporting OLTP, DSS/Reporting, and OLAP respectively. The new SQL Clusters will enable us to migrate high transactional, decision support, and reporting related tables from our web site supporting customer/product databases to a more appropriate cluster and will increase the responsiveness of Product Websites.

Storage Recommendations and Requirements (SAN)

Specified LUN Size, Data and Transaction File location, and RAID Levels for the new databases being deployed in the VXML Project. I worked with our DBA to ensure the accuracy of these upfront requirements and to share the vision for the ongoing Data Architecture so that upcoming storage requirements could be anticipated and delivered.

Logical Data Architecture

Database segmentation across functionality types (OLTP, DSS, OLAP)

Began the implementation of a strategy to move away from the current monolithic SQL Server design that places databases with different user targets and transactional focus on the same physical database cluster. The ongoing Data Architecture will organize databases according to type within separate physical database clusters (Transactional, Decision Support, Report, and Business Intelligence). This segmentation by type will allow specific database types and database hardware and clusters to be tuned for maximum performance and will provide the hardware infrastructure to support growing capacity and enable horizontal scalability across cluster nodes. Segmenting the databases across purpose specific clusters will also allow for a better security model ensuring that PHI and private information can be stored and accessed securely.

Business Intelligence Strategy

Began the implementation of a BI strategy that will leverage BizTalk’s Business Activity Monitoring subsystem to enable OLAP Data warehouse enrichment based on in flight messages moving through our ESB. OLAP based storage of data flowing through our business processes will enrich the Company’s ability to make educated decisions on platform and customer trends and will allow the systems within the Platform to make intelligent runtime decisions during processing.

Data Centralization Strategy

Customer Key Synchronization

Worked across departments to design a strategy to centralize our customer data across physical data boundries. The Customer Key Synchronization project deliverable allows us to identify our customers across both product and backend systems (CRM, ERP, Accounting, and Billing) based on a matrix of key information that links the customer’s identity across the disparate platforms. This common SQL structure and Services model will allow for data synchronization and customer visibility into data events and business processes that occur from the creation of the customer in our CRM to the accounting and billing process. This ability to understand who our customer is across platforms will feed improvement initiatives around implementation, support, reporting, business analysis, and business intelligence.

Customer Profile Data Store

Designed the data architecture for a Common Customer data store that will centralize the Customer Profile and Preference data at a higher level of abstraction than the current siloed domain data structures within our Products and Backend Systems. Taking this level of abstraction will position us to enable future business intelligence, reporting, and cross datacenter notifications processing initiatives.

Infrastructure Architecture

Designed the Infrastructure Architecture and defined specifications to support several new Platform Tiers. I specified the hardware, networking, configuration and storage requirements to deliver a load balanced Services Tier, a Clustered BizTalk based Middleware Tier, and three new database clusters.

Enterprise Application Integration Strategy (EAI)

Backend and LOB Systems Integration

Developed a strategy for linking our backend systems (CRM, ERP, and Billing) so that business events and processes can trigger data synchronization that can flow in a circular fashion between the systems. This will be accomplished using BizTalk in a Hub and Spoke Architecture to connect the systems and provide a data gateway between the various data stores to allow critical customer data to remain identical between the disparate systems.

Service Virtualization Strategy
Integrated UDDI 3.0 to enable runtime discovery of WCF and ASMX Service URI and service metadata. Utilizing the UDDI 3.0 platform enable our company to remove the reliance on application configuration files for storing this information and allowed our applications and processes to discover the information needed to interact with our services library dynamically. This allows for portability for our services and multiple service reconfiguration based on runtime discovery.

As a Lead Developer/Team Lead

Lead the Platform design and development efforts for the HouseCalls Redesign VXML Project. Mentored team members in Service Oriented design, Object Oriented design, use of Design Patterns, Best Practices for coding and naming conventions, and alignment with the overall Platform Architecture goals.

BizTalk Development

Designed and developed many of the core BizTalk Orchestrations that are involved in the VXML Calling process. Mentored other team members in the development of other orchestrations. Designed the physical architecture for high availability deployment of BizTalk applications.

Core Services Development

Continued development of the Core Services that manage our frameworks and expose enterprise resources through managed best practices based implementation.

Core Components Development

Continued development of the Core Components that manage our frameworks and expose enterprise resources through managed best practices based implementation.

Logging Framework

Expanded the Logging Framework that I developed for the Project Genesis deployment to support asynchronous communications through MSMQ with the Logging Database.

Configuration Framework

Designed and developed a Configuration Framework composed of WCF Services, .Net Component libraries, and a new Database to allow for application and process configuration to be stored a managed centrally in a database. This framework removes the need to update configuration files across multiple services and servers when a configuration value needs to be added, removed, or modified.

As a Systems/Infrastructure resource

Production and PreProd Infrastructure deployment and configuration for VXML Project

Worked independently and with Service Delivery and EIT to build out the hardware infrastructure in the Pre Prod and Production environments to support the VXML Project. I configured VMWare virtual machines, Windows 2008 clusters, administered databases, created Active Directory OU Structures, accounts and groups, created DNS entries for services, and configured Operating System and Server Roles. I also defined the overall Architecture, configuration, and security model for these environments to reliably support the VXML Integration Project application deployment.

Tuesday, April 27, 2010

ESB Toolkit 2.0 Multi-Server Installation Part 1 - Installing Microsoft UDDI 3.0 Services

Overview

In our environment we needed to load balance our UDDI Web Interface across a server farm. Outlined below are the steps that we needed to take to configure UDDI for both our Web Farm (Services Tier) and Database Servers.

Physical View Diagram






All service tier server operating systems are configured identically with Windows Server 2008 Standard.Detailed requirements and steps are listed below.

 

Install UDDI 3.0 on Database cluster nodes

Install UDDI 3.0 on database cluster nodes
Install on all cluster nodes supporting the UDDI3 database named instance
Run setup
From the BizTalk 2009 Media
Select Install Microsoft UDDI Services on this computer
Select the following components

--> Database Component


Validate successful installation






Do NOT launch Microsoft UDDI services configuration at this time.
Install UDDI Patch KB975684


Validate successful installation

Configure UDDI 3.0 on primary database cluster node

Configure UDDI 3.0 on primary database cluster node
Perform this step on the primary node hosting the named instance that will support the UDDI database.


Select UDDI Services Configuration
Select Custom configuration






Enter database\instance information


Enter service account and password information






Select Configure
Select Enable UDDI Services Database Component






Select the instance hosting the UDDI3 database from SQL Server Instance drop-down






Select Database Data Files Location


Select Database Log Files Location






Uncheck Require SSL for publication to this UDDI Services site






Select Apply Configuration






Validate successful configuration

Configure UDDI 3.0 on passive database cluster nodes

Configure UDDI 3.0 on passive database cluster nodes
Perform this step on the passive nodes hosting the named instance that will support the UDDI database.



Select UDDI Services Configuration
Select Custom configuration






Enter database\instance information


Enter service account and password information






Select Configure
Select Enable UDDI Services Database Component






Select the instance hosting the UDDI3 database from the SQL Server Instance drop-down






Select Apply Configuration






Validate successful configuration







NOTE: After selecting the named instance supporting the previously configured UDDI database, the file locations do not get updated.  This does not appear to cause an issue and does not create the folder structure listed.

Configure DNS on domain controller

Configure DNS on domain controller

Create DNS Host (A) record for UDDI FQDN.This will eventually point at the F5 VIP

OS configuration on services tier

OS configuration on services tier

Ensure all operating system patches have been applied
All services tier servers


Perform this before and after installation to ensure new components added during the installation process get patched appropriately

Install IIS

Install IIS 7
All services tier servers
Select Add Roles from Server Manager
Select Web Server (IIS)
Select Add Required Features
Add the following Role Services:



  • ASP.NET

  • Basic Authentication

  • Windows Authentication

  • IIS 6 Management Compatibility


Accept the Add Required Role Services dialog






Validate successful installation






Install Application Server Role

Install Application Server
All services tier servers
Select Add Roles from Server Manager
Select Application Server
Add the following Role Services:


Windows Process Activation Service Support


Accept the Add Required Role Services dialog


This will automatically add


HTTP Activation


Message Queuing Activation


TCP Activation


Named Pipes Activation






Add


Incoming Remote Transactions


Outgoing Remote Transactions


Validate successful installation


Install Prerequisite

Install Prerequisite
All services tier servers
Download and install the Microsoft Visual C++ 2008 SP1 Redistributable Package for x64

Install UDDI 3.0 on services tier

Install UDDI 3.0 on services tier
All services tier servers
Run setup
From the BizTalk 2009 Installation Media
Select Install Microsoft UDDI Services on this computer
Select the following components


Administration Tools


Web Application






Validate successful installation






Do NOT launch Microsoft UDDI services configuration at this time.




Install UDDI Patch KB975684


Validate successful installation

Configure UDDI 3.0 on services tier

Configure UDDI 3.0 on services tier
Configuration steps for the first services tier computer differs from configuration steps required for the remaining services tier servers

Configure UDDI 3.0 on first services tier servers

Configure UDDI 3.0 on first services tier servers
First services tier servers
Select UDDI Services Configuration on first services tier node
Select Custom configuration






Enter database\instance information


Enter service account and password information






Select Configure
Select Enable UDDI Services Web Application






Ensure UDDI database is correct


Ensure Web application account is correct






Select Self-register this site’s services in the UDDI registry and Active Directory






Select Apply Configuration






Validate successful configuration






This will add the web application account into the database security users for UDDI3 database

Configure UDDI 3.0 on remaining services tier nodes

Configure UDDI 3.0 on remaining services tier nodes
Remaining services tier servers
Select UDDI Services Configuration on remaining services tier nodes
Select Custom configuration






Enter database\instance information


Enter service account and password information






Select Configure
Select Enable UDDI Services Web Application






Notice informational warning.






Self-registration should only be performed on the first services tier server, not subsequent servers
Validate informational warning matches description to the right
Unselect Self-register this site’s services in the UDDI registry and Active Directory






Select Apply Configuration






Validate successful configuration

Validate UDDI 3.0 on services tier

Validate UDDI 3.0 on services tier

Run UDDI Services Console
Validate the service tier servers are listed under the UDDI console
Ensure services tier servers respond to web requests to the UDDI site



 

Friday, April 23, 2010

The Role of the Enterprise Service Bus

I ran across a good architectural overview of where an ESB fits into a Service Oriented Architecture.  Check it out here: http://www.infoq.com/presentations/Enterprise-Service-Bus