12/14/18

Week #50's Wednesday Evening Training: Docker, Service Workers and a bit of Augmented Reality

This week's Wednesday Evening Training, we really had a busy evening. We had three topics on the menu: Docker, Service workers and Augmented Reality.


Docker Container Platform

Fast and easy scaling is very important nowadays. You need to respond fast to increasing load and you may want to downscale when possible, decreasing running costs. Virtualization is an effective approach to this. Applying virtualization, you actually use your bare metal infrastructure as Host Machines to run software applications (Virtual Machines) that emulate physical machines (Guest Machines). Virtual Machines use Images (files) of completely installed and configured machines (OS and the applications you want to use) to start a Guest Machine. The Virtual Machines themselves are managed (start/pause/resume/stop/...) by so called Hypervisors. Virtualization drastically increases the speed and ease in which you can scale your server infrastructure, but the required emulation and big image files poses a rather expensive overhead.
In Containerization, like Docker does, software (the applications you want to use) is not emulated, but is run directly on the hard hardware of the host machine in separate Container Runtimes (in short: Cointainers). Container Runtimes are based on Docker images which contain definitions of the software and configuration you want to run in your Container Runtimes. This Containerization approach decreases the overhead drastically compared to Virtualization, increasing the advantage of fast and easy scaling.


In our training, I gave an introduction on the technical architecture of a Dockerized software ecosystem and Bart van Beek showed us the actual code: how to setup a Docker image, how to deploy and how to manage Docker Runtimes. He had prepared some nice examples (which he published in his GitHub repo, see the links at the bottom of this post).

Using Containerization in a Micro Services architecture 

In a Microservices architecture (see also my previous post), Containerization is quite handy when deploying Microservices independently and reliably, and (out)scaling them quickly. The challenges however, in managing (orchestrating) such an ecosystem of running Microservice Container Runtimes, requires more software than "bare" Docker containers can provide. In our Wednesday Evening Training, we also briefly discussed Google's Kubernetes, an open-source container-orchestration system for automating deployment, scaling and management of containerized applications. We'll take a deep dive into Kubernetes in one of our upcoming Wednesday Evening Trainings. I'll be writing more on Microservices, Containerization and related topics in a separate blog post I'll be writing shortly.

Service workers: the new Worker especially suitable for Progressive Web Applications (PWA)

Our second topic of this evening, was introduced by Olaf van Venetie, one of our lead front end software engineers. In my post on last week's Wednesday Evening Training, I already briefly discussed the the Worker types available, of which the Service Worker is the most modern and comprehensive.
This evening, Olaf took us on a deep dive into Service Workers. He had prepared a neat demo and gave a code walk through. We had plenty of opportunity for Q&A and creating our own Service worker (see the hands on lab in the links below).


A bit of augmented Reality with A-FRAME and AR.js

The last topic of the evening was actually based on a nice article and some prototypes of a JavaScript based Augmented Reality framework I found some time ago on the web. The technology is based on an all JavaScript implementation of Augmented Reality using the A-FRAME and AR.js frameworks. A-FRAME is a web framework for building virtual reality experiences and AR.js is an efficient Augmented Reality solution for use on the Web. It runs entirely in a web browser and there is no need to install a special App. Combining A-FRAME and AR.js gives developers a simple way to create Augmented Reality content for the web.

Augmented reality (AR) is an interactive experience of a real-world environment where the objects that reside in the real-world are "augmented" by computer-generated perceptual information, sometimes across multiple sensory modalities, including visual, auditory, haptic, somatosensory, and olfactory. [source: Wikipedia].

In short: you can put (overlay) objects in a camera view. And that is just what we did this evening.

We used our camera's (webcams, camera's on our mobile phones) in a demo web page to point at a piece of paper with a simple and clear icon on it (a marker) and the AR software displayed a 3D animated object, in our screen, on top of the marker. You can do this quite easily yourself; I've added some links for that below. A simple but impressive little demo, that gave us plenty of thoughts on new Wednesday Evening Trainings. 

To be continued for sure!


 

Further reading

Do you want to read more on the topics in this post or play around with the technology? Here are some links…

On Docker:
Docker (official website): https://www.docker.com
Docker (software), a nice intro on Wikipedia: https://en.wikipedia.org/wiki/Docker_(software)
Play with Docker classroom: https://training.play-with-docker.com/
Play with Docker classroom (specific topics): https://training.play-with-docker.com/alacart
Play with Docker - A simple, interactive and fun playground to learn Docker: https://labs.play-with-docker.com/
Bart van Beek's Docker examples (GitHub repo): https://github.com/babeek94122/wet-demo-docker
Deploy on Kubernetes: https://docs.docker.com/docker-for-mac/kubernetes/
Virtualization: https://en.wikipedia.org/wiki/Virtualization

On Service Workers:
Hands on lab building your first Service worker: https://developers.google.com/web/ilt/pwa/lab-scripting-the-service-worker

On Augmented Reality:
Creating Augmented Reality with AR.js and A-Frame: https://aframe.io/blog/arjs
AR.js  - The Simplest Way to get Cross-Browser Augmented Reality on the Web: https://medium.com/chialab-open-source/ar-js-the-simpliest-way-to-get-cross-browser-ar-on-the-web-8f670dd45462
Efficient Augmented Reality for the Web - 60fps on mobile! (GitHub repo): https://github.com/jeromeetienne/ar.js
AR.js examples (GitHub): https://github.com/stemkoski/AR-Examples
AR.js examples: https://jeromeetienne.github.io/AR.js-docs/misc/EXAMPLES.html
My YouTube channel on Augmented Reality (explanations, demo's, et cetera): https://www.youtube.com/playlist?list=PLSiMhBs48YvWFjL98LCyHLtRetCNM9lnR
Basket ball demo using AR.js and A-FRAME.js - Live demo: http://stemkoski.github.io/AR-Examples
Basket ball demo using AR.js and A-FRAME.js - GitHub repo: https://github.com/stemkoski/AR-Examples
Build and access your first AR webapp in less than 10 minutes using Arjs: https://blog.theodo.fr/2018/09/build-first-ar-web-app-less-10mn/
Red animating block demo: https://hansr.viahetweb.com/ar/t1/

Explanation on the block demo: open the URL above in a browser on your mobile phone. Then point your camera at the marker below. You should see a red animating cube in your mobile's screen, hovering above the marker that you're pointing at.


Next Wednesday Evening Training

Next week, we'll concentrate on Neo4J and graph databases. One of our database and Java experts, Fred van Nimwegen, will guide us through the concepts of graph based databases and will whow us an implementation of such a database.

Past Wednesday Evening Trainings on all topics

You 'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining


#wednesdayeveningtraining #capgemini #lifeatcapgemini #docker #containerization #serviceworkers #pws #html5 #ar #augmentedreality



No comments:

Post a Comment