%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Description. % % System architecture for the iffAiiDA Jupyter server. % URL https://iffAiiDA.fz-juelich.de % Figure by Ingo Meier, Scientific IT Systems, Forschungszentrum Jülich. % URL https://pgi-jcns.fz-juelich.de % This is a copy of original, up-to-date version on iffTeX. % URL (invite-only) https://ifftex.fz-juelich.de/project/668559f4fd7fbc4aa3315771 % Last update 2024-07-08. % % Changelog. % - 2024-07-03 IM created figure on iffTeX. % - 2024-07-08 JW added logos % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \usepackage[utf8]{inputenc} % \usepackage[T1]{fontenc} % \usepackage{lmodern} % \usepackage[ngerman]{babel} % \usepackage[usenames, dvipsnames, svgnames, table]{xcolor} % \usepackage{fontawesome5} % \usepackage[pdftex]{graphicx} % \usepackage{tikz} \usetikzlibrary{calc} \tikzstyle{largebox}=[rectangle,draw,fill=helmholtzpaleblue,minimum size=1.4em] \tikzstyle{mediumbox}=[rectangle,draw,fill=helmholtzlightblue,minimum size=1.4em] \tikzstyle{smallbox}=[rectangle,draw,fill=helmholtzpaleblue,minimum size=1.4em] \begin{tikzpicture}[x=3cm, y=3cm, yscale=-1] \sffamily \node[draw] (jupyterhub) at (2.35,0) [largebox] {\parbox{11cm}{\centering{}\logoJupyter{}JupyterHub server\\\vspace{7cm}}}; \node[draw] (user) at (0,0) [smallbox] {\parbox{1.0cm}{\centering{\color{helmholtzdarkblue}{\faUser}}\\User}}; \node[draw] (authorization) at (1, 0) [smallbox] {\parbox{2.5cm}{\centering{\color{helmholtzdarkblue}{\faLock}}\\Authorization}}; \node[draw] (login service) at (0, 1) [smallbox] {Central Login}; \node[draw] (docker container) at (3, 0) [mediumbox] {\parbox{6cm}{\centering\logoDocker{}\\Docker container\\\vspace{5cm}}}; \node[draw] (jupyter client) at (3, 0) [smallbox] {\logoJupyter{} JupyterLab client}; \node[draw] (aiida kernel) at (3, 0.5) [smallbox] {\logoAiida{} Python kernel}; \node[draw] (file server) at (2.5, 1.75) [smallbox] {\parbox{2.5cm}{\centering{\color{helmholtzdarkblue}{\faDatabase}}\\File server}}; \node[draw] (compute cluster) at (3.5, 1.75) [smallbox] {\parbox{2.75cm}{\centering{\color{helmholtzdarkblue}{\faServer}}\\Compute cluster}}; \node[draw] (local storage) at (4.75, 0) [smallbox] {\parbox{2.5cm}{\centering{\color{helmholtzdarkblue}{\faFile}}\\Local storage}}; \node[draw] (browser) at (2.5, -1.75) [smallbox] {\parbox{2.5cm}{\centering{\color{fzjorange}{\faFirefox}}\\Web browser}}; \node[draw] (ssh) at (3.5, -1.75) [smallbox] {\parbox{2.5cm}{\centering{\color{helmholtzdarkblue}{\faTerminal}}\\SSH tunnel}}; \begin{scope}[>=latex] \draw[->] (user) -- (authorization); \draw[->] (authorization) -- (authorization |- login service) -- node[above] {OAuth2} (login service); \draw[->] (authorization) -- (docker container); \draw[<->] (jupyter client) -- (aiida kernel); \draw[<->] (docker container) -- (file server); \draw[<->] (docker container) -- (compute cluster); \draw[<->] (docker container) -- (local storage); \draw[->] (browser) -- (docker container); \draw[->] (ssh) -- (docker container); \end{scope} \end{tikzpicture}