Bespoke Software Development - Containers
StyleTech have been using Container technology since 2016. Popular implementations of containers are provided by Docker and Kubernetes.
A container image is a lightweight, stand-alone executable package of a piece of software that includes everything needed to execute that code (e.g. code, runtime, tools, libraries and settings). Containers isolate software from its surroundings and help to reduce conflicts between development, testing and production.
Many container images can run within a single machine and each container instances can use different versions of a DLL without causing any conflict, as the container providers isolation. When running multiple container images on the same machine, each container will share the OS Kernel with other containers. Containers also take up less space than VMs, as container images are typically MBs in size and they start almost instantly.
Containers and virtual machines have similar resource isolation and allocation benefits, but function differently because containers virtualise the operating system. This allows containers to be more portable and efficient.
By using the Microsoft .Net Core technology, an application can now run within either a Linux or Windows container.
Microsoft Azure has great support for containers:
- The Azure Container Registry provides easy storage of your container images. These images can then be deployed using DC/OS, Docker Swarm, Kubernetes and Azure services such as App Service, Batch, Service Fabric etc.
- The Azure Container Services allows for the scaling and orchestration of the container images using DC/OS, Docker Swarm and Kubernetes.
Microsoft Visual Studio now has great support for containers, allowing containers to be published locally or directly to Azure. Visual Studio also allows standard debugging within running containers.
StyleTech have adopted the Microservices design pattern in conjunction with the implementation of container technologies. The Microservices design pattern allows for a fine level of scalability, as only the containers that are being heavily used will scale and they will only consume the hardware resources that are needed.