Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Staying Highly Available using SAS® Grid Manager: The Performance Management Application at Commerzbank AG Thomas Braun and Miriam Schipper, Commerzbank AG, Frankfurt, Germany Cheryl Doninger, SAS Institute Inc., Cary, NC Jochen Kirsten, SAS Institute Inc., Heidelberg, Germany
PC-RB Business Management and Vertrieb Seattle April 2010
Staying Highly Available using SAS® Grid ManagerThe Performance Management Application at Commerzbank AG Seattle, April 13, 2010
3PC-RB Business Management and Vertrieb Seattle April 2010
Agenda
10PageCommerzbanks ”Performance Manager” as solution3.
Page
Page
Integrated sales performance management required
Commerzbank AG – key facts
2.
1.
6
2
4PC-RB Business Management and Vertrieb Seattle April 2010
Milestones of corporate history
1870: Commerz- and Disconto-Bank founded in Hamburg
1971: Transformation of New York representative office into a branch – being the first German bank to do so
1990: Opening of the first branch in east Germany following the reunification
1995: comdirect bank AG - Germany‘s leading online broker - established
2003: Increase of stake in BRE Bank, Poland, to more than 70 %
2004: Acquisition of the branch network of SchmidtBank (70 branches, 29 self service centres)
2005: Acquisition of Eurohypo making Commerzbank Germany‘s second largest bank
2008: No. 1 in Affluent Customers, market share approx. 15% (source: Source: FMDS 2008, TSN Infratest)
2009: Acquisition of Dresdner Bank – integration is well on track
Commerzbank headquarters in Frankfurt
5PC-RB Business Management and Vertrieb Seattle April 2010
Integration well on trackJoint management structure
Stable governance at Head Office
Joint marketing activities
Yellow gradually integrated
First joint products
Tangible integration for customers
Joint customer advisory council
Customers have a strong voice
Joint employee events
Cultural interaction
Legal merger
Merger on May 11, 2009
Committee negotiations concluded
Works Council agreement reached
Allianz Banking spun off
Allianz Bank independent since June
Call Centers merged
Commerz Direktservice GmbH
Consequent Divestments
First EU requirements met
Head offices merged
Employees in key functions
Branches merged from 2009
First joint branches
6PC-RB Business Management and Vertrieb Seattle April 2010
Commerzbank’s Strategic Position
Profitability Drivers
Strategic Goals
Leading retail bank in Germany with 11 million private customers:- Comprehensive nationwide branch network of 1,200 branches for
Commerzbank and Dresdner Bank altogether- No. 1 Retail Bank - No. 1 Online Broker- No. 1 Private Wealth Manager - No. 3 in Retail Credit
Sustainable profit generation and value added for investors by means of synergy effects:
- Optimized branch network - Stable revenue basis: focus on client base & high-end product mix as
well as benefit from strong sales partnership with Allianz Group- Further reduced cost base - lean headquarter organization and
efficient back office processes- Risk-return-orientation in loan business / credit portfolio management
Successful integration of Dresdner Bank to create the No. 1 bank for sophisticated private customers
Thereby above-average participation in long-term growth trends (e.g. demographics, development of savings ratio)
Private Customers
7PC-RB Business Management and Vertrieb Seattle April 2010
Agenda
10PageCommerzbanks ”Performance Manager” as solution3.
Page
Page
Integrated sales performance management required
Commerzbank AG – key facts
2.
1.
6
2
8PC-RB Business Management and Vertrieb Seattle April 2010
Branch network & customer management modelBranch network Commerzbank AG in Germany as of 2010/01/01
Private- & Business Customers1,695 Locations1)
18
173
1,504
regional branches
branches2)
main branches
Provision of identical sales performance information at all levels
Depiction of different branch types including “Branch of the Future”, “Branch of the Future Plus” and b&p advisory centers
Integration of Dresdner Bank branches in new distribution channels
Depiction of separate customer market segments
Consideration of different relationship management models (generalists & specialists)
Allocation of users based on special superior & agent-rules
Dynamic accommodation of changes to branch network – data reorganisation
Complexity added through need for:
1) Dresdner Bank branches incl. 2) advisory centres incl.
9PC-RB Business Management and Vertrieb Seattle April 2010
Integrated performance management of complete product offering
Complete and uniform
depiction of all sales management
relevant information
Depiction of the strategic product groupings
- Wealth management- Insurance- Investments- Credit & loan products- Payment instruments (incl. current accounts)
High flexibility allowing inclusion of new products
Depiction of both new- and existing business
Availability of revenue-, volume- und profitability information
High breath and depth of available information with simultaneous focus on Key Performance Indicators
Requirements
Goal
10PC-RB Business Management and Vertrieb Seattle April 2010
Immediate translation of information into performance management
Availability
Daily information: following day 8am
Weekly information: following Monday 8am
Monthly information: 2 working days after provision of raw data
Heterogeneous addressees Differentiated Performance
Management focus Complex rights
management-Functions -Level of Information
Processing
Performance
Users: soon >10,000 Peak processing periods Soon 4 terabytes SAN
storage Read- and write
capabilities 30,000 individual queries
processed every Monday
Intuitive usability Supportive analysis
process Depiction management-
process
Usability
11PC-RB Business Management and Vertrieb Seattle April 2010
Agenda
10PageCommerzbanks ”Performance Manager” as solution3.
Page
Page
Integrated sales performance management required
Commerzbank AG – key facts
2.
1.
6
2
12PC-RB Business Management and Vertrieb Seattle April 2010
Third stage of extension prepares for integration of Dresdner Bank
2007
2008
2009 / 2010
Rollout of Performance Manger as application for integrated sales performance management
Integrated presentation of new and existing business
Analysis of consultant type, region, consumer segment and ratios of customers to full-time staff possible
Processing time: 60 hours1)
SAS Business Intelligence Award 2007
Extension of existing published KPIs and creation of new ones
Implementation of daily investments sales report
Shift of Servers’ operating system from Windows to UNIX®; smooth transition due to SAS platform independence
Proof of Scalability: Implementation of Unix more than doubles performance
Change to ZFS file system (zone concept)
Consolidation of application server, aggregation server and SPD server into one SUN server unit
Reduction of processing time to 20 hours1)
New requirements with integration of Dresdner Bank: - Maintain same online performance
despite twice as many users- Keep processing time the same
despite twice as much data Build-up of data history: Flexibility of
SAS data model allows processing of Dresdner Bank data
Innovative and scalable Architecture: - Change to QFS file system, which
allows independent data access from multiple servers
- Independent process optimization and control by QFS
- Load balancing through SAS® Grid Manager and BIG IP
- Parallelization of processing Further reduction of processing time
to 7 hours1) Processing time simulated on current data volume
13PC-RB Business Management and Vertrieb Seattle April 2010
Reporting in ”Performance Manager”
Standard Reporting
Emphasis
AdvancedAnalysis Options
DailySales Support
WeeklyActivities
MonthlyRevenues
Sales support- Investments
High-level reports- Sales performance (weekly)- Activities- Appointments
Detail Reports- Product details & drivers
Ranking- Overview branch network
High-level reports- Sales performance (monthly)- Asset-levels & customer numbers- Revenue
Detail Reports- Product details & drivers
Ranking- Overview branch network
Basic reports- High breadth and depth- Time series analysis
Activity management Sales performance management
Revenue management
Management-commentary
Management-commentary
Deal overview- Itemization of weekly sales
performance for consultants
14PC-RB Business Management and Vertrieb Seattle April 2010
Overview of the new SAS-platform
Architectural principles
Asynchronous mirrored design in two locations
– Disaster management
– Guaranteed availability
Layered model with explicit separation of functions
– Efficient maintenance– Simple expansion and
upgrading
Zone concept
– In event of failure automatic switch to another function
– Maintenance on ”live“ system possible
QFS
– Regulates server access to data
– Multiple servers can operate at the same time in the database
SAS® Grid Manager with 4 SPD Servers
– Optimizes parallel processing – Improved I/O performance
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Grid ClientGrid Client
SAS® Metadata ServerSAS® Metadata Server
SAS® Management ConsoleGrid Manager and Schedule Manager
SAS® Management ConsoleGrid Manager and Schedule Manager
SAS ProgramSAS Program
Grid ControlServer
Grid ControlServer
Base SAS SAS CONNECT®
SAS Workspace Server
SAS Grid Server SAS Data Step
Batch Server SAS SPD Server
Base SAS SAS CONNECT®
SAS Workspace Server
SAS Grid Server SAS Data Step
Batch Server SAS SPD Server
Platform Process MgrTMPlatform Process MgrTM
Platform LSFPlatform LSF
PlatformTM Grid Management Service
PlatformTM Grid Management Service
Grid Node 1Grid Node 1
Base SAS SAS CONNECT®
SAS Grid Server SAS Data Step
Batch Server SAS SPD Server
Base SAS SAS CONNECT®
SAS Grid Server SAS Data Step
Batch Server SAS SPD Server
Platform LSFPlatform LSF
Grid Node nGrid Node n
Base SAS SAS CONNECT®
SAS Grid Server SAS Data Step
Batch Server SAS SPD Server
Base SAS SAS CONNECT®
SAS Grid Server SAS Data Step
Batch Server SAS SPD Server
Platform LSFPlatform LSF
SAS® Data Integration Studio SAS® Enterprise
Miner SAS® Enterprise
GuideOther SASClients
Central File Server for: Job Deployment Directories Source and Target Data SAS Executables
PlatformTM LSFPlatformTM LSF
SAS Grid Computing Architecture
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Candidates for High Availability
SAS Metadata Server
SAS Object Spawner
SAS OLAP Server
SAS/Share Server
Platform Process Manager
Platform Grid Management Service
Web application tier components
Any other critical services including 3rd party (JBOSS)
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Controlling Grid Resources With Queues
LSF queue: a grid-wide holding place for jobs
Implementation of job scheduling/control policies
Various policies can be defined on queues:• priority and preemption
• job slots and slot pools
• dispatch and run windows
• hosts and host groups
• users and user groups
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
PROC SCAPROC;
RECORD ‘record.txt‘
GRID
‘GridCount.txt‘ ;
Run;
SAS Job
STEP 1
STEP 2
STEP 3
STEP 4
SAS Job
Instrumented for
Execution on the grid
PC 1
STEP 1
PC 2
STEP 2
STEP 4
PC 3
STEP 3
Grid-Enabling Legacy SAS CodeUsing the SAS Code Analyzer
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Grid-Enabling Legacy SAS CodeWrapping the legacy source code using SCAPROC
proc scaproc; record "c:\temp\comments_out.txt" /* Code Analyzer comments */ grid "c:\temp\grid_out.txt" /* Grid exploiting code */ resource "SASApp"; /* SAS server*/
run;
proc summary data=wk_data.a; var x; output out=new1 mean=mx; run;
proc summary data=wk_data.a; var y; output out=new2 mean=my; run;
proc scaproc; write; run; /* Closes the results files */
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Grid-Enabling Legacy SAS CodeInitializing the grid infrastructure and signon
/*---------------------------------------------------------------------------*/ /* There are 2 tasks in this job. */ /* 2 of these tasks can be RSUBMITed. */ /* These 2 tasks used 15 units of time. */ /* The longest task took 15 units of time, 100% of total time. */ /*---------------------------------------------------------------------------*/ %let SCAGRID_SESSIONS=2; /*---------------------------------------------------------------------------*/ /* Enable grid service */ /*---------------------------------------------------------------------------*/ %let rc=%sysfunc(grdsvc_enable(_all_, resource=SASApp)); /*---------------------------------------------------------------------------*/ /* This macro starts up the connect sessions */ /*---------------------------------------------------------------------------*/ %macro scagrid_sessions(count); %do i = 1 %to &count; signon sess&i connectwait=no; %put Session started on grid node %sysfunc(grdsvc_getname(sess&i)); %end; %mend scagrid_sessions; /*---------------------------------------------------------------------------*/ /* Start up our connect sessions. */ /*---------------------------------------------------------------------------*/ %scagrid_sessions(&SCAGRID_SESSIONS);
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Grid-Enabling Legacy SAS CodeExecuting the tasks
/*---------------------------------------------------------------------------*/ /* TASK 1 run in rsubmit */ /*---------------------------------------------------------------------------*/ /* I/O Activity */ /*---------------------------------------------------------------------------*/ /* DATASET OUTPUT SEQ created in task 1 WORK.NEW1.DATA */ /*---------------------------------------------------------------------------*/ /* Symbol activity */ /*---------------------------------------------------------------------------*/ /* SYMBOL GET task: 0 used by subsequent task:no Name:SYS_IOUSEEE */ /*---------------------------------------------------------------------------*/ /* ELAPSED 0 */ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* Get an available session with the scagrid_gs function */ /*---------------------------------------------------------------------------*/ proc scaproc; getsession 1 "sess"; run; %put sess=&sess; /*---------------------------------------------------------------------------*/ /* rsubmit for task 1 */ /*---------------------------------------------------------------------------*/ rsubmit &sess sysrputsync=yes cmacvar=scagrid_task_1; proc summary data=wk_data.a; var x; output out=new1 mean=mx; run; endrsubmit;
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Grid-Enabling Legacy SAS CodeSigning off
/*---------------------------------------------------------------------------*/ /* This macro issues waitfors and signoffs for our sessions. */ /*---------------------------------------------------------------------------*/ %macro scagrid_waitfors(count); %do i = 1 %to &count; waitfor sess&i; signoff sess&i; %end; %mend scagrid_waitfors; /*---------------------------------------------------------------------------*/ /* Wait for and sign off all sessions. */ /*---------------------------------------------------------------------------*/ %scagrid_waitfors(&SCAGRID_SESSIONS); /*---------------------------------------------------------------------------*/ /* Termination for our SCAGRID functions. */ /*---------------------------------------------------------------------------*/ proc scaproc; shutdown; run; /*---------------------------------------------------------------------------*/ /* All done. */ /*---------------------------------------------------------------------------*/
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
SAS Command-Line Grid Submission Utility
Standalone utility
User can submit and forget (no need to remain connected to process job)
User can view job status and output while job is running
Can kill submitted jobs
Allows for SAS checkpoint/restart capability
Uses SAS Grid Manager metadata for centralized control
Requires shared file system between client and grid
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
SAS stores Job information• Last execution of DATA and PROC
steps
• Checkpoint catalog
When a Job is terminates prematurely
• Start in Restart mode
• SAS reads checkpoint catalog
• Starts where the last successful step ended
• WORK tables can be stored and reused
• Globale statements and macro’s will be reexecuted
DATA step
DATA step
PROC step
DATA step
PROC step
PROC step
DATA step
Xxxxxxxxx
Xxxxxxxxx
Xxxxxxxxx
xxxxxxxxx
Checkpoint Library
SAS Checkpoint/Restart Capability
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Data Storage is Key
Shared file system
Throughput across the grid• 30-50 MB/sec/core (~1.8 – 3GB/sec with 64 cores)
Scalable• Handle increasing load gracefully
• Readily enlargeable as data volumes grow
Locality of data• input/output files
• temporary files
• external data access
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
SPD Server Grid Deployment
Multiple SMP hosts, one name and data server each
Shared access to data on SAN
+ Client access can scale across multiple hosts
+ Shared read access to same tables
+ Shared write access to disparate tables
+ Highly available and transparent to client
+ Grid routes data acess requests transparently to the least used node
- More complex to deploy
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
SPD Server Grid Deployment
What can be shared• Server executables (binaries)
− Benefit grows as number of grid nodes grows
− Single location for version/patch mgmt
• Data domains
• User database
• Data domains definition file
• Server parameter definition file (unless different parms are required per node)
What cannot be shared• Log and audit files
• Startup scripts
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Clustered Table
Jan 2003
New Months
Feb 2003 Apr 2003
Jul 2003 Aug 2003
Mar 2003
May 2003 Jun 2003
Sep 2003 Oct 2003 Dec 2003 Nov 2003
Jan 2004 Feb 2004 Apr 2004
Jul 2004 Aug 2004
Mar 2004
May 2004 Jun 2004
Sep 2004 Oct 2004 Dec 2004 Nov 2004
Jan 2005
Feb 2005
Mar 2005
Apr 2005
May 2005
Jun 2005
SPD Server Cluster TableParallel On-the-Side Loading
ETL1
ETL2
ETL3
ETL4
ETL5
ETL6
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Original Clustered Table
Jan 2003 Feb 2003 Apr 2003
Jul 2003 Aug 2003
Mar 2003
May 2003 Jun 2003
Sep 2003 Oct 2003 Dec 2003 Nov 2003
Jan 2004 Feb 2004 Apr 2004
Jul 2004 Aug 2004
Mar 2004
May 2004 Jun 2004
Sep 2004 Oct 2004 Dec 2004 Nov 2004
New Months
Jan 2005
Feb 2005
Mar 2005
Snap-in
Apr 2005
May 2005
Jun 2005
SPD Server Cluster TableSnap in New Data in Seconds
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Cluster Table Loading Scalability
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Cluster_Year
Cluster Table Reading
Table_Q1
Jan
...
Mar
Jan
...
Mar
Jan
...
Mar
Table_Q4
Oct
...
Dec
Oct
...
Dec
Oct
...
Dec
Table_Q2
Apr
...
Jun
Apr
...
Jun
Apr
...
Jun
Table_Q3
Jul
...
Sep
Jul
...
Sep
Jul
...
Sep
x
x xselect ...
where date in(‚Apr‘,
‚May‘, ‚Jun‘);
…
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
As a Result ...
Number of member tables hit by query
Run time
Dynamic cluster table
Regular partitioned table
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Materialized Views
Technically a temporary table
Materializes at view creation time
Speeds up view access drastically
Re-computes on next access when underlying data changes
Best for multi-user queries with N-way joins
Solid state disk placement being researched
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Data Compression
At libname assignment or data set level(COMPRESS=YES)
Run-length encoding (RLE) algorithm
Compression rate data-dependent(best for character variables)
Disk footprint and I/O bandwidth
Needs additional CPU-cycles both ways
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
• SAS Grid Manager
•SAS SPD Server (grid deployment )
Challenges Solution Results
Customer SuccessCommerzbank AG
- Doubling of data volume due to merger- Same or better execution times- Terabytes of data - 1000s of users- 10000s queries/reports- Separate IT centers for disaster recovery
- SAS/Connect (MP Connect)- SAS Batch jobs (ETL)- SAS SPD Server (standard deployment)
Commodity hardware high performancescalable, resilient, dynamic management of grid infrastructure
SAS/Grid4 Opteron-based grid nodes(4 quad-core CPUs each)4 TB Disk Storage in SAN(mirrored at remote IT center)
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
• SAS Grid Manager
Challenges Solution Results
Customer SuccessFinancial Industry
Saturated SAS environment had to be addressed
SMP Server36 Dual Core CPUs144 GB RAM<Disk storage extra><Internal bus connectivity>$2.4 Million
Commodity hardware high performancescalable, resilient
SAS/Grid36 Dual Core CPUs144 GB RAM7 TB SAS Work Disk StorageInfiniband Connectivity$212,000
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
• SAS Grid Manager
• SAS SPD Server
Challenges Solution Results
Customer SuccessBanking Industry
• High performance processing
• at the data layer• at the compute layer
• Scoring Jobs • 10% of data in 8
hours
• Scoring Jobs• 100% of data in 2
hours and 30 minutes
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Copyright © 2010, SAS Institute Inc. All rights reserved. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
Jochen KirstenSAS Institute Inc.Heidelberg, Germany
Email: [email protected]