Cloud Computing with APL. Morten Kromberg, CXO, Dyalog

Similar documents
The Post-Cloud. Where Google, DevOps, and Docker Converge

Introduction to data centers

DEPLOYMENT MADE EASY!

What s Up Docker. Presented by Robert Sordillo Avada Software

Index. Bessel function, 51 Big data, 1. Cloud-based version-control system, 226 Containerization, 30 application, 32 virtualize processes, 30 31

INDIGO PAAS TUTORIAL. ! Marica Antonacci RIA INFN-Bari

Who is Docker and how he can help us? Heino Talvik

APL Source Code In Text Files

OPENSTACK: THE OPEN CLOUD

Important DevOps Technologies (3+2+3days) for Deployment

Cloud Computing Technologies and Types

Cloud Computing. Technologies and Types

Think Small to Scale Big

Using and Developing with Azure. Joshua Drew

Setup Lab. A quick guide to infrastructure tools for EPL371

Cloud platforms T Mobile Systems Programming

DOCS

Containers. Pablo F. Ordóñez. October 18, 2018

Investigating Containers for Future Services and User Application Support

Windows Azure Services - At Different Levels

Cloud platforms. T Mobile Systems Programming

/ Cloud Computing. Recitation 5 February 14th, 2017

CS 470 Spring Virtualization and Cloud Computing. Mike Lam, Professor. Content taken from the following:

Docker at Lyft Speeding up development Matthew #dockercon

Brainstorm K Containerization with Docker. Crown Palm 2:30-3:30. Adam W Zheng Nebraska Educational Service Unit 10

Cloud & container monitoring , Lars Michelsen Check_MK Conference #4

Basics of Cloud Computing Lecture 2. Cloud Providers. Satish Srirama

Fixing the "It works on my machine!" Problem with Docker

Containers, Serverless and Functions in a nutshell. Eugene Fedorenko

[Docker] Containerization

Introduction to containers

FAST TRACK YOUR AMAZON AWS CLOUD TECHNICAL SKILLS. Enterprise Website Hosting with AWS

Declarative Modeling for Cloud Deployments

CS-580K/480K Advanced Topics in Cloud Computing. Container III

CSC- Bioweek 2018 Using cpouta for cloud computing Kimmo Mattila, Shubham Kapoor, Ari-Matti Saren (Jukka Nousiainen)

PaaS Anywhere. Isaac Christoffersen Architect, Vizuri

Verteego VDS Documentation

Midterm Presentation Schedule

OpenShift is FanPaaStic. Linqing Lu PaaS Dragon

Lecture 09: VMs and VCS head in the clouds

Getting Started With Containers

Running Splunk Enterprise within Docker

Web and API Apps in Azure

GitLab-CI and Docker Registry

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

Cloud & AWS Essentials Agenda. Introduction What is the cloud? DevOps approach Basic AWS overview. VPC EC2 and EBS S3 RDS.

Basics of Cloud Computing Lecture 2. Cloud Providers. Satish Srirama

At Course Completion Prepares you as per certification requirements for AWS Developer Associate.

In this unit we are going to look at cloud computing. Cloud computing, also known as 'on-demand computing', is a kind of Internet-based computing,

Android meets Docker. Jing Li

PaaS Anywhere. Isaac Christoffersen Architect, Vizuri

SCALING DRUPAL TO THE CLOUD WITH DOCKER AND AWS

CIS : Computational Reproducibility

VMware Fusion Tech Preview 2017: API/CLI Getting Started Guide

Hybrid Infrastructure Hosting Clouds + Dedicated + Colocated GoGrid / ServePath September 09

Introduction to ArcGIS Server Architecture and Services. Amr Wahba

What is Cloud Computing? Cloud computing is the dynamic delivery of IT resources and capabilities as a Service over the Internet.

Back-end architecture

Large-Scale Web Applications

IBM Bluemix compute capabilities IBM Corporation

Persistence & State. SWE 432, Fall 2016 Design and Implementation of Software for the Web

Docker and Security. September 28, 2017 VASCAN Michael Irwin

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

Deployment Patterns using Docker and Chef

Introduction to Containers

LINUX, WINDOWS(MCSE),

Introduction To Cloud Computing

WEBSITE & CLOUD PERFORMANCE ANALYSIS. Evaluating Cloud Performance for Web Site Hosting Requirements

