Devops for flexible embedded software development and deployment
No matter how similar sorting tasks are in the food industry, there will always be subtle difference ...
Machine vision
Take full control of the development and deployment
of your data science applications and models
Today’s data science projects often start as ad-hoc scripts and notebooks. Powerful personal computing & the free availability of a multitude of powerful and user-friendly tools such as TensorFlow, Jupyter notebooks, Pandas etc have given business users unprecedented power to experiment with their data and prototype insightful tools.
When it comes to deploying these tools in a production environment or making use of parallel computing to support massive scaling, things get more complicated.
That’s where we come in.
Continuous Integration (CI) automatically builds and tests new versions of your software in an isolated environment when they are committed in the version control system. This clearly shows when and where mistakes were made and allows the developers to fix them immediately. If a developer forgets to add a file (or changes to a file) or a library, the build will fail. However, it’s clear straight away which commit breaks the build, and that makes it easy and cheap to fix it.
Automated testing assures that the code not only builds but also performs as expected. This ranges from unit tests, which test isolated classes and functions to integration, to system tests, which test the collaboration of modules.
We implement CI to test both your conventional code and the training and performance of your machine learning models.
Continuous Delivery (CD) focuses on automatically building your code for release. Every commit to the version control system (or to certain branches) will be available as a release. This makes it possible to release new versions often, but since continuous delivery does not include automatic deployment, the actual deployment is still a human decision and action.
It is possible to release a new version only when certain features are ready, but since every commit is ready to become a release, it is still possible to respond quickly to major bugs or urgent feature requests of customers.
Continuous Deployment (also abbreviated as CD) takes Continuous Delivery one step further and automates the deployment process too. Every new version that passes all tests is automatically released and deployed. Although this is generally undesirable for machines, it is often done for internal and web based applications (sometimes starting with a limited number of users).
Since the tests which are part of the automatically executed CI pipeline will almost immediately find most bugs (also in code which, in theory, should not be affected by committed changes), your customers receive a much more stable application, without increasing your testing effort. This also allows you to roll out fixes and new features much faster, without needing to worry about stability or excessive manual testing.
And even if things do go wrong, you have the exact release installed at your customer’s infrastructure and a matching build and runtime environment. This puts an end to those hard-to-find bugs that are caused by subtle differences between your customer’s runtime environment and the build environment on your developer’s laptop.
Devops also improves your own experience. Automated testing (using unit, integration and system tests) gives you more time to test what is really important for you: the outstanding user experience of your product. The automatic creation of releases (and, where applicable, their automatic deployment) assures that the procedure is correctly executed. Furthermore, it significantly decreases the time spent on repetitive tasks.
Since every commit, whether a new feature or a bug fix, is automatically transformed into a release, there is always a recent release available if one of your customers needs an update. You don’t have to deploy every new version of your product, but you can do so if needed. You can rest assured that if a customer has an urgent problem, you can react immediately, without sacrificing stability.
These advantages enable you to spend more time on your core business: improving your product by developing new features and innovating.