Presentation is loading. Please wait.

Presentation is loading. Please wait.

Roots/Git to Deploy What is continuous integration and continuous delivery How they are used at the Innovation Co-Lab Victor Wang, Software Engineer &

Similar presentations


Presentation on theme: "Roots/Git to Deploy What is continuous integration and continuous delivery How they are used at the Innovation Co-Lab Victor Wang, Software Engineer &"— Presentation transcript:

1 roots/Git to Deploy What is continuous integration and continuous delivery How they are used at the Innovation Co-Lab Victor Wang, Software Engineer & Technical Consultant September 12, 2016

2 What is the problem? Testing is hard to manage and not publicly known to the team A lot of sysadmin work to migrate application from development environment to production environment “War Room” situation every time new version needs to be deployed and no easy way to roll back Painful when it comes to scale the application Big headache when migration Point 1 without CI, tests need to be run where the app is developed. PRs are not reliable when merged unless reviewer clones it and run it locally Point 2 Take RoR as example, production DB, runtime configure (rbenv rvm), install rails and etc Point 3 Rollback need someone to login to the server, checkout the old release, and execute other commands to make the old version running. This is very error prone Point 4 every new machine has to be manually configured to run the application Point 5 when the current machine provider do not satisfy the need, migrating the app to a new server requires manual setup (the initial headache all over again)

3 Solutions? Testing is hard to manage and not publicly known to the team A worker just to run the tests and publish the results somewhere → CI A lot of sysadmin work to migrate application from development environment to production environment "All problems in computer science can be solved by another level of indirection." “War Room” situation every time new version needs to be deployed and no easy way to roll back Blue/Green rolling deployment → CD Painful when it comes to scale the application Abstraction again Big headache when migration Still abstraction Talk about a layer of abstraction David Wheeler. Abstraction in this context: we’d like to abstract the OS kernel out

4 OS Kernel Abstraction What do we need?
Packaged OS Kernel, run just like an app Packaged application dependencies Packaged application runtime The result: a fully functional app package that can be put on any OS. OS Kernel Abstraction What do we need?

5 Docker: Containerised Application
Docker takes the OS kernel, and your application, packs that into an image. Then it runs containers attached with volumes (fs) based on that image. Docker engine interacts with your host OS and translates all the syscalls.

6 Docker explained in graph
Any other applications Docker Container Docker Container Docker Container Docker Container Docker Image Docker Image Docker Engine (network, fs, etc) Host OS

7 The Workflow Building your application however you want
Write tests to make sure what you build is actually working Configure Continuous Integration to run your tests Configure Continuous Delivery to build your Docker image Configure Blue/Green Deployment to roll onto the new Docker image on multiple hosts

8 CIs on the Market Travis-CI - used by GitHub projects
Jenkins - highly extensible CI that can be configured to run almost anything GitLab CI - used by GitLab projects


Download ppt "Roots/Git to Deploy What is continuous integration and continuous delivery How they are used at the Innovation Co-Lab Victor Wang, Software Engineer &"

Similar presentations


Ads by Google