a devops approach to integration of software components
play

A DevOps Approach to Integration of Software Components in an EU - PowerPoint PPT Presentation

A DevOps Approach to Integration of Software Components in an EU Research Project Mark Stillwell Jose G. F. Coutinho Department of Computing Imperial College London, UK September 1, 2015 Software as Research An article about computational


  1. A DevOps Approach to Integration of Software Components in an EU Research Project Mark Stillwell Jose G. F. Coutinho Department of Computing Imperial College London, UK September 1, 2015

  2. Software as Research An article about computational science in a scientific publication is not the science itself, it is merely advertising of the scholarship. The actual scholarship is in the complete software development environment, [the complete data] and the complete set of instructions which generated the figures. — David Donoho “Wavelab and Reproducible Research”, 1995

  3. Funder Expectations ◮ multi-partner collaborations ◮ results data and code as research outputs ◮ reusable and maintainable software ◮ plans for long-term stewardship

  4. HARNESS Project Summary ◮ EU FP7 funded cloud computing project ◮ makes available various heterogeneous resources ◮ multiple sub-projects developed by independent teams ◮ need to provide coherent demonstrator platform

  5. HARNESS Project Teams Storage Team Compute Integration Network Team Team Team Platform Team

  6. HARNESS Project Architecture Users Users submit app, manifest, SLO feedback ConPaaS submit application feedback Application Manager (AM) Application Manager (AM) Platform Layer allocation request feedback Cross-Resource Scheduler (CRS) IRM-NET networked VMs reservation available resources request feedback IRM-NEUTRON IRM-NOVA IRM-SHEPARD IRM-XtreemFS network resources VMs HW accelerators storage devices OpenStack OpenStack MaxelerOS XtreemFS Neutron Controller Nova Controller Orchestrator Scheduler DFE available volume reservation OSDs manage manage reservation XtreemFS MPC-X Directory MPC-X Neutron Agent Nova Compute OSDs/ status MRCs PCIe device reservation DFE GPGPU SHEPARD FPGA Compute switches servers read/write execute operations Infrastructure task Layer OpenCL MaxelerOS AlphaData XtreemFS client Executive POSIX Application deploy and execute Module services + applications ConPaaS agent virtual machines Service Layer

  7. Testbed Environments ◮ Imperial Testbed ◮ small scale ◮ static environment with shared systems ◮ specialized hardware (GPU, MPC-X, SSD cards) ◮ Grid5000 Testbed ◮ medium to large scale, some multi-site deployments ◮ dynamic environment ◮ virtual networking links ◮ some specialized hardware (GPU, Intel Phi)

  8. Initial Approach ◮ developer virtual machine images ◮ interactive configuration with some scripting (bash, devstack) ◮ scheduled releases of updated images

  9. Significant Issues ◮ difficulty merging, managing, and tracking changes ◮ individual developer VMs tend to “drift” over time. . . ◮ fragmentation: hard to point to a definitive latest version ◮ difficult to debug or identify differences between images ◮ time-consuming and error-prone deployment to testbeds

  10. Objectives for New Approach ◮ let developers easily work individually ◮ turn configuration/setup issues into software issues ◮ allow for version control, merging ◮ allow for automated acceptance testing

  11. Differences from Commercial Requirements ◮ priority is individual research contributions ◮ lower focus on ease-of-use ◮ more need for customization ◮ need for reproducibility

  12. Technologies ◮ Git / GitLab / GitHub ◮ Ansible ◮ Docker ◮ Vagrant ◮ Buildbot

  13. DevOps Workflow Development Version Automated Automated Integration Testbed Release Team Control Unit Tests Integration Tests Team Deployment check-in trigger F feedback check-in trigger P trigger F = fail F P = pass feedback deployment and check-in trigger automated testing in a virtual development P environment deployment and testing in Grid’5000 and P Imperial Cluster testbeds feedback F F feedback feedback check-in trigger P deployment and testing in Grid’5000 and P Imperial Cluster testbeds feedback P feedback F release approval

  14. Role of Docker ◮ Docker used whenever possible ◮ some services need global machine state ◮ provides static release images, with some configuration ◮ isolates projects from each other

  15. Deployment Projects ◮ use ansible for orchestration and configuration management ◮ unify sub-projects, pull in from multiple repositories ◮ ansible ensures configuration changes are “idempotent”, so can be run repeatedly on static testbed

  16. Virtual Machine Environments ◮ configured using vagrant+ansible ◮ developer just checks out deployment, runs “vagrant up” ◮ allows developers to work independently ◮ easy to re-initialize or update

  17. Reproducible Deployment ◮ developers work in the same environment, changes easily merged ◮ experiments and benchmarks can be validated at a later date ◮ software can be deployed on novel testbeds ◮ rapid recovery in case of hardware failure

  18. Automated Testing ◮ unit tests for individual projects ◮ integration test for full deployment

  19. Buildbot GitLab Git server manage repositories poll change status BuildBot Multi-VM Vagrant deployment Each component is tested in running all the HARNESS cloud services, Master isolation within a Docker which interact with each other. container Some of the VMs run services deployed within Docker containers build build commands commands VM 2 manage Vagrant Docker Docker container container manage VM 1 build slave build slave process process build slave process Imperial DoC Cloud Physical Server unit test buildslave integration test buildslave (a) (b)

  20. Shortcomings ◮ difficult for non-experts to make configuration changes ◮ difficult to manage temporary branch changes for developers ◮ considerable development burden shifted to integration team ◮ running the full virtual deployment in vagrant on server takes a long time

  21. Lessons Learned ◮ ability to refresh developer vms extremely useful ◮ automated deployment also very useful, but requires expert supervision ◮ testing results often ignored

  22. Future Recommendations ◮ gatekeeper for authoritative versions ◮ do not publish/merge changes until tests are passed! ◮ look into other techniques for projects with multiple repositories ◮ run integration tests against cloud back end

  23. Discussion Points request for feedback/discussion about a particular point in our work: How can we better manage projects that pull from multiple repositories? thought-provoking statement or discussion question about the area: What are appropriate metrics of success for this type of project?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend