Accolade to take objects together in TikZ

A solution more simple ( for me ) and with the possibility of scaling. I add the solution with Andrew's idea The code is very clear but we can not make a scale and perhaps there is a better solution to create more space vertically. The brace is more pretty with the matrix's delimiter.

\documentclass[]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{fit,calc,positioning,decorations.pathreplacing,matrix}
\begin{document}   
\begin{tikzpicture}[decoration={brace}][scale=2] 
   \node [draw] (A) {A}; 
   \node [draw,yshift=1cm] (B) at (A) {B};
   \node [draw,yshift=1cm] (C) at (B) {C};
   \node [fit=(A) (B) (C)] (fit) {};              
  \draw [decorate,line width=1pt] (fit.south west) -- (fit.north west);
\end{tikzpicture} 
 \hspace*{1cm}
\begin{tikzpicture}[scale=2] 
\matrix [matrix of nodes,left delimiter=\{,nodes={draw}] {
A  \\[12pt] B \\[12pt] C \\
}; 
\end{tikzpicture}

\end{document} 

enter image description here


You can use the fit TikZ library to create a rectangular node which encompasses the nodes, e.g. your three rectangles. Then you can use the node anchors to draw your { either using a scaled { character (\resizebox{!}{<height of fit>}{\{}) or using drawing commands. Two bezier curves should do it.

\documentclass[png]{standalone}

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

\begin{document}
\begin{tikzpicture}
   \node [draw] (A) {A};
   \node [draw,below of=A] (B) {B};
   \node [draw,below of=B] (C) {C};
   \node [fit=(A) (B) (C)] (fit) {};
   \path let \p1=(fit.north west), \p2 = (fit.south east) in
       node [left of=fit] {%
       \pgfmathsetmacro\heightoffit{.8*(\y1-\y2)}%
       \resizebox{!}{\heightoffit pt}{\{}%
     };%
\end{tikzpicture}
\end{document}

Result:

Result