\documentclass[border=0.2cm]{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

\begin{tikzpicture}

    \node[rectangle,draw,text height=3cm,minimum width=4cm] (server) at (0,0) {API};
    \node[rectangle,draw,] (rust_server) at (0, 0) {\small Rust};

    \node[rectangle,draw,text height=1.5cm,minimum width=2cm] (client-python) at (-6,2) {Client 1};
    \node[rectangle,draw,] (python_client) at (-6, 2) {\small Python};

    \node[rectangle,draw,text height=1.5cm,minimum width=2cm] (client-rust) at (-6,-2) {Client 2};
    \node[rectangle,draw,] (rust_client) at (-6, -2) {\small Rust};

    \draw[-latex,thick] (client-python) -- (server) node[midway,fill=white]{SOAP};
    \draw[-latex,thick] (client-rust) -- (server) node[midway,fill=white]{REST};
\end{tikzpicture}

\end{document}
