Scientific workflows are frequently being used to model complex phenomena, to analyze instrumental data, to tie together information from distributed sources, and to pursue other scientific endeavors. Out of necessity, these complex applications need to execute in distributed environments and make use of a number of heterogeneous resources. In this paper we describe some of these applications and illustrate techniques that improve their performance and reliably in distributed environments, such as grids and clouds. Although clouds were first introduced in the business arena, they have a potential to be provide ondemand resources for scientific computations. Key words: scientific workflows, grid computing, cloud computing, applications, heterogeneous distributed environments