SAS on Containers

By Juan Sanchez - Senior SAS Solutions Architect

This article aims to provide an eagle view on what SAS containers offer and what OCS Consulting can do for you to either evolve your business model or to set up a new one, and where this evolution can be highly recommended, and how.

A little bit of history and context

Containers may seem like a technology that came out of nowhere to transform IT and the business, but they are actually not new at all. Containers is an idea that has been around since the 70’s, intending to isolate code on UNIX systems and to automate workloads. Whilst they became useful in certain application development and deployment scenarios, back then the main challenge was that containers where anything but portable. Luckily for us, containers have greatly evolved to give us all the flexibility we may wish nowadays, mainly thanks to Docker and Kubernetes. You may have heard of them and we will talk all about it within the SAS context.

The IT cloud is not a new idea either (think of ARPANET in the 70’s as well, and CSNET in the 80’s), however it has become extremely popular during the last 10 years, first thanks to Amazon’s AWS, then many other public clouds joined the game: Microsoft Azure, Google’s GCP, Alibaba, IBM, RedHat, VMWare, Oracle, etcetera. That includes as well, private on-premises clouds which came even earlier, and hybrid clouds. The main model is to offer the quickest deployment of IT solutions ever, automating infrastructure and workloads via code, and to relieve the owners of those solutions from the hurdle to maintain the physical infrastructure – including depreciation, amortization and upgrades/replacement. Especially new business like the Start-Ups, massive internet services and Big Data Analysis/AI have flourished with this model and those experiences keep serving as primary lead to many others to follow. Perhaps you are one in this privileged list, or considering, if you are reading this article. In that case, thank you for your valuable interest and attention.

Needless to say, the container models work extremely well with the cloud models and the rapid development of applications (CI/CD), bringing all their potential and benefits.

What is a container

 “A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.” (definition by Docker.com)

In my own words, a container is a layer, or a set of layers, containing a set or subsets of an application (code, libraries, binaries, etc), with the exception as best practice of the operating system itself which will be shared across all the containers, forming an isolated unit that can be built together, on top, or as a part of other containers, all of them being isolated units by definition. The containers are created only (as best practice) via code – mainly a file named Docker file, but this can be supported by other scripts, such as YML.

Figure 1 – Containers running on top of a single Operating System.

Figure 2 – Layers on container images



To be more specific and clear, a container image is a read-only unit, non-runnable, and a container is the running instance of a container image, which may experience changes as it runs. However, when the container is stopped, the state of the container disappears and when the same container image runs in a container, it will be on its initial state.

Meaning, containers are just temporary instances and they can be thrown away at any time. If you would like to keep the status of anything in a container, you will need to either save it in a mounted external storage, or to save the status in a new container image, adding the new layer of the new status.

The level of isolation of these containers can be managed through certain parameters, such as mounting external storage, or defining network port mappings.

There are several flavours of containers, and one would say there are Docker containers and Kubernetes containers as main players, however, even a Kubernetes container is a Docker container as the technology is based on the same principles.

And last but not least, you may remember I indicated container images are created through code. Well, if code can be tagged and versioned, so can container images. Actually, there is a term and tool named “Container Repository” which allows to tag images and to store them, pull, push, same as with any GIT or other versioning system. Docker offers its own, every cloud as well, and you can create one locally as well.

Conclusions

We would normally round off with what can OCS do for you. As this article is already long enough, you will need to wait just a little while. We will dive into SAS specifics in part 2. Should you feel the urge of interest, or if your business needs to now more soon, please contact us on how OCS can help you with moving to the Cloud or with containerization. We would be thrilled to have a chat with you.

Find more about:

General information about Docker, Kubernetes and Containers -

https://www.docker.com/resources/what-container

https://kubernetes.io/

There is nothing better to learn than by doing. You can start with a 101 Beginner example –

https://github.com/docker/labs/tree/master/beginner/

Details about SAS on containers (SAS 9 and SAS Viya). We will dive deep in part 2–

https://www.sas.com/nl_nl/solutions/cloud/for-containers.html

https://support.sas.com/rnd/containers/index.html

We at OCS Consulting are really looking forward to working together with you.