Force horizontal edges between nodes in TikZ

In this code:

\usetikzlibrary{positioning, fit, calc, shapes, arrows}
\renewcommand{\figurename}{Figure}
\begin{figure}[!htb]
\centering
\begin{tikzpicture}
[title/.style={font=\fontsize{18}{18}\color{black!45}},
server/.style={rectangle, draw, fill=blue!23, rounded corners, minimum height=9em},
client/.style={rectangle, draw, fill=green!23, rounded corners, minimum height=2em},
dot/.style={circle, fill=black, minimum size=2pt, inner sep=0pt, outer sep=2pt},
% Place nodes
\node [server, outer sep=8pt, align=center] (s1) at (5,8.3) {S1};
\node [server, outer sep=8pt, align=center] (s2) at (7.65,8.3) {S2};
\node [server, outer sep=8pt] (s3) at (10.3,8.3) {S3};
\node [draw=black!50, fit={(s1) (s2) (s3)}] (back) {};
\node [client] (c1) at (0,9.5) {C1};
\node [client] (c2) at ($(c1) + (270:1.15)$) {C2};
\node [client] (c3) at ($(c2) + (270:1.15)$) {C3};
\node [dot] (c4) at ($(c3) + (270:1)$) {};
\node [dot] (c5) at ($(c4) + (270:0.5)$) {};
\node [dot] (c6) at ($(c5) + (270:0.5)$) {};
\node [draw=black!50, fit={($(c1.north)+(0, 8pt)$) (c2) (c3) (c4) (c5) ($(c6.south)+(0, -7pt)$)}, inner sep=5.75pt] (front) {};
% Place edges
\end{tikzpicture}
\caption{Schema}
\end{figure}


I want to have a separate horizontal edge to connect each of the C1, C2, and C3 with the rectangle node which contains S1, S2 and S3, i.e. the back node in the code above.

If I use \path, the edges are not horizontal, due to the coordinates of C1, C2 and C3 nodes do not line up with the back node.

How should I do it?

-

You can use the orthogonal coordinate system syntax for this. If you say

\draw (c1) -- (c1-|back.west)


you will get a line from node c1 to the point with the y coordinate of c1 and the x coordinate of back.west:

\documentclass[border=5mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{positioning, fit, calc, shapes, arrows}

\begin{document}
\begin{tikzpicture}
[title/.style={font=\fontsize{18}{18}\color{black!45}},
server/.style={rectangle, draw, fill=blue!23, rounded corners, minimum height=9em},
client/.style={rectangle, draw, fill=green!23, rounded corners, minimum height=2em},
dot/.style={circle, fill=black, minimum size=2pt, inner sep=0pt, outer sep=2pt},
% Place nodes
\node [server, outer sep=8pt, align=center] (s1) at (5,8.3) {S1};
\node [server, outer sep=8pt, align=center] (s2) at (7.65,8.3) {S2};
\node [server, outer sep=8pt] (s3) at (10.3,8.3) {S3};
\node [draw=black!50, fit={(s1) (s2) (s3)}] (back) {};
\node [client] (c1) at (0,9.5) {C1};
\node [client] (c2) at ($(c1) + (270:1.15)$) {C2};
\node [client] (c3) at ($(c2) + (270:1.15)$) {C3};
\node [dot] (c4) at ($(c3) + (270:1)$) {};
\node [dot] (c5) at ($(c4) + (270:0.5)$) {};
\node [dot] (c6) at ($(c5) + (270:0.5)$) {};
\node [draw=red!50, fit={($(c1.north)+(0, 8pt)$) (c2) (c3) (c4) (c5) ($(c6.south)+(0, -7pt)$)}, inner sep=5.75pt] (front) {};
\draw (c1) -- (c1-|back.west)
(c2) -- (c2-|back.west)
(c3) -- (c3-|back.west);
% Place edges
\end{tikzpicture}
\end{document}

-