Data Centers and Cloud Computing

Data Centers and Cloud Computing. Slides courtesy of Tim Wood

Introduction to Conga All the basics of Conga and communication Bjørn Christensen Adám Brudzewsky

Development and Operations: Continuous Delivery in Practice

Docker 101 Workshop. Eric Smalling - Solution Architect, Docker

Serverless Architecture Hochskalierbare Anwendungen ohne Server. Sascha Möllering, Solutions Architect

Is Docker Infrastructure or Platform? & Cloud Foundry intro

Data Centers and Cloud Computing. Data Centers

ovirt and Docker Integration

How to go serverless with AWS Lambda

the road to cloud native applications Fabien Hermenier

Using MySQL Containers

DevOps in the Cloud A pipeline to heaven?! Robert Cowham BCS CMSG Vice Chair

LSST software stack and deployment on other architectures. William O Mullane for Andy Connolly with material from Owen Boberg

DevOps Technologies. for Deployment

SERVERLESS APL. For now this is just research in Cloud technologies in SimCorp A/S.

Red Hat Quay 2.9 Deploy Red Hat Quay - Basic

Andrew Pullin, Senior Software Designer, School of Computer Science / x4338 / HP5165 Last Updated: October 05, 2015

How to Implement a Web-based Terminal with Docker

Containers OpenStack. Murano brings Docker & Kubernetes to OpenStack. Serg Melikyan. software.mirantis.com. January 27, 2015

Red Hat OpenShift Application Runtimes 1

Java in der Cloud Aktuelle Möglichkeiten und Entwicklungen

How to Supercharge your Agile Development Team. Matthew G. Duvall, PMP July 14, 2015

An introduction to Docker

Cloud Programming. Programming Environment Oct 29, 2015 Osamu Tatebe

containerization: more than the new virtualization

iems Interactive Experiment Management System Final Report

DevOps Course Content

Cloud Computing. DB Special Topics Lecture (10/5/2012) Kyle Hale Maciej Swiech

Virtual Machines. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

File systems, databases, cloud storage

AGILE DEVELOPMENT AND PAAS USING THE MESOSPHERE DCOS

Transcription:

Cloud Computing with APL Morten Kromberg, CXO, Dyalog

Cloud Computing Docker with APL Morten Kromberg, CXO, Dyalog

2 Cloud Computing: Definitions

3 Cloud Computing: Definitions Cloud Computing = "Using someone elses computer"

4 Cloud Computing: Definitions Cloud Computing = "Using someone elses computer" SAAS (Software As A Service): You use "Software" like gmail, dropbox, etc - with no idea of where it is running, or where your data is stored

5 Cloud Computing: Definitions Cloud Computing = "Using someone elses computer" SAAS (Software As A Service): You use "Software" like gmail, dropbox, etc - with no idea of where it is running, or where your data is stored PAAS: Someone hosts your application on a "Platform" which runs specific development tools (php, mysql, ASP.NET, Wordpress...)

6 Cloud Computing: Definitions Cloud Computing = "Using someone elses computer" SAAS (Software As A Service): You use "Software" like gmail, dropbox, etc - with no idea of where it is running, or where your data is stored PAAS: Someone hosts your application on a "Platform" which runs specific development tools (php, mysql, ASP.NET, Wordpress...) IAAS : Someone hosts your Virtual Machine on their "Infrastructure". You can install anything you like.

7 Cloud Computing: Definitions Cloud Computing = "Using someone elses computer" SAAS (Software As A Service): You use "Software" like gmail, dropbox, etc - with no idea of where it is running, or where your data is stored PAAS: Someone hosts your application on a "Platform" which runs specific development tools (php, mysql, ASP.NET, Wordpress...) IAAS : Someone hosts your Virtual Machine on their "Infrastructure". You can install anything you like. This talk is about installing and running Dyalog APL on IAAS.

8 Using IAAS

9 Using IAAS Pick an IAAS provider

10 Using IAAS Pick an IAAS provider Upload or Create a Virtual Machine

11 Using IAAS Pick an IAAS provider Upload or Create a Virtual Machine You save the hassle of o o o Buying [a] big enough computer[s] Maintaining / replacing the hardware Paying for a fast internet connection

12 Using IAAS the Hard Part

