With use relative coordinates, library quotes
for edge labels (quotes), defined picture's elements as its options and colored nodes:
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning,
quotes,
shapes}
\begin{document}
\begin{tikzpicture}[
node distance = 22mm and 33mm,
every edge/.style = {draw, {Stealth[scale=0.8]}-{Stealth[scale=0.8]}, semithick,
shorten >=2pt, shorten <=2pt},
every edge quotes/.style = {auto, font=\footnotesize, inner xsep=-1em,
text width=9em, align=center},
C/.style = {circle, draw, fill=yellow!30, minimum size=5ex},
DB/.style = {cylinder, shape aspect=0.5,
shape border rotate=90,
draw, fill=orange!30,
minimum width=16mm, minimum height=8mm, inner sep=1mm, align=center,
},
mpnv/.style = {rectangle split, rectangle split parts=#1,
draw, fill=cyan!30, inner sep=1pt,
text width=7em, align=flush center},
N/.style = {draw, fill=olive!30, minimum width=7em, minimum height=5ex},
]
\node (A) [N] {Some Program} ;
\node (D) [C, right=of A] {D};
\node (C) [mpnv=3, right=of D,
anchor=one west] {Some Program A
\nodepart{two} Some Program B
\nodepart{three} Some Program C
};
\node (DB) [DB, below=of D] {C};
%
\draw (A) edge ["latex is awesome"] (D)
(D) edge ["latex is awesome"] (C.one west)
(A) edge ["{latex is awesome,
latex is awesome}" '] (DB)
(DB) edge ["{latex is awesome,
latex is awesome}" '] (C.three west)
;
\end{tikzpicture}
\end{document}

Addendum
Regarding your comment, you can use suggestion of @unknow (see her/his comment below) or consider my comment below and accordingly slightly rewrite above propose MWE:
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning,
quotes,
shapes}
\begin{document}
\begin{tikzpicture}[
node distance = 22mm and 23mm, % <---
base/.style = {font=\footnotesize, draw, fill=#1, % <---
text width=7em, align=flush center, % <---
minimum height=8mm}, % <---
every edge/.style = {draw, {Stealth[scale=0.8]}-{Stealth[scale=0.8]}, semithick,
shorten >=2pt, shorten <=2pt},
every edge quotes/.style = {auto, font=\scriptsize, inner xsep=0pt,
text width=6em, align=flush center}, % <---
C/.style = {circle, base=yellow!30, text width =8mm=5ex},
DB/.style = {cylinder, shape aspect=0.3, % <---
shape border rotate=90,
base=orange!30, % <---
text width=16mm, inner sep=1mm, align=center,
},
mpnv/.style = {rectangle split, rectangle split parts=#1,
base=cyan!30}, % <---
N/.style = {base=olive!30},
]
\node (A) [N] {Some Program} ;
\node (D) [C, right=of A] {D};
\node (C) [mpnv=3, right=of D,
anchor=one west] {Some Program A
\nodepart{two} Some Program B
\nodepart{three} Some Program C
};
\node (DB) [DB, below=of D] {C};
%
\draw (A) edge ["latex is\\ awesome"] (D)
(D) edge ["latex is\\ awesome"] (C.one west)
(A) edge ["{latex is awesome,
latex is awesome}" '] (DB)
(DB) edge ["{latex is awesome,
latex is awesome}" '] (C.three west)
;
\end{tikzpicture}
\end{document}
All changes in comparison to the first MWE are marked in code by % <---
. Beside changes font sizes, are changed distanced between nodes and at horizontal edges and edge quotes broken into two lines. Consequently image can be narrower -- by reducing node distance as I did in above MWE.
In the case, that you like to have all text in script size, in above MWE you only need to change in base
style define font size: font=\scriptsize
or consider @unknown suggestion and from style remove all font size definitions.

Addendum (2):
In cases, that you like to have edge quotes above and below edge, you ca split it in two parts and for one of the use swap
or its shortcut '
:
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning,
quotes,
shapes}
\begin{document}
\begin{tikzpicture}[
node distance = 22mm and 23mm, % <---
base/.style = {font=\footnotesize, draw, fill=#1, % <---
text width=7em, align=flush center, % <---
minimum height=8mm}, % <---
every edge/.style = {draw, {Stealth[scale=0.8]}-{Stealth[scale=0.8]}, semithick,
shorten >=2pt, shorten <=2pt},
every edge quotes/.style = {auto, font=\scriptsize, inner xsep=0pt,
TW=#1, align=flush center},
C/.style = {circle, base=yellow!30, text width =8mm=5ex},
DB/.style = {cylinder, shape aspect=0.3,
shape border rotate=90,
base=orange!30,
text width=16mm, inner sep=1mm, align=center,
},
mpnv/.style = {rectangle split, rectangle split parts=#1,
base=cyan!30},
N/.style = {base=olive!30},
TW/.style = {text width=#1},
TW/.default = {6em}
]
\node (A) [N] {Some Program} ;
\node (D) [C, right=of A] {D};
\node (C) [mpnv=3, right=of D,
anchor=one west] {Some Program A
\nodepart{two} Some Program B
\nodepart{three} Some Program C
};
\node (DB) [DB, below=of D] {C};
%
\draw (A) edge ["latex is\\ awesome",
"{here is more\\ text;
but do such long labels make any sense?}" ' ] (D) % <---
(D) edge ["latex is\\ awesome"] (C.one west)
(A) edge ["{latex is awesome,
latex is awesome}" '] (DB)
(DB) edge ["{latex is awesome,
latex is awesome}" '
] (C.three west)
;
\end{tikzpicture}
\end{document}

or in this special case when number of label text is evem you can define anchor for it:
\draw (A) edge ["{latex is\\ awesome,
here is more\\ text;
but do such long labels make any sense?}"
anchor=center ] (D)
...

\begin{tikzpicture}
. That's why your arrows don't have tips. Then you may need to use[above left]
for example, instead of[above]
to place your labels. You also can place your labels not in the middle of your arrow but anywhere you want like this:\draw[arrow] (A) -- (B) node[above left, pos=0.75] {your text}
. Those adjustements should suffice.\draw[arrow] (A) -- (B) node[text width=2cm,above left, pos=0.75] {your text}
pos
make the alignment in the x-axis? seems like it shift the caption in y-axis