Oliver Schoenborn,加拿大安大略省渥太华的开发商
Oliver is available for hire
Hire Oliver

Oliver Schoenborn

Verified Expert  in Engineering

Software Developer

Location
Ottawa, ON, Canada
Toptal Member Since
October 1, 2014

经过多年的VR分布式仿真系统开发, Oliver专注于DevOps工程, 特别是自2017年以来的自动化:(1)结合Terraform, Python, and Docker to automate the provisioning of Kubernetes clusters and cloud resources used by microservices deployed into those clusters; (2) engineering CI/CD pipelines; and (3) managing k8s clusters and helping developers integrate their work into it, 标准化内部舵图, 并将遗留应用程序容器化.

Portfolio

Toptal Clients
亚马逊网络服务(AWS)、Python、命令行接口(CLI)...
自雇(Sentian Cloud Computing, Inc ..)
Amazon Web Services (AWS)、Python、Google Kubernetes Engine (GKE)、Minikube...
CAE, Inc.
VirtualBox, Jenkins, Wireshark, TCP/IP, Simulations, Linux, Windows...

Experience

Availability

Part-time

Preferred Environment

Amazon Web Services (AWS), Helm, Terraform, Kubernetes, Python 3, Bash, Visual Studio Code (VS Code), PyCharm, Linux

The most amazing...

...我为开发人员构建的自动化是一个容器化的CLI, operations, DevOps, and CI/CD's to use, 确保一致的自动化逻辑和依赖关系.

Work Experience

DevOps Engineer Contractor

2018 - PRESENT
Toptal Clients
  • 为一家美国数字媒体公司将基于kops的Kubernetes集群迁移到EKS.
  • 使用Terraform、Python和Docker在AWS中自动配置基于kops的Kubernetes集群. Managed complicated kops upgrades.
  • 设计并实现了Spinnaker的连续交付管道, 先进地利用管道重用机制.
  • 开发用于基础设施自动化的容器化CLI, deployments, and deliveries, to be used by developers, the delivery team, operations team, and CI/CD (in true DevOps fashion!).
  • 通过开发Groovy共享库和建立编码标准,极大地改进了大型Jenkins安装的配置管理和可维护性.
  • 调试用于远程温度测量的Arduino设备(电路和编写c++代码),并设计适当的c++代码,通过IoT/MQTT与AWS DynamoDB集成.
Technologies: 亚马逊网络服务(AWS)、Python、命令行接口(CLI), Amazon Virtual Private Cloud (VPC), Amazon S3 (AWS S3), Nexus, REST APIs, Containerization, Bash, C++, Arduino, MQTT, Docker, Jira, Git, CI/CD Pipelines, Kubernetes Operations (kOps), Helm, Spinnaker, Jenkins, Terraform, Amazon EKS, Kubernetes

Principal Contractor

2017 - PRESENT
自雇(Sentian Cloud Computing, Inc ..)
  • 为一家位于渥太华的初创公司提供自动化的AWS基础设施配置. 设计了一个基于Let’s Encrypt/ACME的认证管理系统. 通过Terraformer导入现有的基础设施到Terraform.
  • 将微服务从Docker Compose和EC2迁移到EKS中的Kubernetes.
  • 为纽约花旗银行的金融分析师提供为期三天的Python课程的技术和课堂支持.
  • 在最近出版的书中有特写, Python访谈:与Python专家讨论, Packt 2018 by Mike Driscoll, 基于我在PyPubSub上的开源工作.
  • 迁移了一个用Node编写的遗留web应用程序.js, Express.js, JavaScript, and SQLite to GKE. 自动部署,以便最小化停机时间,并仅在测试通过时进行部署.
  • 通过开发开发人员使用的CLI,支持复制完整的堆栈(包括EKS外部的AWS资源和每个堆栈所需的资源), delivery, 和CI/CD(以真正的DevOps方式进行故障排除), staging, and more.).
  • 在加拿大政府工作的9个月里,每周花几个小时指导一个开发团队迁移遗留项目 .. NET Core应用到Azure Kubernetes服务(AKS). 分析他们的应用,计划进展,每周提供实践.
  • 重构AWS CloudFormation模板,实现渥太华业务基础设施的自动化复制.
