Transcript

Cloud Computingwith APL

Morten Kromberg, CXO, Dyalog

Cloud Computing Dockerwith APL

Morten Kromberg, CXO, Dyalog

2

Cloud Computing with APL

Cloud Computing: Definitions

3

Cloud Computing with APL

Cloud Computing: DefinitionsCloud Computing = "Using someone elses computer"

4

Cloud Computing with APL

Cloud Computing: DefinitionsCloud 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 with APL

Cloud Computing: DefinitionsCloud 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 with APL

Cloud Computing: DefinitionsCloud 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 with APL

Cloud Computing: DefinitionsCloud 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

Cloud Computing with APL

Using IAAS

9

Cloud Computing with APL

Using IAAS• Pick an IAAS provider

10

Cloud Computing with APL

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

11

Cloud Computing with APL

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

• You save the hassle ofo Buying [a] big enough computer[s]o Maintaining / replacing the hardwareo Paying for a fast internet connection

12

Cloud Computing with APL

Using IAAS – the Hard Part

13

Cloud Computing with APL

Using IAAS – the Hard Part• Picking a provider:

o Amazon, Microsoft, Google, DigitalOcean, Oracle, RackSpace, Netrepid, IBM/Redhat, GreenCloud, Alibaba, Openstack, ...

o Can't help you with that

14

Cloud Computing with APL

Using IAAS – the Hard Part• Picking a provider:

o Amazon, Microsoft, Google, DigitalOcean, Oracle, RackSpace, Netrepid, IBM/Redhat, GreenCloud, Alibaba, Openstack, ...

o Can't help you with that

• Installing the software that you want to run on the Virtual Machine:o APL Interpreter, Web Server or Service Framework,

Database System, other tools ...o This is where Containers are "Pure Magic"

15

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

16

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

17

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

18

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

Run during Build

19

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

Run during Build

Environment Vars

20

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

Run during Build

Environment Vars

Run at Startup

21

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

Run during Build

Environment Vars

Run at Startup

This "Dockerfile" completely describes a machine which will run "myapp".

22

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myapp

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSS

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

Run during Build

Environment Vars

Run at Startup

This "Dockerfile" completely describes a machine which will run "myapp".

Your Code

23

Cloud Computing with APL

FROM ubuntu:18.04

ADD ./dyalog-unicode_17.0.34604_amd64.deb /

RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSRUN git clone https://github.com/myco/myapp /myapp

ENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myapp

CMD dyalog /JSS/JSONServer.dws

Containers Solve the Distribution Problem

Base Image

Files to Add

Run during Build

Environment Vars

Run at Startup

Uses GitHub to load the source code for "myapp".

Your Code

24

Cloud Computing with APL

25

Cloud Computing with APL

FROM ubuntu:18.04ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myappRUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

Building and Running the Docker ImageDockerfile

26

Cloud Computing with APL

FROM ubuntu:18.04ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myappRUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

Building and Running the Docker Image

Build

Dockerfile

docker build –t myco/myapp-test .

27

Cloud Computing with APL

FROM ubuntu:18.04ADD ./dyalog-unicode_17.0.34604_amd64.deb /ADD /myapp/v7/test /myappRUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

Building and Running the Docker Image

Build

Run

Dockerfile

docker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker build –t myco/myapp-test .

28

Cloud Computing with APL

docker run syntax & common switches

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

docker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

29

Cloud Computing with APL

Distributing the Image: DockerHubBuild

Rundocker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker build –t myco/myapp-test .

30

Cloud Computing with APL

Distributing the Image: DockerHubBuild

Rundocker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker build –t myco/myapp-test .

We can "push" the image to DockerHub:

31

Cloud Computing with APL

Distributing the Image: DockerHubBuild

Rundocker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker build –t myco/myapp-test .

Pushdocker login

docker push myco/myapp-test

We can "push" the image to DockerHub:

32

Cloud Computing with APL