13 Using IAAS the Hard Part Picking a provider: o o Amazon, Microsoft, Google, DigitalOcean, Oracle, RackSpace, Netrepid, IBM/Redhat, GreenCloud, Alibaba, Openstack,... Can't help you with that

14 Using IAAS the Hard Part Picking a provider: o o Amazon, Microsoft, Google, DigitalOcean, Oracle, RackSpace, Netrepid, IBM/Redhat, GreenCloud, Alibaba, Openstack,... Can't help you with that Installing the software that you want to run on the Virtual Machine: o o APL Interpreter, Web Server or Service Framework, Database System, other tools... This is where Containers are "Pure Magic"

15 Containers Solve the Distribution Problem FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

16 Containers Solve the Distribution Problem Base Image FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

17 Containers Solve the Distribution Problem Base Image Files to Add FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

18 Containers Solve the Distribution Problem Base Image Files to Add Run during Build FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

19 Containers Solve the Distribution Problem Base Image Files to Add Run during Build Environment Vars FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

20 Containers Solve the Distribution Problem Base Image Files to Add Run during Build Environment Vars Run at Startup FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

21 Containers Solve the Distribution Problem Base Image Files to Add Run during Build Environment Vars Run at Startup FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws This "Dockerfile" completely describes a machine which will run "myapp".

22 Containers Solve the Distribution Problem Base Image Files to Add Run during Build Environment Vars Run at Startup FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws Your Code This "Dockerfile" completely describes a machine which will run "myapp".

23 Containers Solve the Distribution Problem Base Image Files to Add Run during Build Environment Vars Run at Startup FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS RUN git clone https://github.com/myco/myapp /myapp ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws Your Code Uses GitHub to load the source code for "myapp".

24

25 Building and Running the Docker Image Dockerfile FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

26 Building and Running the Docker Image Dockerfile FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws Build docker build t myco/myapp-test.

27 Building and Running the Docker Image Dockerfile FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / ADD /myapp/v7/test /myapp RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws Build Run docker build t myco/myapp-test. docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

28 docker run syntax & common switches docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test Switch Description -p hhhh:cccc Map TCP port cccc in container to hhhh on host -e name=value Set environment variable inside the container -v /hfolder:/cfolder Mount /hfolder in container as /cfolder -t Allocate a pseudo-tty -i Keep stdin open even if not attached --rm Discard changes when container terminates

29 Distributing the Image: DockerHub Build docker build t myco/myapp-test. Run docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

30 Distributing the Image: DockerHub Build docker build t myco/myapp-test. We can "push" the image to DockerHub: Run docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

31 Distributing the Image: DockerHub Build docker build t myco/myapp-test. We can "push" the image to DockerHub: Push docker login docker push myco/myapp-test Run docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

32 Distributing the Image: DockerHub Build docker build t myco/myapp-test. We can "push" the image to DockerHub: Push docker login docker push myco/myapp-test Now, the following will work on ANY computer that has Docker installed Run (assuming myco/myapp-test is a PUBLIC container) docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

33 Distributing the Image: DockerHub Build docker build t myco/myapp-test. We can "push" the image to DockerHub: Push docker login docker push myco/myapp-test Now, the following will work on ANY computer that has Docker installed Run (assuming myco/myapp-test is a PUBLIC container) docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

34 + GitHub for source code distribution. Code can be loaded at Image Build time, OR when a Container is started. DockerHub for container distribution. = Simple distribution of applications and tools to ANY machine including IAAS VMs.

35

36

37 Containers are STUNNING technology!

38 Containers are STUNNING technology! In addition to making distribution very simple:

39 Containers are STUNNING technology! In addition to making distribution very simple: Containers allow several applications to share the same host but remain isolated from each other

40 Containers are STUNNING technology! In addition to making distribution very simple: Containers allow several applications to share the same host but remain isolated from each other The effect is similar to Virtual Machines but the Operating System kernel is shared

41 Containers are STUNNING technology! In addition to making distribution very simple: Containers allow several applications to share the same host but remain isolated from each other The effect is similar to Virtual Machines but the Operating System kernel is shared Containers start and stop Containers in seconds o (the Operating System does not need to "Boot Up")