技术:亚马逊网络服务(AWS)、Python、Google Kubernetes Engine (GKE)、Minikube, Bash, Docker Compose, Docker, MySQL, AWS CloudFormation, Pandas, Jupyter, CI/CD Pipelines, Git, Google Cloud Platform (GCP), Azure Kubernetes Service (AKS), Terraform, Kubernetes

仿真软件工程顾问

2005 - 2017
CAE, Inc.
  • 为分布式仿真应用程序设计了一个基础设施即代码系统. 这是“micro-Kubernetes”:我基于XML设计了配置文件,并使用运行在每个系统上的RPyC代理来远程启动和关闭进程.
  • Integrated the system with Java, Tomcat, MySQL为基于GUI的基础架构代码创建提供了一个web界面.
  • 使用Python、PyQt和pytest开发了一个基于代理的仿真桌面GUI应用程序. 使用多核Python(通信进程)进行大规模计算.
  • Led a team, 编写核心组件和基础架构, 设置和管理虚拟机和Jenkins.
  • 使用虚拟机为团队成员提供软件开发环境. 使用vSphere和虚拟机,为军事人员学习航空电子设备维护提供基于类的虚拟训练环境.
Technologies: VirtualBox, Jenkins, Wireshark, TCP/IP, Simulations, Linux, Windows, Virtual Reality (VR), Lua, Java, Python, C++

Simulation Software Engineer

1998 - 2005
加拿大国家研究委员会
  • 带领一个六人的工程团队开发一个沉浸式起重机模拟器. 协调工作,代码审查,以及团队组件的集成.
  • 基于事件驱动消息的多机体系结构.
  • 用c++语言开发了事件和进程间消息传递系统,并开发了功能强大的基于XML的配置系统.
Technologies: Virtual Reality (VR), Event-driven Architecture, Distributed Computing, Simulations, Windows, TCP/IP, UML, Object-oriented Design (OOD), Java, Bash, Linux, Python, C++

DevOps Automation

使用Spinnaker、Python和Docker设计并实现交付管道. 在AWS EC2中使用kops和Python自动配置Kubernetes集群,并对Helm图表进行Docker维护和QA.

航空电子维修教练-分布式计算

Integrated C# .. NET 4 (Windows上的托管代码),Visual c++ 2005(非托管)和Lua 5.1 .提供一个2+1D的虚拟环境,让学生学习现代综合航空电子设备的故障排除.

c#层提供了GUI和UX, including imagery, guidance, navigation in the 2D environment, 培训生使用诊断工具, 以及逼真的驾驶舱仪表. 非托管c++层提供业务逻辑, from configuration, startup, 二维环境下的导航和航电仿真,包括数据总线, progression tracking, and instrument failures. Lua层提供了应用程序的可脚本性, 包括与运行状况监控系统(HMS)接口使用的仪器页面的定义, 场景组件和功能的配置, 以及目标/进程的配置.

The application was multi-threaded, c++层充当GUI可用的服务, 以及允许扩展和场景定义而无需重新编译的脚本. Very powerful and very stable.

起重机操作模拟器-分布式计算

领导了一个完全沉浸式起重机模拟器的开发. 我负责需求管理, system architecture, 场景定义等核心组件, 多机多进程数据交换c++基础结构, and hardware emulation using Java. As lead engineer, 我负责界面设计和整合其他团队成员开发的组件,如声音生成, crane physics, crane hardware, 以及带有运动跟踪和主动3D眼镜的沉浸式投影系统. 该系统由多台计算机通过TCP/IP交换数据组成, UDP, and shared memory, 以及基于xml的配置系统. 探索频道对该系统进行了专题介绍.

PubSub

http://github.com/schollii/pypubsub
PubSub是一个Python发布-订阅引擎,用于基于事件的应用程序. 最初作为wxPython的一部分开发, 我在2003年接管了这个项目,基于我为它创建的一些重大改进和广泛的自动化单元测试.

Lua-icxx

http://sourceforge.net/p/lua-icxx/code/HEAD/tree/trunk/src/
Lua-icxx是一个帮助库,可以通过面向对象API将Lua嵌入到c++应用程序中,从而使Lua堆栈完全不可见. It integrates with SWIG to make SWIG-based Lua wrappers available to C++ applications; without this, 开发人员被迫使用Lua非常低级的C API.

Nose2pytest