Distributing the Image: DockerHubBuild

Rundocker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker build –t myco/myapp-test .

Pushdocker login

docker push myco/myapp-test

We can "push" the image to DockerHub:

Now, the following will work on ANY computer that has Docker installed(assuming myco/myapp-test is a PUBLIC container)

33

Cloud Computing with APL

Distributing the Image: DockerHubBuild

Rundocker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker build –t myco/myapp-test .

Pushdocker login

docker push myco/myapp-test

We can "push" the image to DockerHub:

Now, the following will work on ANY computer that has Docker installed(assuming myco/myapp-test is a PUBLIC container)

34

Cloud Computing with APL

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 toolsto ANY machine – including IAAS VMs.

35

Cloud Computing with APL

36

Cloud Computing with APL

37

Cloud Computing with APL

Containers are STUNNING technology!

38

Cloud Computing with APL

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

39

Cloud Computing with APL

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

Cloud Computing with APL

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

Cloud Computing with APL

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 secondso (the Operating System does not need to "Boot Up")

42

Cloud Computing with APL

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 secondso (the Operating System does not need to "Boot Up")

• Containers consume MUCH less resources than VMs

43

Cloud Computing with APL

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-and-why-is-it-so-darn-popular/

44

Cloud Computing with APL

Containers & Docker

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

45

Cloud Computing with APL

Containers & Docker

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

46

Cloud Computing with APL

Linux

47

Cloud Computing with APL

Linux• Container technology works best with

Linux, due to the size of the kernel

48

Cloud Computing with APL

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

Cloud Computing with APL

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

Cloud Computing with APL

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 Linuxdocker build –t myco/myapp-test .

docker run -p 8081:8080 -v /somefolder:/data –e DEBUG=1 myco/myapp-test

docker push myco/myapp-test

51

Cloud Computing with APL

52

Cloud Computing with APL

53

Cloud Computing with APL

54

Cloud Computing with APL

55

Cloud Computing with APL

Public Dyalog ContainersThese 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 Interpreterdyalog/jsonserver:dbg• dyalog:17.1-dbg + JSONServerdyalog/miserver:dbg• dyalog:17.1-dbg + MiServerdyalog/jupyter• dyalog:17.1-dbg + Python, Anaconda & Jupyter Notebook

56

Cloud Computing with APL

FROM ubuntu:18.04ADD ./dyalog-unicode_17.0.34604_amd64.deb /RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSADD /myapp/v7/test /myappENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

Benefits of Public ContainersWithout Public Containers

57

Cloud Computing with APL

FROM ubuntu:18.04ADD ./dyalog-unicode_17.0.34604_amd64.deb /RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSADD /myapp/v7/test /myappENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

Benefits of Public ContainersWithout Public Containers

FROM dyalog/jsonserver:dbgADD /myapp/v7/test /myappENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

With Public Containers

58

Cloud Computing with APL

FROM ubuntu:18.04ADD ./dyalog-unicode_17.0.34604_amd64.deb /RUN dpkg -i /dyalog*.debRUN git clone https://github.com/dyalog/JSONServer /JSSADD /myapp/v7/test /myappENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

Benefits of Public ContainersWithout Public Containers

FROM dyalog/jsonserver:dbgADD /myapp/v7/test /myappENV RIDE_INIT="SERVE:*:4502"ENV CodeLocation=/myappCMD dyalog /JSS/JSONServer.dws

With Public Containers

docker run –p 8080:8080 –p 4502:4502 –v /myapp/v7/test:/myapp –e RIDE_INIT="SERVE:*:4502" –e CodeLocation=/myapp dyalog/jsonserver

Or even without a Dockerfile

59

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServer

Runs ZodiacService backend as a secure service

60

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServerAPL+JSONServer included

Runs ZodiacService backend as a secure service

61

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServerAPL+JSONServer included

Basic JSONServerSettings