42 Containers are STUNNING technology! In addition to making distribution very simple: Containers allow several applications to share the same host but remain isolated from each other The effect is similar to Virtual Machines but the Operating System kernel is shared Containers start and stop Containers in seconds o (the Operating System does not need to "Boot Up") Containers consume MUCH less resources than VMs

43 Containers are STUNNING technology! ZDNET: Docker is hotter than hot because it makes it possible to get far more apps running on the same old servers and it also makes it very easy to package and ship programs. http://www.zdnet.com/article/what-is-docker-andwhy-is-it-so-darn-popular/

44 Containers & Docker From: http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/

45 Containers & Docker From: http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/

46 Linux

47 Linux Container technology works best with Linux, due to the size of the kernel

48 Linux Container technology works best with Linux, due to the size of the kernel Windows kernels are getting smaller but are still 10-20x as large as Linux (~0.5-1Gb vs 50Mb).

49 Linux Container technology works best with Linux, due to the size of the kernel Windows kernels are getting smaller but are still 10-20x as large as Linux (~0.5-1Gb vs 50Mb). Good News: Your Dyalog APL code will run unchanged under Linux. o So long as it doesn't call Windows APIs

50 Docker for Windows Docker for Windows uses Microsoft Hyper-V to run either Linux or Windows virtual machines. It provides the same command line interface as Docker under Linux docker build t myco/myapp-test. docker push myco/myapp-test docker run -p 8081:8080 -v /somefolder:/data e DEBUG=1 myco/myapp-test

51

52

53

54

55 Public Dyalog Containers These currently for experimentation only and are based on UNSUPPORTED NON-COMMERCIAL Dyalog 17.1. All run full development interpreters in interactive terminal mode. dyalog/dyalog:17.1-dbg Linux + Dyalog APL Interpreter dyalog/jsonserver:dbg dyalog:17.1-dbg + JSONServer dyalog/miserver:dbg dyalog:17.1-dbg + MiServer dyalog/jupyter dyalog:17.1-dbg + Python, Anaconda & Jupyter Notebook

56 Benefits of Public Containers Without Public Containers FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ADD /myapp/v7/test /myapp ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

57 Benefits of Public Containers Without Public Containers FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ADD /myapp/v7/test /myapp ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws With Public Containers FROM dyalog/jsonserver:dbg ADD /myapp/v7/test /myapp ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws

58 Benefits of Public Containers Without Public Containers FROM ubuntu:18.04 ADD./dyalog-unicode_17.0.34604_amd64.deb / RUN dpkg -i /dyalog*.deb RUN git clone https://github.com/dyalog/jsonserver /JSS ADD /myapp/v7/test /myapp ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws With Public Containers FROM dyalog/jsonserver:dbg ADD /myapp/v7/test /myapp ENV RIDE_INIT="SERVE:*:4502" ENV CodeLocation=/myapp CMD dyalog /JSS/JSONServer.dws Or even without a Dockerfile docker run p 8080:8080 p 4502:4502 v /myapp/v7/test:/myapp e RIDE_INIT="SERVE:*:4502" e CodeLocation=/myapp dyalog/jsonserver

59 Demo: Secure JSONServer FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

60 Demo: Secure JSONServer APL+JSONServer included FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

61 Demo: Secure JSONServer APL+JSONServer included Basic JSONServer Settings FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

62 Demo: Secure JSONServer APL+JSONServer included Basic JSONServer Settings Secure Options FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

63 Demo: Secure JSONServer APL+JSONServer included Basic JSONServer Settings Secure Options Add Certificates FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

64 Demo: Secure JSONServer APL+JSONServer included Basic JSONServer Settings Secure Options Add Certificates Application Code FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

65 Demo: Secure JSONServer APL+JSONServer included Basic JSONServer Settings Secure Options Add Certificates Application Code Start JSONServer FROM dyalog/jsonserver:dbg ENV MAXWS=256M ENV CodeLocation=/app ENV Port=8080 ENV Secure=1 ENV SSLValidation=64 ENV RootCertDir=/certs/ca ENV ServerCertFile=/certs/server/myserver-cert.pem ENV ServerKeyFile=/certs/server/myserver-key.pem ADD test-certs /certs ADD backend /app CMD dyalog /JSONServer/Distribution/JSONServer.dws Runs ZodiacService backend as a secure service

66

67

68 Demo Time

69 Demo Time On each machine, we have already:

70 Demo Time On each machine, we have already: Installed git

71 Demo Time On each machine, we have already: Installed git yum install git

72 Demo Time On each machine, we have already: Installed git yum install git Installed docker

73 Demo Time On each machine, we have already: Installed git yum install git Installed docker yum install -y docker usermod -a -G docker mary

74 Demo Time On each machine, we have already: Installed git yum install git Installed docker Installed the Docker Util Scripts yum install -y docker usermod -a -G docker mary

75 Demo Time On each machine, we have already: Installed git yum install git Installed docker Installed the Docker Util Scripts yum install -y docker usermod -a -G docker mary (and put them on the PATH)

76 Demo Time On each machine, we have already: Installed git yum install git Installed docker Installed the Docker Util Scripts yum install -y docker usermod -a -G docker mary git clone https://github.com/mkromberg/docker-utils (and put them on the PATH)

77 Demo Time Build the "secure" service Push it to DockerHub Login to an AWS EC2 instance Start the service Test it from a Web Browser

78

79

80

81

82

83 Dyalog Public Scripts

84 Dyalog Public Scripts git clone https://github.com/mkromberg/dyalog-docker

85 Dyalog Public Scripts git clone https://github.com/mkromberg/dyalog-docker In parallel folders bashscripts and winscripts:

86 Dyalog Public Scripts git clone https://github.com/mkromberg/dyalog-docker In parallel folders bashscripts and winscripts: dyalog-c folder [rideport] Starts container dyalog/dyalog:17.1-dbg folder is always mounted as /app in the container rideport is the optional port that RIDE can be attached to

87 Dyalog Public Scripts git clone https://github.com/mkromberg/dyalog-docker In parallel folders bashscripts and winscripts: dyalog-c folder [rideport] Starts container dyalog/dyalog:17.1-dbg jsonserver-c folder [[httpport] [rideport]] Starts container dyalog/jsonserver-dbg folder is always mounted as /app in the container httpport is the application port that is always exposed by json- & mi-servers rideport is the optional port that RIDE can be attached to

88 Dyalog Public Scripts git clone https://github.com/mkromberg/dyalog-docker In parallel folders bashscripts and winscripts: dyalog-c folder [rideport] Starts container dyalog/dyalog:17.1-dbg jsonserver-c folder [[httpport] [rideport]] Starts container dyalog/jsonserver-dbg miserver-c folder [[httpport] [rideport]] Starts container dyalog/miserver-dbg folder is always mounted as /app in the container httpport is the application port that is always exposed by json- & mi-servers rideport is the optional port that RIDE can be attached to

89 Dyalog Public Scripts git clone https://github.com/mkromberg/dyalog-docker In parallel folders bashscripts and winscripts: dyalog-c folder [rideport] Starts container dyalog/dyalog:17.1-dbg jsonserver-c folder [[httpport] [rideport]] Starts container dyalog/jsonserver-dbg miserver-c folder [[httpport] [rideport]] Starts container dyalog/miserver-dbg jupyter-c [folder[/notebook]] [httpport] Starts container dyalog/jupyter (Jupyter notebook server) folder is always mounted as /app in the container httpport is the application port that is always exposed by json- & mi-servers rideport is the optional port that RIDE can be attached to

90 Demo Time

91 Demo Time Let's build

92 Demo Time Let's build an APL Based

93 Demo Time Let's build an APL Based Web Site

94 Demo Time Let's build an APL Based Web Site From Zero

95 Demo Time Let's build an APL Based Web Site From Zero In ABOUT 2 minutes...

96 docker-compose (multiple services)

97 docker-compose (multiple services)

98 scaling (replicated services)

99 scaling (replicated services)

100 scaling (replicated services)

101 Ideas for Future Containers Runtime and Development/Debug versions of all containers. dyalog/tamstat Runs HTML/JS version of Tamstat "anywhere" Looks for data in mapped folder /data dyalog/isolate Runs an isolate server If /workspace.dws is found, each isolate will be intialised from it /isolate.config will set security rules and other options

102 Conclusion It is already easy to deploy APL applications to the cloud (and debug them there) Many more public containers and tools to come. o Also "Premium Images" that you can run on cloud systems and pay for Dyalog APL "indirectly" throuhg the service provider. Follow the Dyalog Webinar series for more news and examples