http://github.com/pytest-dev/nose2pytest
In this one project, 我决定将测试工具从Python nose升级到PyTest,因为后者可以在测试健壮性方面获得一些显著的收益. 由于有成千上万的测试,这不能手工完成. 我基于Python的内置模式匹配器为其抽象语法树编写了一个转换器, 并将其添加到GitHub并提交给PyTest项目, to which it was accepted.

IOF

http://sourceforge.net/p/iof/code/HEAD/tree/trunk/ioflib/include/iof/
IOF是一个格式化的输入/输出库,用于使用c++流提供类似printf/scanf的基于格式化字符串的I/O. 类似于Boost的格式模块,但更紧凑. 与Boost相比),没有任何外部依赖. 此外,它不需要任何构建(它是纯粹的c++模板)。.

Integration of C#, C++, and Lua

将托管c# 2010、非托管c++ 2005和Lua集成到一个应用程序中. 在你尝试之前,你可能很难欣赏挑战. 部分挑战可能源于c++层,它是一个第三方库. Additionally, c++部分在一个单独的线程中, 并且必须能够从Lua部分访问. 我终于设法使一切工作成为一个强大和高性能的系统.

使用Python和PyQt进行多进程GUI开发

开发了一个复杂的GUI,支持通过状态机管理的大量用户操作集,将任何给定时间的可用操作限制为所有可用操作的非常小的子集. 开发了一个完全自动化的内存泄漏测试系统, performance, and behavior of this application, based on PyUnit, Jenkins, and mocks. Designed the installation system, the documentation, 多核引擎支持在大量核心上同时执行业务逻辑,从而将性能提高1000倍.

Python调试器集成到GUI应用程序

该项目由使用PyQt编写的Python GUI组成, 并允许用户定义应用程序要执行的Python脚本. 在脚本中添加设置和命中断点的调试功能, stepping through script code, getting local variable values, etc. The documentation was poor and, eventually, 我想出了如何在不阻塞GUI的情况下使其工作!

业务流程建模和仿真环境

Using DOORS, Python, PyQt (Qt库的Python包装器)和SQLite, 我设计并开发了一个GUI和一个控制台应用程序,它支持定义业务流程并使用并行蒙特卡罗模拟10来执行它以进行假设分析,000个副本分布在计算机上可用的尽可能多的核心上(48, 128, etc.). 我使用PyTest、Jenkins和mock自动化了应用程序的测试.

Languages

Python, c++, Lua, YAML, Bash, XML, RELAX NG, Python 3, UML, JavaScript, Java, Fortran

Paradigms

Object-oriented Programming (OOP), Generic Programming, Object-oriented Design (OOD), DevOps, Event-driven Programming, Distributed Computing, Test Automation, Template Metaprogramming, Rapid Prototyping, Agile Software Development, Event-driven Architecture, Microservices, REST, Concurrent Programming

Platforms

Kubernetes, Docker, Amazon Web Services (AWS), Windows, Linux, Spinnaker, Unix, Arduino, Nexus, AWS Lambda, Google Cloud Platform (GCP), AWS IoT, Azure

Storage

JSON, SQLite, PostgreSQL, Amazon DynamoDB, MySQL, Amazon S3 (AWS S3)

Tools

Terraform, Helm, Docker Compose, Pytest, Jira, VMware, Git, Subversion (SVN), Jenkins, VirtualBox, AWS CloudFormation, OpenSceneGraph, Amazon EKS, MQTT, Azure Kubernetes Service (AKS), Jupyter, Amazon Virtual Private Cloud (VPC), Google Kubernetes Engine (GKE), Wireshark

Other

CI/CD Pipelines, Containers, Regular Expressions, TCP/IP, System Architecture, Virtual Reality (VR), Pub/Sub, Networking, Amazon API Gateway, Message Queues, Kubernetes Operations (kOps), Containerization, Minikube, Command-line Interface (CLI), Numerical Programming, Simulations, Serverless, Internet of Things (IoT), 3D Modeling, Process Simulation, Physics Simulations, 3D Animation, Ajax

Libraries/APIs

REST APIs, Pandas

1991 - 1998

Ph.D. 物理学硕士学位(图案形成)

University of Toronto - Toronto

JANUARY 2021 - JANUARY 2024

CKAD

Linux Foundation