Runs ZodiacService backend as a secure service

62

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServerAPL+JSONServer included

Basic JSONServerSettings

Secure Options

Runs ZodiacService backend as a secure service

63

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServerAPL+JSONServer included

Basic JSONServerSettings

Secure Options

Runs ZodiacService backend as a secure service

Add Certificates

64

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServerAPL+JSONServer included

Basic JSONServerSettings

Secure Options

Application Code

Runs ZodiacService backend as a secure service

Add Certificates

65

Cloud Computing with APL

FROM dyalog/jsonserver:dbg

ENV MAXWS=256MENV CodeLocation=/appENV Port=8080

ENV Secure=1ENV 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

Demo: Secure JSONServerAPL+JSONServer included

Basic JSONServerSettings

Secure Options

Application Code

Start JSONServer

Runs ZodiacService backend as a secure service

Add Certificates

66

Cloud Computing with APL

67

Cloud Computing with APL

68

Cloud Computing with APL

Demo Time

69

Cloud Computing with APL

Demo TimeOn each machine, we have already:

70

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git

71

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git yum install git

72

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git• Installed docker

yum install git

73

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git• Installed docker yum install -y docker

usermod -a -G docker mary

yum install git

74

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git• Installed docker• Installed the

Docker Util Scripts

yum install -y dockerusermod -a -G docker mary

yum install git

75

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git• Installed docker• Installed the

Docker Util Scripts

• (and put them on the PATH)

yum install -y dockerusermod -a -G docker mary

yum install git

76

Cloud Computing with APL

Demo TimeOn each machine, we have already:• Installed git• Installed docker• Installed the

Docker Util Scripts

• (and put them on the PATH)

yum install -y dockerusermod -a -G docker mary

yum install git

git clone https://github.com/mkromberg/docker-utils

77

Cloud Computing with APL

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

Cloud Computing with APL

79

Cloud Computing with APL

80

Cloud Computing with APL

81

Cloud Computing with APL

82

Cloud Computing with APL

83

Cloud Computing with APL

Dyalog Public Scripts

84

Cloud Computing with APL

Dyalog Public Scriptsgit clone https://github.com/mkromberg/dyalog-docker

85

Cloud Computing with APL

Dyalog Public Scriptsgit clone https://github.com/mkromberg/dyalog-docker

In parallel folders bashscripts and winscripts:

86

Cloud Computing with APL

Dyalog Public Scriptsgit 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

Cloud Computing with APL

Dyalog Public Scriptsgit 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 containerhttpport is the application port that is always exposed by json- & mi-serversrideport is the optional port that RIDE can be attached to

88

Cloud Computing with APL

Dyalog Public Scriptsgit 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 containerhttpport is the application port that is always exposed by json- & mi-serversrideport is the optional port that RIDE can be attached to

89

Cloud Computing with APL

Dyalog Public Scriptsgit 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 containerhttpport is the application port that is always exposed by json- & mi-serversrideport is the optional port that RIDE can be attached to

90

Cloud Computing with APL

Demo Time

91

Cloud Computing with APL

Demo Time

Let's build

92

Cloud Computing with APL

Demo Time

Let's build an APL Based

93

Cloud Computing with APL

Demo Time

Let's build an APL BasedWeb Site

94

Cloud Computing with APL

Demo Time

Let's build an APL BasedWeb Site From Zero

95

Cloud Computing with APL

Demo Time

Let's build an APL BasedWeb Site From Zero

In ABOUT 2 minutes...

96

Cloud Computing with APL

docker-compose (multiple services)

97

Cloud Computing with APL

docker-compose (multiple services)

98

Cloud Computing with APL

scaling (replicated services)

99

Cloud Computing with APL

scaling (replicated services)

100

Cloud Computing with APL

scaling (replicated services)

101

Cloud Computing with APL

Ideas for Future ContainersRuntime 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

Cloud Computing with APL

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


Recommended