CGI

C#/C++ Developer (Real Time)

Montréal, Québec•Full-time
CA$85,000 - CA$110,000 annually
About the Job
C++ / C# Developer

IT GMD Pricing Services Core is responsible for providing highly critical pricing and risk calculation facilities to a wide range of consumers within the bank ranging from the Front Office to a Regulatory Risk. Business users such as the risk quantitative analysts, FO and risk managers regularly interact with us to drive development.

The sheer volume of daily data means we must consider innovative solutions to allow our compute and data storage capabilities to scale with the demands of increasing trade populations and regulatory-driven business requirements. Our tech stack is predominantly distributed .NET services, with relational and distributed databases, as well as a caching layer utilizing Couchbase.

Our calculations are being transitioned from IBM Symphony grid Manager to a new open-source grid Manager compatible with Cloud: ArmoniK.
The real time framework (Streaming / Contribution / flows / pre trade), for low latency constraints, is mainly implemented in C++.

Currently, we are investigating and actively implementing solutions involving burst into cloud and cloud-native services.

We are looking for highly skilled individuals to help implement, extend and support our computing middleware systems including the review of the real time framework, grid and cloud oriented components and contribute to the project roadmap and architectural governance.

Requirements Mandatory:
  • Developing services using C++/ C#/.Net Core.
  • Proven aptitude for design, producing, and tuning code.
  • Skills in parallel algorithms for multi-core architectures.
  • Strong knowledge of real-time software development in C++, ideally in electronic markets.
  • Proven experience in profiling, monitoring, optimization and production support in real-time distributed systems.
  • Clear understanding of multithreaded systems.
  • Autonomy. Excellent communication skills.
  • Interest in latest technologies and software development practices.
  • Basic experience in pricing and market making are desirable.

Desirable Requirements:
  • Static, dynamic and web analysis tools (e.g. CheckMarx, SonarQube, OWASP Zap, Clair Container).
  • Serverless architecture and cloud agnostic tools.
  • GitLab, JIRA, and lifecycle/continuous integration tools (Jenkins, Artifactory, Ansible).
  • Stream processing tools (Kafka, Spark).
  • Performance analysis, instrumentation and visualization tools (Prometheus, Grafana, Kiali).
  • Managing Linux servers\VMs.
  • Deploying and managing Kubernetes clusters.

Développeur C++ / C#

IT GMD Pricing Services Core est responsable de la fourniture de fonctionnalités hautement critiques de calcul des prix et des risques à un large éventail d'utilisateurs au sein de la banque, allant du Front Office aux équipes de risque réglementaire. Les utilisateurs métier, tels que les analystes quantitatifs en gestion des risques ainsi que les responsables du Front Office et des risques, interagissent régulièrement avec nous afin de piloter les développements.

Le volume considérable de données quotidiennes nous impose d'envisager des solutions innovantes permettant à nos capacités de calcul et de stockage des données d'évoluer en fonction de l'augmentation du nombre de transactions et des exigences métier liées à la réglementation. Notre environnement technologique repose principalement sur des services .NET distribués, des bases de données relationnelles et distribuées, ainsi qu'une couche de mise en cache utilisant Couchbase.

Nos calculs sont en cours de migration du gestionnaire de grille IBM Symphony vers un nouveau gestionnaire de grille open source compatible avec le cloud : ArmoniK.

Le framework temps réel — streaming, contributions, flux et pré-trade — est principalement développé en C++ afin de répondre aux contraintes de faible latence.

Nous étudions et mettons actuellement en œuvre des solutions impliquant une capacité de montée en charge ponctuelle dans le cloud ainsi que des services cloud natifs.

Nous recherchons des profils hautement qualifiés pour contribuer à l'implémentation, à l'évolution et au support de nos systèmes de middleware de calcul, notamment à la revue du framework temps réel et des composants orientés grille et cloud, ainsi qu'à la feuille de route du projet et à la gouvernance de l'architecture.

Exigences obligatoires :
  • Développement de services en C++ / C# / .NET Core.
  • Aptitude démontrée à concevoir, produire et optimiser du code.
  • Compétences en algorithmes parallèles pour architectures multicœurs.
  • Solide connaissance du développement de logiciels temps réel en C++, idéalement dans le domaine des marchés électroniques.
  • Expérience confirmée en profilage, supervision, optimisation et support de production de systèmes distribués temps réel.
  • Bonne compréhension des systèmes multithread.
  • Autonomie et excellentes compétences en communication.
  • Intérêt pour les technologies récentes et les bonnes pratiques de développement logiciel.
  • Une première expérience en pricing et en market making serait un atout.

Exigences souhaitables :
  • Outils d'analyse statique, dynamique et web, par exemple Checkmarx, SonarQube, OWASP ZAP et Clair Container.
  • Architecture serverless et outils indépendants du cloud.
  • GitLab, JIRA et outils de gestion du cycle de vie / d'intégration continue, tels que Jenkins, Artifactory et Ansible.
  • Outils de traitement de flux, tels que Kafka et Spark.
  • Outils d'analyse, d'instrumentation et de visualisation des performances, tels que Prometheus, Grafana et Kiali.
  • Administration de serveurs Linux et de machines virtuelles.
  • Déploiement et administration de clusters Kubernetes.