Skip to content
Snippets Groups Projects
iffaiida-architecture-with-logos.tikz 3.14 KiB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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}